From 8c62ea88dafa281dbab22401896cc1e7be82f251 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Mon, 2 Jan 2023 14:23:59 +0300 Subject: [PATCH 001/422] Bug: Custom app warning flash (#1440) * check that the app list was loaded before checking if the app exists there check that the app list was loaded before checking if the app exists there * i love boolean variables for request status * Adjust remoteSafeAppsLoading Co-authored-by: katspaugh --- .../SafeAppsInfoModal/useSafeAppsInfoModal.ts | 5 ++++- src/hooks/safe-apps/useSafeApps.ts | 19 +++++++++++-------- src/pages/apps.tsx | 3 ++- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/components/safe-apps/SafeAppsInfoModal/useSafeAppsInfoModal.ts b/src/components/safe-apps/SafeAppsInfoModal/useSafeAppsInfoModal.ts index 7f1a3c6b1f..00cf836f7a 100644 --- a/src/components/safe-apps/SafeAppsInfoModal/useSafeAppsInfoModal.ts +++ b/src/components/safe-apps/SafeAppsInfoModal/useSafeAppsInfoModal.ts @@ -15,6 +15,7 @@ type useSafeAppsInfoModal = { permissions: AllowedFeatures[] addPermissions: (origin: string, permissions: BrowserPermission[]) => void getPermissions: (origin: string) => BrowserPermission[] + remoteSafeAppsLoading: boolean } type ModalInfoProps = { @@ -30,6 +31,7 @@ const useSafeAppsInfoModal = ({ permissions, addPermissions, getPermissions, + remoteSafeAppsLoading, }: useSafeAppsInfoModal): { isModalVisible: boolean isFirstTimeAccessingApp: boolean @@ -90,7 +92,7 @@ const useSafeAppsInfoModal = ({ const shouldShowLegalDisclaimer = !modalInfo[chainId] || modalInfo[chainId].consentsAccepted === false const shouldShowAllowedFeatures = !isPermissionsReviewCompleted const shouldShowUnknownAppWarning = - !isSafeAppInDefaultList && isFirstTimeAccessingApp && !isDisclaimerReadingCompleted + !remoteSafeAppsLoading && !isSafeAppInDefaultList && isFirstTimeAccessingApp && !isDisclaimerReadingCompleted return isComponentReady && (shouldShowLegalDisclaimer || shouldShowUnknownAppWarning || shouldShowAllowedFeatures) }, [ @@ -99,6 +101,7 @@ const useSafeAppsInfoModal = ({ isFirstTimeAccessingApp, isSafeAppInDefaultList, isDisclaimerReadingCompleted, + remoteSafeAppsLoading, modalInfo, ]) diff --git a/src/hooks/safe-apps/useSafeApps.ts b/src/hooks/safe-apps/useSafeApps.ts index 2d205b6bf2..68a784c238 100644 --- a/src/hooks/safe-apps/useSafeApps.ts +++ b/src/hooks/safe-apps/useSafeApps.ts @@ -23,19 +23,19 @@ type ReturnType = { } const useSafeApps = (): ReturnType => { - const [remoteSafeApps = [], remoteSafeAppsError, remoteSafeAppsLoading] = useRemoteSafeApps() + const [remoteSafeApps, remoteSafeAppsError, remoteSafeAppsLoading] = useRemoteSafeApps() const { customSafeApps, loading: customSafeAppsLoading, updateCustomSafeApps } = useCustomSafeApps() const { pinnedSafeAppIds, updatePinnedSafeApps } = usePinnedSafeApps() const { removePermissions: removeSafePermissions } = useSafePermissions() const { removePermissions: removeBrowserPermissions } = useBrowserPermissions() const allSafeApps = useMemo( - () => remoteSafeApps.concat(customSafeApps).sort((a, b) => a.name.localeCompare(b.name)), + () => (remoteSafeApps || []).concat(customSafeApps).sort((a, b) => a.name.localeCompare(b.name)), [remoteSafeApps, customSafeApps], ) const pinnedSafeApps = useMemo( - () => remoteSafeApps.filter((app) => pinnedSafeAppIds.has(app.id)), + () => remoteSafeApps?.filter((app) => pinnedSafeAppIds.has(app.id)) || [], [remoteSafeApps, pinnedSafeAppIds], ) @@ -78,17 +78,20 @@ const useSafeApps = (): ReturnType => { return { allSafeApps, - remoteSafeApps, + rankedSafeApps, + + remoteSafeApps: remoteSafeApps || [], + remoteSafeAppsLoading: remoteSafeAppsLoading || !(remoteSafeApps || remoteSafeAppsError), + remoteSafeAppsError, + pinnedSafeApps, pinnedSafeAppIds, + togglePin, + customSafeApps, - rankedSafeApps, - remoteSafeAppsLoading, customSafeAppsLoading, - remoteSafeAppsError, addCustomApp, removeCustomApp, - togglePin, } } diff --git a/src/pages/apps.tsx b/src/pages/apps.tsx index 2a4a22334b..545a6195da 100644 --- a/src/pages/apps.tsx +++ b/src/pages/apps.tsx @@ -19,7 +19,7 @@ const Apps: NextPage = () => { const router = useRouter() const chainId = useChainId() const [appUrl, routerReady] = useSafeAppUrl() - const { remoteSafeApps } = useSafeApps() + const { remoteSafeApps, remoteSafeAppsLoading } = useSafeApps() const { isLoading, safeApp } = useSafeAppFromManifest(appUrl || '', chainId) const { addPermissions, getPermissions, getAllowedFeaturesList } = useBrowserPermissions() const origin = getOrigin(appUrl) @@ -37,6 +37,7 @@ const Apps: NextPage = () => { permissions: safeApp?.safeAppsPermissions || [], addPermissions, getPermissions, + remoteSafeAppsLoading, }) if (!routerReady || isLoading) { From 203434e751831d8b9cfb9a769bc4721e98e05d63 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Mon, 2 Jan 2023 14:22:20 +0100 Subject: [PATCH 002/422] Chore: update all packages to latest (#1470) * Chore: update all packages to latest * Fix tx_history test --- cypress/e2e/smoke/tx_history.cy.js | 15 + package.json | 36 +- src/components/tx/NonceForm/index.tsx | 13 +- src/services/contracts/safeContracts.ts | 2 +- src/tests/pages/apps.test.tsx | 8 +- yarn.lock | 1222 +++++++++++------------ 6 files changed, 606 insertions(+), 690 deletions(-) diff --git a/cypress/e2e/smoke/tx_history.cy.js b/cypress/e2e/smoke/tx_history.cy.js index d018b21b75..88a9fdafe3 100644 --- a/cypress/e2e/smoke/tx_history.cy.js +++ b/cypress/e2e/smoke/tx_history.cy.js @@ -96,6 +96,21 @@ describe('Transaction history', () => { // Status cy.contains('span', 'Success').should('exist') }) + // Receive 120 DAI + .prev() + .within(() => { + // Type + cy.contains('div', 'Received').should('exist') + + // Info + cy.contains('span', '120,497.61 DAI').should('exist') + + // Time + cy.contains('span', '5:01 PM').should('exist') + + // Status + cy.contains('span', 'Success').should('exist') + }) // Send 0.11 WETH .prev() .within(() => { diff --git a/package.json b/package.json index a1a9ad6cd1..dd39e3faaa 100644 --- a/package.json +++ b/package.json @@ -43,17 +43,17 @@ "@gnosis.pm/safe-deployments": "^1.17.0", "@gnosis.pm/safe-modules-deployments": "^1.0.0", "@mui/icons-material": "^5.8.4", - "@mui/material": "^5.9.3", - "@mui/x-date-pickers": "^5.0.0-beta.6", + "@mui/material": "^5.11.2", + "@mui/x-date-pickers": "^5.0.12", "@reduxjs/toolkit": "^1.8.2", "@safe-global/safe-core-sdk": "^3.2.2", "@safe-global/safe-ethers-lib": "^1.8.0", - "@safe-global/safe-gateway-typescript-sdk": "^3.5.4", - "@sentry/react": "^7.8.1", - "@sentry/tracing": "^7.8.1", - "@truffle/hdwallet-provider": "^2.0.14", + "@safe-global/safe-gateway-typescript-sdk": "^3.5.5", + "@sentry/react": "^7.28.1", + "@sentry/tracing": "^7.28.1", + "@truffle/hdwallet-provider": "^2.1.4", "@web3-onboard/coinbase": "^2.1.3", - "@web3-onboard/core": "2.8.5", + "@web3-onboard/core": "2.12.1", "@web3-onboard/injected-wallets": "^2.3.0", "@web3-onboard/keystone": "^2.3.2", "@web3-onboard/ledger": "^2.3.2", @@ -76,38 +76,38 @@ "react-dom": "18.2.0", "react-dropzone": "^14.2.3", "react-gtm-module": "^2.0.11", - "react-hook-form": "^7.36.1", + "react-hook-form": "^7.41.3", "react-papaparse": "^4.0.2", "react-qr-reader": "2.2.1", "react-redux": "^8.0.2", "semver": "^7.3.7" }, "devDependencies": { - "@next/bundle-analyzer": "^12.2.4", + "@next/bundle-analyzer": "^13.1.1", "@safe-global/safe-core-sdk-types": "^1.8.0", - "@sentry/types": "^7.8.1", + "@sentry/types": "^7.28.1", "@svgr/webpack": "^6.3.1", "@testing-library/cypress": "^8.0.7", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.3.0", "@testing-library/user-event": "^14.4.2", - "@typechain/ethers-v5": "^8.0.0", + "@typechain/ethers-v5": "^10.2.0", "@types/jest": "^28.1.6", "@types/js-cookie": "^3.0.2", "@types/lodash": "^4.14.182", - "@types/node": "18.6.4", + "@types/node": "18.11.18", "@types/qrcode": "^1.4.2", - "@types/react": "18.0.15", - "@types/react-dom": "18.0.6", + "@types/react": "18.0.26", + "@types/react-dom": "18.0.10", "@types/react-gtm-module": "^2.0.1", "@types/react-qr-reader": "^2.1.4", "@types/semver": "^7.3.10", - "@typescript-eslint/eslint-plugin": "^5.38.1", + "@typescript-eslint/eslint-plugin": "^5.47.1", "cross-env": "^7.0.3", "cypress": "^11.1.0", "cypress-file-upload": "^5.0.8", - "eslint": "8.21.0", - "eslint-config-next": "12.2.4", + "eslint": "8.31.0", + "eslint-config-next": "13.1.1", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-unused-imports": "^2.0.0", @@ -119,7 +119,7 @@ "ts-prune": "^0.10.3", "typechain": "^8.0.0", "typescript": "4.9.4", - "typescript-plugin-css-modules": "^3.4.0", + "typescript-plugin-css-modules": "^4.1.1", "whatwg-fetch": "3.6.2" } } diff --git a/src/components/tx/NonceForm/index.tsx b/src/components/tx/NonceForm/index.tsx index d789821383..72140f9e3d 100644 --- a/src/components/tx/NonceForm/index.tsx +++ b/src/components/tx/NonceForm/index.tsx @@ -20,8 +20,13 @@ type NonceFormProps = { readonly?: boolean } -// eslint-disable-next-line react/display-name -const NonceFormOption = memo(({ nonce, ...props }: { nonce: number } & MenuItemProps): ReactElement => { +const NonceFormOption = memo(function NonceFormOption({ + nonce, + menuItemProps, +}: { + nonce: number + menuItemProps: MenuItemProps +}): ReactElement { const addressBook = useAddressBook() const transactions = useQueuedTxByNonce(nonce) @@ -31,7 +36,7 @@ const NonceFormOption = memo(({ nonce, ...props }: { nonce: number } & MenuItemP }, [addressBook, transactions]) return ( - + {nonce} ({label} transaction) ) @@ -105,7 +110,7 @@ const NonceForm = ({ name, nonce, recommendedNonce, readonly }: NonceFormProps): options={options} disabled={nonce == null || readonly} getOptionLabel={(option) => option.toString()} - renderOption={(props, option) => } + renderOption={(props, option: number) => } disableClearable componentsProps={{ paper: { diff --git a/src/services/contracts/safeContracts.ts b/src/services/contracts/safeContracts.ts index 84d178bae5..3c7eaa3467 100644 --- a/src/services/contracts/safeContracts.ts +++ b/src/services/contracts/safeContracts.ts @@ -15,7 +15,7 @@ import semverSatisfies from 'semver/functions/satisfies' import type { SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' import { getMasterCopies, type ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' import type { GetContractProps, SafeVersion } from '@safe-global/safe-core-sdk-types' -import { type Sign_message_lib } from '@/types/contracts/Sign_message_lib' +import { type Sign_message_lib } from '@/types/contracts/v1.3.0/Sign_message_lib' import { assertValidSafeVersion, createEthersAdapter } from '@/hooks/coreSDK/safeCoreSDK' import { sameAddress } from '@/utils/addresses' import type CompatibilityFallbackHandlerEthersContract from '@safe-global/safe-ethers-lib/dist/src/contracts/CompatibilityFallbackHandler/CompatibilityFallbackHandlerEthersContract' diff --git a/src/tests/pages/apps.test.tsx b/src/tests/pages/apps.test.tsx index 2aa6075fe2..c75317f27e 100644 --- a/src/tests/pages/apps.test.tsx +++ b/src/tests/pages/apps.test.tsx @@ -226,8 +226,12 @@ describe('AppsPage', () => { const riskCheckbox = await screen.findByText( /This app is not part of Safe and I agree to use it at my own risk\./, ) - fireEvent.click(riskCheckbox) - fireEvent.click(riskCheckbox) + await act(() => { + fireEvent.click(riskCheckbox) + }) + await act(() => { + fireEvent.click(riskCheckbox) + }) fireEvent.click(screen.getByText('Add')) await waitFor(() => expect(screen.getByText('Accepting the disclaimer is mandatory')).toBeInTheDocument()) diff --git a/yarn.lock b/yarn.lock index 3bc2f2654f..79fdda0bfb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1003,6 +1003,13 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd" + integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.18.10", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" @@ -1260,10 +1267,10 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== -"@eslint/eslintrc@^1.3.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.0.tgz#8ec64e0df3e7a1971ee1ff5158da87389f167a63" - integrity sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A== +"@eslint/eslintrc@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1275,6 +1282,14 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@ethereumjs/common@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.5.0.tgz#ec61551b31bef7a69d1dc634d8932468866a4268" + integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.1" + "@ethereumjs/common@2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.2.tgz#eb006c9329c75c80f634f340dc1719a5258244df" @@ -1299,6 +1314,14 @@ "@ethereumjs/common" "^2.0.0" ethereumjs-util "^7.0.7" +"@ethereumjs/tx@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.2.tgz#348d4624bf248aaab6c44fec2ae67265efe3db00" + integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== + dependencies: + "@ethereumjs/common" "^2.5.0" + ethereumjs-util "^7.1.2" + "@ethereumjs/tx@3.5.1": version "3.5.1" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.1.tgz#8d941b83a602b4a89949c879615f7ea9a90e6671" @@ -1307,7 +1330,7 @@ "@ethereumjs/common" "^2.6.3" ethereumjs-util "^7.1.4" -"@ethereumjs/tx@3.5.2", "@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.3.2", "@ethereumjs/tx@^3.4.0": +"@ethereumjs/tx@3.5.2", "@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.4.0": version "3.5.2" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== @@ -2100,19 +2123,19 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.10.4": - version "0.10.7" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc" - integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w== +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" -"@humanwhocodes/gitignore-to-minimatch@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" - integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== +"@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@^1.2.1": version "1.2.1" @@ -2602,24 +2625,24 @@ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== -"@mui/base@5.0.0-alpha.111": - version "5.0.0-alpha.111" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.111.tgz#fffec7f6393fc45c0d3a200ee5820820a4b92403" - integrity sha512-2wfIPpl97S4dPzD0QOM3UIzQ/EuXCYQvHmXxTpfKxev/cfkzOe7Ik/McoYUBbtM1bSOqH3W276R/L2LF9cyXqQ== +"@mui/base@5.0.0-alpha.112": + version "5.0.0-alpha.112" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.112.tgz#80e815430c5df0316e0a549d34628d54215e05f1" + integrity sha512-KPwb1iYPXsV/P8uu0SNQrj7v7YU6wdN4Eccc2lZQyRDW+f6PJYjHBuFUTYKc408B98Jvs1XbC/z5MN45a2DWrQ== dependencies: - "@babel/runtime" "^7.20.6" + "@babel/runtime" "^7.20.7" "@emotion/is-prop-valid" "^1.2.0" "@mui/types" "^7.2.3" - "@mui/utils" "^5.11.1" + "@mui/utils" "^5.11.2" "@popperjs/core" "^2.11.6" clsx "^1.2.1" prop-types "^15.8.1" react-is "^18.2.0" -"@mui/core-downloads-tracker@^5.11.1": - version "5.11.1" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.1.tgz#5130682392203916bd9d947bac35dfd38f533654" - integrity sha512-QVqVNlZ2K+LqUDE5kFgYd0r4KekR/dv2cNYbAutQWbfOA8VPVUVrDz0ELrEcoe8TjM/CwnsmGvaDh/YSNl/ALA== +"@mui/core-downloads-tracker@^5.11.2": + version "5.11.2" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.2.tgz#0ff8066bee7e9654fd978cb671e9c12c9d2a65b7" + integrity sha512-ztLQELdSSuJFXezng8g5eCzy8mogtzMM8JcfG3HIGgUJ2RlAiBXI2Qe0adKmrJlF4FMat8vTaTeoiRNBZH4t1Q== "@mui/icons-material@^5.8.4": version "5.11.0" @@ -2628,17 +2651,17 @@ dependencies: "@babel/runtime" "^7.20.6" -"@mui/material@^5.9.3": - version "5.11.1" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.11.1.tgz#89ebc860abae0f146d9ac69b85baa691f09cfb47" - integrity sha512-yaZiXvcrl2vgUK+VO24780BWRgwdAMmAyuMVZnRTts1Yu0tWd6PjIYq2ZtaOlpj6/LbaSS+Q2kSfxYnDQ20CEQ== +"@mui/material@^5.11.2": + version "5.11.2" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.11.2.tgz#8f0ce18d2cf9da9276f6f19b40a681225098ea09" + integrity sha512-PeraRDsghnDLzejorfe9ps1syxlB8UrGs+UKwg9GGlndv5Tghm+9nwuibrP2TCDC14mlryF+u2WlAOYaPPMwGA== dependencies: - "@babel/runtime" "^7.20.6" - "@mui/base" "5.0.0-alpha.111" - "@mui/core-downloads-tracker" "^5.11.1" - "@mui/system" "^5.11.1" + "@babel/runtime" "^7.20.7" + "@mui/base" "5.0.0-alpha.112" + "@mui/core-downloads-tracker" "^5.11.2" + "@mui/system" "^5.11.2" "@mui/types" "^7.2.3" - "@mui/utils" "^5.11.1" + "@mui/utils" "^5.11.2" "@types/react-transition-group" "^4.4.5" clsx "^1.2.1" csstype "^3.1.1" @@ -2646,13 +2669,13 @@ react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.11.1": - version "5.11.1" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.11.1.tgz#8e6a6c33c6f04cadba17b6f3320e22bd64413655" - integrity sha512-nnHg7kA5RwFRhy0wiDYe59sLCVGORpPypL1JcEdhv0+N0Zbmc2E/y4z2zqMRZ62MAEscpro7cQbvv244ThA84A== +"@mui/private-theming@^5.11.2": + version "5.11.2" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.11.2.tgz#93eafb317070888a988efa8d6a9ec1f69183a606" + integrity sha512-qZwMaqRFPwlYmqwVKblKBGKtIjJRAj3nsvX93pOmatsXyorW7N/0IPE/swPgz1VwChXhHO75DwBEx8tB+aRMNg== dependencies: - "@babel/runtime" "^7.20.6" - "@mui/utils" "^5.11.1" + "@babel/runtime" "^7.20.7" + "@mui/utils" "^5.11.2" prop-types "^15.8.1" "@mui/styled-engine@^5.11.0": @@ -2665,16 +2688,16 @@ csstype "^3.1.1" prop-types "^15.8.1" -"@mui/system@^5.11.1": - version "5.11.1" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.11.1.tgz#86c85472f5c2d4eaf739acd426c7b1ccce38eda2" - integrity sha512-BEA2S0hay8n8CcZftkeAVsi0nsb5ZjdnZRCahv5lX7QJYwDjO4ucJ6lnvxHe2v/9Te1LLjTO7ojxu/qM6CE5Cg== +"@mui/system@^5.11.2": + version "5.11.2" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.11.2.tgz#a5a5865dda0f5f360eed8cdc1ab399a493dbd361" + integrity sha512-PPkYhrcP2MkhscX6SauIl0wPgra0w1LGPtll+hIKc2Z2JbGRSrUCFif93kxejB7I1cAoCay9jWW4mnNhsOqF/g== dependencies: - "@babel/runtime" "^7.20.6" - "@mui/private-theming" "^5.11.1" + "@babel/runtime" "^7.20.7" + "@mui/private-theming" "^5.11.2" "@mui/styled-engine" "^5.11.0" "@mui/types" "^7.2.3" - "@mui/utils" "^5.11.1" + "@mui/utils" "^5.11.2" clsx "^1.2.1" csstype "^3.1.1" prop-types "^15.8.1" @@ -2684,7 +2707,7 @@ resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.3.tgz#06faae1c0e2f3a31c86af6f28b3a4a42143670b9" integrity sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw== -"@mui/utils@^5.10.3", "@mui/utils@^5.11.1": +"@mui/utils@^5.10.3": version "5.11.1" resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.11.1.tgz#8d12b3c2245efd9a1c0595658dcb4c86f6625206" integrity sha512-lMAPgIJoil8V9ZxsMbEflMsvZmWcHbRVMc4JDY9jPO9V4welpF43h/O267b1RqlcRnC5MEbVQV605GYkTZY29Q== @@ -2695,10 +2718,21 @@ prop-types "^15.8.1" react-is "^18.2.0" -"@mui/x-date-pickers@^5.0.0-beta.6": - version "5.0.11" - resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-5.0.11.tgz#f8b79222971b01bc94a6af30e97f30be7153efb0" - integrity sha512-YxUpyepbtzo6mu42KaaoJrfBHvlLobEdkP5EcEQ+OSaY5xxCEHqfSgi1NioXcxzZUi6ome5jcrjAopUHzFGk0g== +"@mui/utils@^5.11.2": + version "5.11.2" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.11.2.tgz#29764311acb99425159b159b1cb382153ad9be1f" + integrity sha512-AyizuHHlGdAtH5hOOXBW3kriuIwUIKUIgg0P7LzMvzf6jPhoQbENYqY6zJqfoZ7fAWMNNYT8mgN5EftNGzwE2w== + dependencies: + "@babel/runtime" "^7.20.7" + "@types/prop-types" "^15.7.5" + "@types/react-is" "^16.7.1 || ^17.0.0" + prop-types "^15.8.1" + react-is "^18.2.0" + +"@mui/x-date-pickers@^5.0.12": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-5.0.12.tgz#f80e742aa8045b214f40a72e782fd871fb18ec89" + integrity sha512-HpiPE4nkqlklilKAxUQpf3tecJEDaTIBRRVTGk9GMgpkwli7Cv+5OGn6aSxG5ckMZdiQ/NT1L9kOcm0Bi9Gqjw== dependencies: "@babel/runtime" "^7.18.9" "@date-io/core" "^2.15.0" @@ -2713,22 +2747,22 @@ react-transition-group "^4.4.5" rifm "^0.12.1" -"@next/bundle-analyzer@^12.2.4": - version "12.3.4" - resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-12.3.4.tgz#37c587525288a3dea64213c991590532246e8bb8" - integrity sha512-eKjgRICzbLTmod0UnJcArFVs5uEAiuZwB6NCf84m+btW7jdylUVoOYf1wi5tA14xk5L9Lho7Prm6/XJ8gxYzfQ== +"@next/bundle-analyzer@^13.1.1": + version "13.1.1" + resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-13.1.1.tgz#f36108dcb953ea518253df5eb9e175642f78b04a" + integrity sha512-zxC/MOj7gDjvQffHT4QZqcPe1Ny+e6o3wethCZn3liSElMA+kxgEopbziTUXdrvJcd/porq+3Itc8P+gxE/xog== dependencies: - webpack-bundle-analyzer "4.3.0" + webpack-bundle-analyzer "4.7.0" "@next/env@12.2.0": version "12.2.0" resolved "https://registry.yarnpkg.com/@next/env/-/env-12.2.0.tgz#17ce2d9f5532b677829840037e06f208b7eed66b" integrity sha512-/FCkDpL/8SodJEXvx/DYNlOD5ijTtkozf4PPulYPtkPOJaMPpBSOkzmsta4fnrnbdH6eZjbwbiXFdr6gSQCV4w== -"@next/eslint-plugin-next@12.2.4": - version "12.2.4" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.2.4.tgz#b7496cf11050577cfa815612c541195c1b4871eb" - integrity sha512-ChDkUIkJeYWKRx+FdF+EhUgvKtK1wF+Xew4Os7ef3iAjMch5GGBiezw2zGXTa/C0E6potz4j11EpX89mngffug== +"@next/eslint-plugin-next@13.1.1": + version "13.1.1" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.1.tgz#cc5e419cc85587f73f2ac0046a91df01dc6fef8b" + integrity sha512-SBrOFS8PC3nQ5aeZmawJkjKkWjwK9RoxvBSv/86nZp0ubdoVQoko8r8htALd9ufp16NhacCdqhu9bzZLDWtALQ== dependencies: glob "7.1.7" @@ -2848,7 +2882,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@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== @@ -2856,6 +2890,18 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@pkgr/utils@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" + integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw== + dependencies: + cross-spawn "^7.0.3" + is-glob "^4.0.3" + open "^8.4.0" + picocolors "^1.0.0" + tiny-glob "^0.2.9" + tslib "^2.4.0" + "@polka/url@^1.0.0-next.20": version "1.0.0-next.21" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" @@ -2959,10 +3005,10 @@ "@safe-global/safe-core-sdk-utils" "^1.6.0" ethers "5.7.2" -"@safe-global/safe-gateway-typescript-sdk@^3.5.4": - version "3.5.4" - resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.5.4.tgz#daa13d830eb8b6c8f60bf4026be42a9965abcc35" - integrity sha512-olTC+2lxb45MyG5Rxgs0UO1gd3MKYW8ahTvY88nV64KMEbjQQUl0lbQ8VlVT7BZsWuVgG7HshrPDsKU/wPVTeA== +"@safe-global/safe-gateway-typescript-sdk@^3.5.5": + version "3.5.5" + resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.5.5.tgz#a41b4c8b4cbe7ecb9fdf454008f970de9fa02576" + integrity sha512-Nde7GivRTKYSn4h5H2ixW7MxcSFUhg9Bd5BgdJDjFlOYnCU85vZ5Pwu+tRpWYzXTAhVVvCG8fvMXoT9uQcG4ZA== dependencies: cross-fetch "^3.1.5" @@ -2988,67 +3034,67 @@ "@noble/hashes" "~1.1.1" "@scure/base" "~1.1.0" -"@sentry/browser@7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.28.0.tgz#652971bc33e609426fd5690a7e68314287e85403" - integrity sha512-UMsFwNOEpdX3pHdpJ9klSK2FbwG0n9FlrPSb2KMuuW/OA62Yq2YStShoyJ35ix3cwHnhF6/F+lXxJ/WfMvX6DQ== +"@sentry/browser@7.28.1": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.28.1.tgz#c8086e26079809aa401a05d9b4a6e4df63a9c965" + integrity sha512-N8j93IcrWKWorfJ5D+RSKVAvcR4S5tIcZ/HvFPMrQWnfVa/jtJcrKThdjZYteA0wjmPiy8/D3KA8nB91yulBPA== dependencies: - "@sentry/core" "7.28.0" - "@sentry/replay" "7.28.0" - "@sentry/types" "7.28.0" - "@sentry/utils" "7.28.0" + "@sentry/core" "7.28.1" + "@sentry/replay" "7.28.1" + "@sentry/types" "7.28.1" + "@sentry/utils" "7.28.1" tslib "^1.9.3" -"@sentry/core@7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.28.0.tgz#4e2bda6febecf9ac2109e569c2ef8be7e983469a" - integrity sha512-9wY6mRzoyZ8TEW7X1jpciD0DSqqYPaggiJyykxaVbjwmJc7GjJpY94XHmSeKNUV4w7ddMhdsznhBmGNN6CFMfQ== +"@sentry/core@7.28.1": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.28.1.tgz#c712ce17469b18b01606108817be24a99ed2116e" + integrity sha512-7wvnuvn/mrAfcugWoCG/3pqDIrUgH5t+HisMJMGw0h9Tc33KqrmqMDCQVvjlrr2pWrw/vuUCFdm8CbUHJ832oQ== dependencies: - "@sentry/types" "7.28.0" - "@sentry/utils" "7.28.0" + "@sentry/types" "7.28.1" + "@sentry/utils" "7.28.1" tslib "^1.9.3" -"@sentry/react@^7.8.1": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.28.0.tgz#135b2ad73442fcf5774184362501c01d64df25ba" - integrity sha512-c+X5HSiNJyyPDR1xa/+W0F/rJqVDWv2noWg9uJnFr5KdbZy0utbUQNBlKm4HaEKi4TARNX6Esf1yDpWpWDnRVQ== +"@sentry/react@^7.28.1": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.28.1.tgz#79531b98176765a788cdf7f8f09b8ba713a95cfb" + integrity sha512-sFKK7uDREh84GyJcXDNuiQQ5VhLx7XJTOAdELxLv4HEI6BxbBRz0zNRQiKamTRkz9NmL7bZtld5TfbpOo9kijg== dependencies: - "@sentry/browser" "7.28.0" - "@sentry/types" "7.28.0" - "@sentry/utils" "7.28.0" + "@sentry/browser" "7.28.1" + "@sentry/types" "7.28.1" + "@sentry/utils" "7.28.1" hoist-non-react-statics "^3.3.2" tslib "^1.9.3" -"@sentry/replay@7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.28.0.tgz#b82a60bc96a0db80fd7f95275180b3aaae64a885" - integrity sha512-AuAREwMqZQhrGTxd69zY3uRPnfcrIRxL4wMefopzkjPx9Zboxkp2rsUJlrC0JLmReNML0ec7ZybZx94LunbE7Q== +"@sentry/replay@7.28.1": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.28.1.tgz#fbdd377923e082423b95e3f128cb9af9451aca70" + integrity sha512-Os0PzMjKlwtHwzTU0kfVzGzsi4Vaj3g2arCl4Qnr3b6kYTb9WOFZo/n/v56ss7Z+nZG3K8W5PisoD4MRsRJRig== dependencies: - "@sentry/core" "7.28.0" - "@sentry/types" "7.28.0" - "@sentry/utils" "7.28.0" + "@sentry/core" "7.28.1" + "@sentry/types" "7.28.1" + "@sentry/utils" "7.28.1" -"@sentry/tracing@^7.8.1": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.28.0.tgz#341fc98e86639336cd260e932b8130496b3fa4d6" - integrity sha512-TH+f9AGqinX0B4EkP26ecF0ERm1KleTFHYEfpPEdbn92HFJua+Wvcm3uy6cwQ3njswi29sQHJv9bWQqp//mA+g== +"@sentry/tracing@^7.28.1": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.28.1.tgz#d276e4d17a79190a88112696c73de12c209607a1" + integrity sha512-uWspnuz+7FyW8ES5lRaVA7O/YJSzMlSkvBFtgzaoKmdaueokU/sRLwlCsrdgwavG1wpm79df7R1iiSeqhaXDlw== dependencies: - "@sentry/core" "7.28.0" - "@sentry/types" "7.28.0" - "@sentry/utils" "7.28.0" + "@sentry/core" "7.28.1" + "@sentry/types" "7.28.1" + "@sentry/utils" "7.28.1" tslib "^1.9.3" -"@sentry/types@7.28.0", "@sentry/types@^7.8.1": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.28.0.tgz#26318a71b4e121e7df7b54c48ddba6c7cfcfa70b" - integrity sha512-F6tZldpvC3Lt8FPgJ6wRTcE7P9txIpHSBjyYz9wqFlVJx4IhBmrn6vZU1LvANUaK1jZZF2PW5tFRrVEnydfpqg== +"@sentry/types@7.28.1", "@sentry/types@^7.28.1": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.28.1.tgz#9018b4c152b475de9bedd267237393d3c9b1253d" + integrity sha512-DvSplMVrVEmOzR2M161V5+B8Up3vR71xMqJOpWTzE9TqtFJRGPtqT/5OBsNJJw1+/j2ssMcnKwbEo9Q2EGeS6g== -"@sentry/utils@7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.28.0.tgz#6860e7c5689819568295f725117a54e06bb2214a" - integrity sha512-ag1RotlFSJnwUi/MYWY5iQ8aLcwrCBlD/qlGB43PvB3XGDl3e7E/pUy2bdblP7Q2uCKLVUBcudyaSgtvNqu9wA== +"@sentry/utils@7.28.1": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.28.1.tgz#0a7b6aa4b09e91e4d1aded2a8c8dbaf818cee96e" + integrity sha512-75/jzLUO9HH09iC9TslNimGbxOP3jgn89P+q7uR+rp2fJfRExHVeKJZQdK0Ij4/SmE7TJ3Uh2r154N0INZEx1g== dependencies: - "@sentry/types" "7.28.0" + "@sentry/types" "7.28.1" tslib "^1.9.3" "@sideway/address@^4.1.3": @@ -3073,12 +3119,7 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@sindresorhus/is@^4.0.0": +"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": version "4.6.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== @@ -3249,13 +3290,6 @@ dependencies: tslib "^2.4.0" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - "@szmarczak/http-timer@^4.0.5": version "4.0.6" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" @@ -3263,6 +3297,13 @@ dependencies: defer-to-connect "^2.0.0" +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + "@testing-library/cypress@^8.0.7": version "8.0.7" resolved "https://registry.yarnpkg.com/@testing-library/cypress/-/cypress-8.0.7.tgz#18315eba3cf8852808afadf122e4858406384015" @@ -3319,10 +3360,10 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== -"@truffle/hdwallet-provider@^2.0.14": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-2.1.3.tgz#a28194d99105b154022385dd1da5de3367adf795" - integrity sha512-XOA5AJou4FrHiJEgcewq+86iWJm2t6HrLV5ixGMjULdV+iJzBMtBqOdNM+l8DPSOEIZ3XExOlpZ9PDGs/mD6Uw== +"@truffle/hdwallet-provider@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-2.1.4.tgz#e1a2d5ffc569c930a969aac928af27e256f55d80" + integrity sha512-oVpiQSu3JtaDuVHKLZ9Is3hxoCVFwlMjflCJyqTBXMhLmPMPpij4paxaUvXTpeUzGZJJGcBl2DVFhnmPshGrJQ== dependencies: "@ethereumjs/common" "^2.4.0" "@ethereumjs/tx" "^3.3.0" @@ -3334,7 +3375,7 @@ ethereum-cryptography "1.1.2" ethereum-protocol "^1.0.1" ethereumjs-util "^7.1.5" - web3 "1.7.4" + web3 "1.8.1" web3-provider-engine "16.0.3" "@truffle/hdwallet@^0.1.1": @@ -3381,10 +3422,10 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== -"@typechain/ethers-v5@^8.0.0": - version "8.0.5" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-8.0.5.tgz#d469420e9a73deb7fa076cde9edb45d713dd1b8c" - integrity sha512-ntpj4cS3v4WlDu+hSKSyj9A3o1tKtWC30RX1gobeYymZColeJiUemC1Kgfa0MWGmInm5CKxoHVhEvYVgPOZn1A== +"@typechain/ethers-v5@^10.2.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz#68f5963efb5214cb2d881477228e4b5b315473e1" + integrity sha512-ikaq0N/w9fABM+G01OFmU3U3dNnyRwEahkdvi9mqy1a3XwKiPZaF/lu54OcNaEWnpvEYyhhS0N7buCtLQqC92w== dependencies: lodash "^4.17.15" ts-essentials "^7.0.1" @@ -3441,7 +3482,7 @@ dependencies: "@types/node" "*" -"@types/cacheable-request@^6.0.1": +"@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": version "6.0.3" resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== @@ -3579,10 +3620,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.17.tgz#5c009e1d9c38f4a2a9d45c0b0c493fe6cdb4bcb5" integrity sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng== -"@types/node@18.6.4": - version "18.6.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.4.tgz#fd26723a8a3f8f46729812a7f9b4fc2d1608ed39" - integrity sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg== +"@types/node@18.11.18": + version "18.11.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" + integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== "@types/node@^12.12.54", "@types/node@^12.12.6": version "12.20.55" @@ -3635,10 +3676,10 @@ dependencies: "@types/node" "*" -"@types/react-dom@18.0.6": - version "18.0.6" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.6.tgz#36652900024842b74607a17786b6662dd1e103a1" - integrity sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA== +"@types/react-dom@18.0.10": + version "18.0.10" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.10.tgz#3b66dec56aa0f16a6cc26da9e9ca96c35c0b4352" + integrity sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg== dependencies: "@types/react" "*" @@ -3675,7 +3716,7 @@ dependencies: "@types/react" "*" -"@types/react@*": +"@types/react@*", "@types/react@18.0.26": version "18.0.26" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.26.tgz#8ad59fc01fef8eaf5c74f4ea392621749f0b7917" integrity sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug== @@ -3684,15 +3725,6 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/react@18.0.15": - version "18.0.15" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.15.tgz#d355644c26832dc27f3e6cbf0c4f4603fc4ab7fe" - integrity sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -3807,14 +3839,14 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.38.1": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.0.tgz#dadb79df3b0499699b155839fd6792f16897d910" - integrity sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ== +"@typescript-eslint/eslint-plugin@^5.47.1": + version "5.47.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.1.tgz#50cc5085578a7fa22cd46a0806c2e5eae858af02" + integrity sha512-r4RZ2Jl9kcQN7K/dcOT+J7NAimbiis4sSM9spvWimsBvDegMhKLA5vri2jG19PmIPbDjPeWzfUPQ2hjEzA4Nmg== dependencies: - "@typescript-eslint/scope-manager" "5.47.0" - "@typescript-eslint/type-utils" "5.47.0" - "@typescript-eslint/utils" "5.47.0" + "@typescript-eslint/scope-manager" "5.47.1" + "@typescript-eslint/type-utils" "5.47.1" + "@typescript-eslint/utils" "5.47.1" debug "^4.3.4" ignore "^5.2.0" natural-compare-lite "^1.4.0" @@ -3822,72 +3854,72 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.21.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.47.0.tgz#62e83de93499bf4b500528f74bf2e0554e3a6c8d" - integrity sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw== +"@typescript-eslint/parser@^5.42.0": + version "5.47.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.47.1.tgz#c4bf16f8c3c7608ce4bf8ff804b677fc899f173f" + integrity sha512-9Vb+KIv29r6GPu4EboWOnQM7T+UjpjXvjCPhNORlgm40a9Ia9bvaPJswvtae1gip2QEeVeGh6YquqAzEgoRAlw== dependencies: - "@typescript-eslint/scope-manager" "5.47.0" - "@typescript-eslint/types" "5.47.0" - "@typescript-eslint/typescript-estree" "5.47.0" + "@typescript-eslint/scope-manager" "5.47.1" + "@typescript-eslint/types" "5.47.1" + "@typescript-eslint/typescript-estree" "5.47.1" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.47.0.tgz#f58144a6b0ff58b996f92172c488813aee9b09df" - integrity sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw== +"@typescript-eslint/scope-manager@5.47.1": + version "5.47.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.47.1.tgz#0d302b3c2f20ab24e4787bf3f5a0d8c449b823bd" + integrity sha512-9hsFDsgUwrdOoW1D97Ewog7DYSHaq4WKuNs0LHF9RiCmqB0Z+XRR4Pf7u7u9z/8CciHuJ6yxNws1XznI3ddjEw== dependencies: - "@typescript-eslint/types" "5.47.0" - "@typescript-eslint/visitor-keys" "5.47.0" + "@typescript-eslint/types" "5.47.1" + "@typescript-eslint/visitor-keys" "5.47.1" -"@typescript-eslint/type-utils@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.47.0.tgz#2b440979c574e317d3473225ae781f292c99e55d" - integrity sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg== +"@typescript-eslint/type-utils@5.47.1": + version "5.47.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.47.1.tgz#aee13314f840ab336c1adb49a300856fd16d04ce" + integrity sha512-/UKOeo8ee80A7/GJA427oIrBi/Gd4osk/3auBUg4Rn9EahFpevVV1mUK8hjyQD5lHPqX397x6CwOk5WGh1E/1w== dependencies: - "@typescript-eslint/typescript-estree" "5.47.0" - "@typescript-eslint/utils" "5.47.0" + "@typescript-eslint/typescript-estree" "5.47.1" + "@typescript-eslint/utils" "5.47.1" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.47.0.tgz#67490def406eaa023dbbd8da42ee0d0c9b5229d3" - integrity sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg== +"@typescript-eslint/types@5.47.1": + version "5.47.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.47.1.tgz#459f07428aec5a8c4113706293c2ae876741ac8e" + integrity sha512-CmALY9YWXEpwuu6377ybJBZdtSAnzXLSQcxLSqSQSbC7VfpMu/HLVdrnVJj7ycI138EHqocW02LPJErE35cE9A== -"@typescript-eslint/typescript-estree@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.0.tgz#ed971a11c5c928646d6ba7fc9dfdd6e997649aca" - integrity sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q== +"@typescript-eslint/typescript-estree@5.47.1": + version "5.47.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.1.tgz#b9d8441308aca53df7f69b2c67a887b82c9ed418" + integrity sha512-4+ZhFSuISAvRi2xUszEj0xXbNTHceV9GbH9S8oAD2a/F9SW57aJNQVOCxG8GPfSWH/X4eOPdMEU2jYVuWKEpWA== dependencies: - "@typescript-eslint/types" "5.47.0" - "@typescript-eslint/visitor-keys" "5.47.0" + "@typescript-eslint/types" "5.47.1" + "@typescript-eslint/visitor-keys" "5.47.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.47.0.tgz#b5005f7d2696769a1fdc1e00897005a25b3a0ec7" - integrity sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw== +"@typescript-eslint/utils@5.47.1": + version "5.47.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.47.1.tgz#595f25ac06e9ee28c339fd43c709402820b13d7b" + integrity sha512-l90SdwqfmkuIVaREZ2ykEfCezepCLxzWMo5gVfcJsJCaT4jHT+QjgSkYhs5BMQmWqE9k3AtIfk4g211z/sTMVw== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.47.0" - "@typescript-eslint/types" "5.47.0" - "@typescript-eslint/typescript-estree" "5.47.0" + "@typescript-eslint/scope-manager" "5.47.1" + "@typescript-eslint/types" "5.47.1" + "@typescript-eslint/typescript-estree" "5.47.1" eslint-scope "^5.1.1" eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.47.0": - version "5.47.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.0.tgz#4aca4efbdf6209c154df1f7599852d571b80bb45" - integrity sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg== +"@typescript-eslint/visitor-keys@5.47.1": + version "5.47.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.1.tgz#d35c2da544dbb685db9c5b5b85adac0a1d74d1f2" + integrity sha512-rF3pmut2JCCjh6BLRhNKdYjULMb1brvoaiWDlHfLNVgmnZ0sBVJrs3SyaKE1XoDDnJuAx/hDQryHYmPUuNq0ig== dependencies: - "@typescript-eslint/types" "5.47.0" + "@typescript-eslint/types" "5.47.1" eslint-visitor-keys "^3.3.0" "@walletconnect/browser-utils@^1.8.0": @@ -4069,14 +4101,14 @@ ethers "5.5.4" joi "^17.6.1" -"@web3-onboard/core@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.8.5.tgz#1a53da35620f8519af0eacda017385c67a69c5b9" - integrity sha512-MxyhA4E8uivWUxh+HHIuFEeQ8YhAesvD08cCD1NExrTgLogyLovvnuFuE7zwMJaEF7s2U33s1O31kBoy1We95A== +"@web3-onboard/core@2.12.1": + version "2.12.1" + resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.12.1.tgz#e6dae9eaad1e572cfafe4ceaedd803a9a40224f0" + integrity sha512-WqDXHJ28hkJACJYv85iqYfiRm1Nn5BDrvKYwWm6LOQI9J2YuaVYr9c99WRLQzP7x42E/QKVTopn/gATdKY0VQQ== dependencies: "@web3-onboard/common" "^2.2.3" bignumber.js "^9.0.0" - bnc-sdk "^4.4.1" + bnc-sdk "^4.6.2" bowser "^2.11.0" ethers "5.5.3" eventemitter3 "^4.0.7" @@ -4084,7 +4116,7 @@ lodash.merge "^4.6.2" lodash.partition "^4.6.0" nanoid "^4.0.0" - rxjs "^7.5.2" + rxjs "^7.5.5" svelte "^3.49.0" svelte-i18n "^3.3.13" @@ -4555,11 +4587,6 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - attr-accept@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" @@ -4822,7 +4849,7 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -bnc-sdk@^4.4.1: +bnc-sdk@^4.6.2: version "4.6.3" resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.6.3.tgz#c852f091a5e84bb77864543b0775b35ebdbb1724" integrity sha512-rva+LyJuAm+U6xwZYqlsDxKaMy3EpHBqkOL93UDih7iwXDYnUr87n27pnGCw3B8xRBeRhCBC/VZMuzRFeea/Hw== @@ -5082,18 +5109,10 @@ cacheable-lookup@^5.0.3: resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== -cacheable-request@^6.0.0: +cacheable-lookup@^6.0.4: version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== cacheable-request@^7.0.2: version "7.0.2" @@ -5415,7 +5434,7 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^6.2.0, commander@^6.2.1: +commander@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== @@ -5486,11 +5505,6 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -cookiejar@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" - integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== - copy-anything@^2.0.1: version "2.0.6" resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" @@ -5666,13 +5680,6 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-parse@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" - integrity sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA== - dependencies: - css "^2.0.0" - css-select@^4.1.3: version "4.3.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" @@ -5710,16 +5717,6 @@ css.escape@^1.5.1: resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -5867,13 +5864,6 @@ debug@^3.1.0, debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -5944,12 +5934,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -defer-to-connect@^2.0.0: +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== @@ -5961,6 +5946,11 @@ deferred-leveldown@~1.2.1: dependencies: abstract-leveldown "~2.6.0" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" @@ -6130,10 +6120,10 @@ domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== drbg.js@^1.0.1: version "1.0.1" @@ -6151,11 +6141,6 @@ duplexer2@^0.1.2: dependencies: readable-stream "^2.0.2" -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -6253,6 +6238,14 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enhanced-resolve@^5.10.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -6435,19 +6428,19 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-next@12.2.4: - version "12.2.4" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.2.4.tgz#5f12f2eff1fabc3f1fb7527ceb8a4ad00235b011" - integrity sha512-r3keSLY1Z+rN+ASN8nmWwZ+AsMl6IrPGRWgbQhKHcop4/fk1hJGxE9Xf/mYMkV07+1Q/catchw25lu525HFy5Q== +eslint-config-next@13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.1.1.tgz#b1a6602b0a339820585d4b2f8d2e08866b6699a7" + integrity sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ== dependencies: - "@next/eslint-plugin-next" "12.2.4" + "@next/eslint-plugin-next" "13.1.1" "@rushstack/eslint-patch" "^1.1.3" - "@typescript-eslint/parser" "^5.21.0" + "@typescript-eslint/parser" "^5.42.0" eslint-import-resolver-node "^0.3.6" - eslint-import-resolver-typescript "^2.7.1" + eslint-import-resolver-typescript "^3.5.2" eslint-plugin-import "^2.26.0" eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.29.4" + eslint-plugin-react "^7.31.7" eslint-plugin-react-hooks "^4.5.0" eslint-config-prettier@^8.5.0: @@ -6463,16 +6456,18 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-import-resolver-typescript@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" - integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== +eslint-import-resolver-typescript@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz#9431acded7d898fd94591a08ea9eec3514c7de91" + integrity sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ== dependencies: debug "^4.3.4" - glob "^7.2.0" + enhanced-resolve "^5.10.0" + get-tsconfig "^4.2.0" + globby "^13.1.2" + is-core-module "^2.10.0" is-glob "^4.0.3" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" + synckit "^0.8.4" eslint-module-utils@^2.7.3: version "2.7.4" @@ -6531,7 +6526,7 @@ eslint-plugin-react-hooks@^4.5.0: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@^7.29.4: +eslint-plugin-react@^7.31.7: version "7.31.11" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz#011521d2b16dcf95795df688a4770b4eaab364c8" integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw== @@ -6597,14 +6592,15 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@8.21.0: - version "8.21.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.21.0.tgz#1940a68d7e0573cef6f50037addee295ff9be9ef" - integrity sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA== +eslint@8.31.0: + version "8.31.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.31.0.tgz#75028e77cbcff102a9feae1d718135931532d524" + integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA== dependencies: - "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.10.4" - "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" + "@eslint/eslintrc" "^1.4.1" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -6614,21 +6610,21 @@ eslint@8.21.0: eslint-scope "^7.1.1" eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" - espree "^9.3.3" + espree "^9.4.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" find-up "^5.0.0" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.15.0" - globby "^11.1.0" + glob-parent "^6.0.2" + globals "^13.19.0" grapheme-splitter "^1.0.4" ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" @@ -6640,9 +6636,8 @@ eslint@8.21.0: strip-ansi "^6.0.1" strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^9.3.3, espree@^9.4.0: +espree@^9.4.0: version "9.4.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== @@ -6957,7 +6952,7 @@ ethereumjs-tx@^2.1.1: ethereumjs-common "^1.5.0" ethereumjs-util "^6.0.0" -ethereumjs-util@7.1.5, ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.7, ethereumjs-util@^7.0.8, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: +ethereumjs-util@7.1.5, ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.7, ethereumjs-util@^7.0.8, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: version "7.1.5" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== @@ -7337,7 +7332,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.2.7, fast-glob@^3.2.9: +fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9: version "3.2.12" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== @@ -7521,6 +7516,11 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== +form-data-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -7660,13 +7660,6 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -7674,7 +7667,7 @@ get-stream@^5.0.0, get-stream@^5.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: +get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== @@ -7687,6 +7680,11 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-tsconfig@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.3.0.tgz#4c26fae115d1050e836aea65d6fe56b507ee249b" + integrity sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ== + getos@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" @@ -7708,7 +7706,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +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== @@ -7727,7 +7725,7 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: +glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -7759,7 +7757,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.15.0, globals@^13.19.0: +globals@^13.19.0: version "13.19.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== @@ -7783,6 +7781,17 @@ globby@^11.0.4, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +globby@^13.1.2: + version "13.1.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.3.tgz#f62baf5720bcb2c1330c8d4ef222ee12318563ff" + integrity sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.2.11" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^4.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -7806,22 +7815,24 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -got@9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== +got@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" + "@sindresorhus/is" "^4.6.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + cacheable-lookup "^6.0.4" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + form-data-encoder "1.7.1" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^2.0.0" got@^11.8.5: version "11.8.6" @@ -7840,7 +7851,7 @@ got@^11.8.5: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -8032,6 +8043,14 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" +http2-wrapper@^2.1.10: + version "2.2.0" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" + integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -8247,7 +8266,7 @@ is-ci@^3.0.0: dependencies: ci-info "^3.2.0" -is-core-module@^2.8.1, is-core-module@^2.9.0: +is-core-module@^2.10.0, is-core-module@^2.8.1, is-core-module@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== @@ -8261,6 +8280,11 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -8377,7 +8401,7 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" -is-path-inside@^3.0.2: +is-path-inside@^3.0.2, 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== @@ -8482,6 +8506,13 @@ is-what@^3.14.1: resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -9041,6 +9072,11 @@ js-cookie@^3.0.1: resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.1.tgz#9e39b4c6c2f56563708d7d31f6f5f21873a92414" integrity sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw== +js-sdsl@^4.1.4: + version "4.2.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" + integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== + js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -9124,11 +9160,6 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -9209,6 +9240,11 @@ json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.2.tgz#64471c5bdcc564c18f7c1d4df2e2297f2457c5ab" integrity sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ== +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -9282,13 +9318,6 @@ keccak@3.0.2, keccak@^3.0.0, keccak@^3.0.1: node-gyp-build "^4.2.0" readable-stream "^3.6.0" -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - keyv@^4.0.0: version "4.5.2" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" @@ -9323,7 +9352,7 @@ lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== -less@^4.1.1: +less@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/less/-/less-4.1.3.tgz#175be9ddcbf9b250173e0a00b4d6920a5b770246" integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== @@ -9546,16 +9575,16 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -9739,7 +9768,7 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: +mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== @@ -9771,7 +9800,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, 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== @@ -9812,7 +9841,7 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*, mkdirp@^1.0.4, mkdirp@~1.0.4: +mkdirp@*, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -10026,11 +10055,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - normalize-url@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" @@ -10169,6 +10193,15 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +open@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" @@ -10208,16 +10241,16 @@ ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - p-cancelable@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -10480,7 +10513,7 @@ postcss-icss-selectors@^2.0.3: lodash "^4.17.4" postcss "^6.0.2" -postcss-load-config@^3.0.1: +postcss-load-config@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== @@ -10511,7 +10544,7 @@ postcss@^6.0.14, postcss@^6.0.2: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^8.3.0: +postcss@^8.4.19: version "8.4.20" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.20.tgz#64c52f509644cecad8567e949f4081d98349dc56" integrity sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g== @@ -10554,11 +10587,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -10836,10 +10864,10 @@ react-gtm-module@^2.0.11: resolved "https://registry.yarnpkg.com/react-gtm-module/-/react-gtm-module-2.0.11.tgz#14484dac8257acd93614e347c32da9c5ac524206" integrity sha512-8gyj4TTxeP7eEyc2QKawEuQoAZdjKvMY4pgWfycGmqGByhs17fR+zEBs0JUDq4US/l+vbTl+6zvUIx27iDo/Vw== -react-hook-form@^7.36.1: - version "7.41.0" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.41.0.tgz#cc0871f4784e7233ac8466300da557d622154414" - integrity sha512-u1cHOXujr+AsNBoeCtcCuRwPh87mXAgKtXqd3qTCBgNFYzVZLXjYgLcynORpAgqhe24r5scucR8+6gfWaXBtHQ== +react-hook-form@^7.41.3: + version "7.41.3" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.41.3.tgz#1b85e95e70cb743d41cd9230ea2df71359d00151" + integrity sha512-5QNTmqJtDb88WV5n41b6+AmcDMVyaJ3tccPgHAgS215w3jZ3bmJhDO27kNTr8u4YHNYXmS7p1/4/KachBAlUtw== react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" @@ -11125,7 +11153,7 @@ reserved-words@^0.1.2: resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" integrity sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw== -resolve-alpn@^1.0.0: +resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== @@ -11147,11 +11175,6 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - resolve.exports@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" @@ -11175,13 +11198,6 @@ resolve@^2.0.0-next.3: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - responselike@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" @@ -11297,7 +11313,7 @@ rxjs@6, rxjs@^6.6.3: dependencies: tslib "^1.9.0" -rxjs@^7.5.1, rxjs@^7.5.2: +rxjs@^7.5.1, rxjs@^7.5.2, rxjs@^7.5.5: version "7.8.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== @@ -11337,12 +11353,12 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass@^1.32.13: +sass@^1.56.1: version "1.57.1" resolved "https://registry.yarnpkg.com/sass/-/sass-1.57.1.tgz#dfafd46eb3ab94817145e8825208ecf7281119b5" integrity sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw== @@ -11609,6 +11625,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + slice-ansi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" @@ -11637,17 +11658,6 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -11664,11 +11674,6 @@ source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -11925,18 +11930,15 @@ stylis@4.1.3: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== -stylus@^0.54.8: - version "0.54.8" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.8.tgz#3da3e65966bc567a7b044bfe0eece653e099d147" - integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg== +stylus@^0.59.0: + version "0.59.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.59.0.tgz#a344d5932787142a141946536d6e24e6a6be7aa6" + integrity sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg== dependencies: - css-parse "~2.0.0" - debug "~3.1.0" + "@adobe/css-tools" "^4.0.1" + debug "^4.3.2" glob "^7.1.6" - mkdirp "~1.0.4" - safer-buffer "^2.1.2" sax "~1.2.4" - semver "^6.3.0" source-map "^0.7.3" superstruct@^0.14.2: @@ -12035,6 +12037,14 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +synckit@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.4.tgz#0e6b392b73fafdafcde56692e3352500261d64ec" + integrity sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw== + dependencies: + "@pkgr/utils" "^2.3.1" + tslib "^2.4.0" + table-layout@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" @@ -12057,6 +12067,11 @@ tallyho-onboarding@^1.0.2: dependencies: bowser "^2.9.0" +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + tar@^4.0.2: version "4.4.19" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" @@ -12197,11 +12212,6 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -12329,7 +12339,7 @@ ts-prune@^0.10.3: "true-myth" "^4.1.0" ts-morph "^13.0.1" -tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: +tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== @@ -12339,6 +12349,15 @@ tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: minimist "^1.2.6" strip-bom "^3.0.0" +tsconfig-paths@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz#4819f861eef82e6da52fb4af1e8c930a39ed979a" + integrity sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -12458,24 +12477,25 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript-plugin-css-modules@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/typescript-plugin-css-modules/-/typescript-plugin-css-modules-3.4.0.tgz#4ff6905d88028684d1608c05c62cb6346e5548cc" - integrity sha512-2MdjfSg4MGex1csCWRUwKD+MpgnvcvLLr9bSAMemU/QYGqBsXdez0cc06H/fFhLtRoKJjXg6PSTur3Gy1Umhpw== +typescript-plugin-css-modules@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/typescript-plugin-css-modules/-/typescript-plugin-css-modules-4.1.1.tgz#fc9c13f20f80c13a233beffd27697af353d96316" + integrity sha512-kpVxGkY/go9eV5TP1YUDJ6SqwBx2OIuVStMCxKyg9PhJVFXjLYR7AuItVLwoz0NCdiemH91WhtgAjb96jI34DA== dependencies: - dotenv "^10.0.0" + dotenv "^16.0.3" icss-utils "^5.1.0" - less "^4.1.1" + less "^4.1.3" lodash.camelcase "^4.3.0" - postcss "^8.3.0" + postcss "^8.4.19" postcss-filter-plugins "^3.0.1" postcss-icss-keyframes "^0.2.1" postcss-icss-selectors "^2.0.3" - postcss-load-config "^3.0.1" + postcss-load-config "^3.1.4" reserved-words "^0.1.2" - sass "^1.32.13" - stylus "^0.54.8" - tsconfig-paths "^3.9.0" + sass "^1.56.1" + source-map-js "^1.0.2" + stylus "^0.59.0" + tsconfig-paths "^4.1.1" typescript@4.9.4, typescript@^4.6.2: version "4.9.4" @@ -12587,18 +12607,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - url-parse@^1.5.3: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -12655,11 +12663,6 @@ utils-merge@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.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -12670,16 +12673,16 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - v8-to-istanbul@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" @@ -12736,23 +12739,15 @@ warning@^4.0.3: dependencies: loose-envify "^1.0.0" -web3-bzz@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.4.tgz#9419e606e38a9777443d4ce40506ebd796e06075" - integrity sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q== +web3-bzz@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.1.tgz#81397be5ce262d03d82b92e9d8acc11f8a609ea1" + integrity sha512-dJJHS84nvpoxv6ijTMkdUSlRr5beCXNtx4UZcrFLHBva8dT63QEtKdLyDt2AyMJJdVzTCk78uir/6XtVWrdS6w== dependencies: "@types/node" "^12.12.6" - got "9.6.0" + got "12.1.0" swarm-js "^0.1.40" -web3-core-helpers@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz#f8f808928560d3e64e0c8d7bdd163aa4766bcf40" - integrity sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg== - dependencies: - web3-eth-iban "1.7.4" - web3-utils "1.7.4" - web3-core-helpers@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.1.tgz#7904747b23fd0afa4f2c86ed98ea9418ccad7672" @@ -12761,17 +12756,6 @@ web3-core-helpers@1.8.1: web3-eth-iban "1.8.1" web3-utils "1.8.1" -web3-core-method@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.7.4.tgz#3873c6405e1a0a8a1efc1d7b28de8b7550b00c15" - integrity sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ== - dependencies: - "@ethersproject/transactions" "^5.6.2" - web3-core-helpers "1.7.4" - web3-core-promievent "1.7.4" - web3-core-subscriptions "1.7.4" - web3-utils "1.7.4" - web3-core-method@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.1.tgz#0fc5a433a9fc784c447522f141c0a8e0163c7790" @@ -12783,13 +12767,6 @@ web3-core-method@1.8.1: web3-core-subscriptions "1.8.1" web3-utils "1.8.1" -web3-core-promievent@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz#80a75633fdfe21fbaae2f1e38950edb2f134868c" - integrity sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA== - dependencies: - eventemitter3 "4.0.4" - web3-core-promievent@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.1.tgz#f334c8b2ceac6c2228f06d2a515f6d103157f036" @@ -12797,17 +12774,6 @@ web3-core-promievent@1.8.1: dependencies: eventemitter3 "4.0.4" -web3-core-requestmanager@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz#2dc8a526dab8183dca3fef54658621801b1d0469" - integrity sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA== - dependencies: - util "^0.12.0" - web3-core-helpers "1.7.4" - web3-providers-http "1.7.4" - web3-providers-ipc "1.7.4" - web3-providers-ws "1.7.4" - web3-core-requestmanager@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.1.tgz#272ffa55b7b568ecbc8e4a257ca080355c31c60e" @@ -12819,14 +12785,6 @@ web3-core-requestmanager@1.8.1: web3-providers-ipc "1.8.1" web3-providers-ws "1.8.1" -web3-core-subscriptions@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz#cfbd3fa71081a8c8c6f1a64577a1a80c5bd9826f" - integrity sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.7.4" - web3-core-subscriptions@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.1.tgz#f5ae1380e92746eadfab6475b8a70ef5a1be6bbf" @@ -12835,20 +12793,7 @@ web3-core-subscriptions@1.8.1: eventemitter3 "4.0.4" web3-core-helpers "1.8.1" -web3-core@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.7.4.tgz#943fff99134baedafa7c65b4a0bbd424748429ff" - integrity sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q== - dependencies: - "@types/bn.js" "^5.1.0" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-requestmanager "1.7.4" - web3-utils "1.7.4" - -web3-core@^1.8.1: +web3-core@1.8.1, web3-core@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.1.tgz#050b1c408d1f9b7ae539e90f7f7d1b7a7d10578b" integrity sha512-LbRZlJH2N6nS3n3Eo9Y++25IvzMY7WvYnp4NM/Ajhh97dAdglYs6rToQ2DbL2RLvTYmTew4O/y9WmOk4nq9COw== @@ -12861,66 +12806,58 @@ web3-core@^1.8.1: web3-core-requestmanager "1.8.1" web3-utils "1.8.1" -web3-eth-abi@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz#3fee967bafd67f06b99ceaddc47ab0970f2a614a" - integrity sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg== +web3-eth-abi@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.1.tgz#47455d6513217c4b0866fea6f97b1c4afa0b6535" + integrity sha512-0mZvCRTIG0UhDhJwNQJgJxu4b4DyIpuMA0GTfqxqeuqzX4Q/ZvmoNurw0ExTfXaGPP82UUmmdkRi6FdZOx+C6w== dependencies: "@ethersproject/abi" "^5.6.3" - web3-utils "1.7.4" + web3-utils "1.8.1" -web3-eth-accounts@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz#7a24a4dfe947f7e9d1bae678529e591aa146167a" - integrity sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw== +web3-eth-accounts@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.1.tgz#1ce7387721f118aeb0376291e4d8bbe2ac323406" + integrity sha512-mgzxSYgN54/NsOFBO1Fq1KkXp1S5KlBvI/DlgvajU72rupoFMq6Cu6Yp9GUaZ/w2ij9PzEJuFJk174XwtfMCmg== dependencies: - "@ethereumjs/common" "^2.5.0" - "@ethereumjs/tx" "^3.3.2" + "@ethereumjs/common" "2.5.0" + "@ethereumjs/tx" "3.3.2" crypto-browserify "3.12.0" eth-lib "0.2.8" ethereumjs-util "^7.0.10" scrypt-js "^3.0.1" - uuid "3.3.2" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-utils "1.7.4" + uuid "^9.0.0" + web3-core "1.8.1" + web3-core-helpers "1.8.1" + web3-core-method "1.8.1" + web3-utils "1.8.1" -web3-eth-contract@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz#e5761cfb43d453f57be4777b2e5e7e1082078ff7" - integrity sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ== +web3-eth-contract@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.1.tgz#bdf3e33bbcb79a1b6144dffd6a0deefd2e459272" + integrity sha512-1wphnl+/xwCE2io44JKnN+ti3oa47BKRiVzvWd42icwRbcpFfRxH9QH+aQX3u8VZIISNH7dAkTWpGIIJgGFTmg== dependencies: "@types/bn.js" "^5.1.0" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-promievent "1.7.4" - web3-core-subscriptions "1.7.4" - web3-eth-abi "1.7.4" - web3-utils "1.7.4" - -web3-eth-ens@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz#346720305379c0a539e226141a9602f1da7bc0c8" - integrity sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA== + web3-core "1.8.1" + web3-core-helpers "1.8.1" + web3-core-method "1.8.1" + web3-core-promievent "1.8.1" + web3-core-subscriptions "1.8.1" + web3-eth-abi "1.8.1" + web3-utils "1.8.1" + +web3-eth-ens@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.1.tgz#e78a9651fea8282abe8565b001819e2d645e5929" + integrity sha512-FT8xTI9uN8RxeBQa/W8pLa2aoFh4+EE34w7W2271LICKzla1dtLyb6XSdn48vsUcPmhWsTVk9mO9RTU0l4LGQQ== dependencies: content-hash "^2.5.2" eth-ens-namehash "2.0.8" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-promievent "1.7.4" - web3-eth-abi "1.7.4" - web3-eth-contract "1.7.4" - web3-utils "1.7.4" - -web3-eth-iban@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz#711fb2547fdf0f988060027331b2b6c430505753" - integrity sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w== - dependencies: - bn.js "^5.2.1" - web3-utils "1.7.4" + web3-core "1.8.1" + web3-core-helpers "1.8.1" + web3-core-promievent "1.8.1" + web3-eth-abi "1.8.1" + web3-eth-contract "1.8.1" + web3-utils "1.8.1" web3-eth-iban@1.8.1: version "1.8.1" @@ -12930,44 +12867,44 @@ web3-eth-iban@1.8.1: bn.js "^5.2.1" web3-utils "1.8.1" -web3-eth-personal@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz#22c399794cb828a75703df8bb4b3c1331b471546" - integrity sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g== +web3-eth-personal@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.1.tgz#00b5ff1898b62044d25ed5fddd8486168d4827cf" + integrity sha512-myIYMvj7SDIoV9vE5BkVdon3pya1WinaXItugoii2VoTcQNPOtBxmYVH+XS5ErzCJlnxzphpQrkywyY64bbbCA== dependencies: "@types/node" "^12.12.6" - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-net "1.7.4" - web3-utils "1.7.4" - -web3-eth@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.7.4.tgz#a7c1d3ccdbba4de4a82df7e3c4db716e4a944bf2" - integrity sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug== - dependencies: - web3-core "1.7.4" - web3-core-helpers "1.7.4" - web3-core-method "1.7.4" - web3-core-subscriptions "1.7.4" - web3-eth-abi "1.7.4" - web3-eth-accounts "1.7.4" - web3-eth-contract "1.7.4" - web3-eth-ens "1.7.4" - web3-eth-iban "1.7.4" - web3-eth-personal "1.7.4" - web3-net "1.7.4" - web3-utils "1.7.4" - -web3-net@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.7.4.tgz#3153dfd3423262dd6fbec7aae5467202c4cad431" - integrity sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg== - dependencies: - web3-core "1.7.4" - web3-core-method "1.7.4" - web3-utils "1.7.4" + web3-core "1.8.1" + web3-core-helpers "1.8.1" + web3-core-method "1.8.1" + web3-net "1.8.1" + web3-utils "1.8.1" + +web3-eth@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.1.tgz#395f6cd56edaac5dbb23e8cec9886c3fd32c430e" + integrity sha512-LgyzbhFqiFRd8M8sBXoFN4ztzOnkeckl3H/9lH5ek7AdoRMhBg7tYpYRP3E5qkhd/q+yiZmcUgy1AF6NHrC1wg== + dependencies: + web3-core "1.8.1" + web3-core-helpers "1.8.1" + web3-core-method "1.8.1" + web3-core-subscriptions "1.8.1" + web3-eth-abi "1.8.1" + web3-eth-accounts "1.8.1" + web3-eth-contract "1.8.1" + web3-eth-ens "1.8.1" + web3-eth-iban "1.8.1" + web3-eth-personal "1.8.1" + web3-net "1.8.1" + web3-utils "1.8.1" + +web3-net@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.1.tgz#2bed4d4b93166724129ec33d0e5dea98880285f4" + integrity sha512-LyEJAwogdFo0UAXZqoSJGFjopdt+kLw0P00FSZn2yszbgcoI7EwC+nXiOsEe12xz4LqpYLOtbR7+gxgiTVjjHQ== + dependencies: + web3-core "1.8.1" + web3-core-method "1.8.1" + web3-utils "1.8.1" web3-provider-engine@16.0.3: version "16.0.3" @@ -12997,14 +12934,6 @@ web3-provider-engine@16.0.3: xhr "^2.2.0" xtend "^4.0.1" -web3-providers-http@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.7.4.tgz#8209cdcb115db5ccae1f550d1c4e3005e7538d02" - integrity sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA== - dependencies: - web3-core-helpers "1.7.4" - xhr2-cookies "1.1.0" - web3-providers-http@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.1.tgz#8aa89c11a9272f11ddb74b871273c92225faa28d" @@ -13015,14 +12944,6 @@ web3-providers-http@1.8.1: es6-promise "^4.2.8" web3-core-helpers "1.8.1" -web3-providers-ipc@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz#02e85e99e48f432c9d34cee7d786c3685ec9fcfa" - integrity sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw== - dependencies: - oboe "2.1.5" - web3-core-helpers "1.7.4" - web3-providers-ipc@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.1.tgz#6128a3a3a824d06bf0efcfe86325401f8691a5ca" @@ -13031,15 +12952,6 @@ web3-providers-ipc@1.8.1: oboe "2.1.5" web3-core-helpers "1.8.1" -web3-providers-ws@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz#6e60bcefb456f569a3e766e386d7807a96f90595" - integrity sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.7.4" - websocket "^1.0.32" - web3-providers-ws@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.1.tgz#5e5370e07eb8c615ed298ebc8602b283c7b7d649" @@ -13049,28 +12961,15 @@ web3-providers-ws@1.8.1: web3-core-helpers "1.8.1" websocket "^1.0.32" -web3-shh@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.7.4.tgz#bee91cce2737c529fd347274010b548b6ea060f1" - integrity sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A== - dependencies: - web3-core "1.7.4" - web3-core-method "1.7.4" - web3-core-subscriptions "1.7.4" - web3-net "1.7.4" - -web3-utils@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.4.tgz#eb6fa3706b058602747228234453811bbee017f5" - integrity sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA== +web3-shh@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.1.tgz#028a95cf9d3a36020380938b9a127610efbb9be7" + integrity sha512-sqHgarnfcY2Qt3PYS4R6YveHrDy7hmL09yeLLHHCI+RKirmjLVqV0rc5LJWUtlbYI+kDoa5gbgde489M9ZAC0g== dependencies: - bn.js "^5.2.1" - ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" + web3-core "1.8.1" + web3-core-method "1.8.1" + web3-core-subscriptions "1.8.1" + web3-net "1.8.1" web3-utils@1.8.1, web3-utils@^1.8.1: version "1.8.1" @@ -13085,18 +12984,18 @@ web3-utils@1.8.1, web3-utils@^1.8.1: randombytes "^2.1.0" utf8 "3.0.0" -web3@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.7.4.tgz#00c9aef8e13ade92fd773d845fff250535828e93" - integrity sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A== - dependencies: - web3-bzz "1.7.4" - web3-core "1.7.4" - web3-eth "1.7.4" - web3-eth-personal "1.7.4" - web3-net "1.7.4" - web3-shh "1.7.4" - web3-utils "1.7.4" +web3@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.1.tgz#8ea67215ef5f3a6f6d3381800b527242ea22885a" + integrity sha512-tAqFsQhGv340C9OgRJIuoScN7f7wa1tUvsnnDUMt9YE6J4gcm7TV2Uwv+KERnzvV+xgdeuULYpsioRRNKrUvoQ== + dependencies: + web3-bzz "1.8.1" + web3-core "1.8.1" + web3-eth "1.8.1" + web3-eth-personal "1.8.1" + web3-net "1.8.1" + web3-shh "1.8.1" + web3-utils "1.8.1" webidl-conversions@^3.0.0: version "3.0.1" @@ -13113,15 +13012,15 @@ webidl-conversions@^7.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -webpack-bundle-analyzer@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.3.0.tgz#2f3c0ca9041d5ee47fa418693cf56b4a518b578b" - integrity sha512-J3TPm54bPARx6QG8z4cKBszahnUglcv70+N+8gUqv2I5KOFHJbzBiLx+pAp606so0X004fxM7hqRu10MLjJifA== +webpack-bundle-analyzer@4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz#33c1c485a7fcae8627c547b5c3328b46de733c66" + integrity sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg== dependencies: acorn "^8.0.4" acorn-walk "^8.0.0" chalk "^4.1.0" - commander "^6.2.0" + commander "^7.2.0" gzip-size "^6.0.0" lodash "^4.17.20" opener "^1.5.2" @@ -13548,13 +13447,6 @@ xhr-request@^1.0.1, xhr-request@^1.1.0: url-set-query "^1.0.0" xhr "^2.0.4" -xhr2-cookies@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== - dependencies: - cookiejar "^2.1.1" - xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: version "2.6.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" From b700e6886f9546148456908b5c4249d2a5ab171a Mon Sep 17 00:00:00 2001 From: Manuel Gellfart Date: Mon, 2 Jan 2023 14:34:16 +0100 Subject: [PATCH 003/422] fix: use new app deployment url (#1472) * fix: use new app deployment url * fix: remove outdated sections --- docs/environments.md | 18 +++++++----------- src/components/new-safe/CreateSafe/index.tsx | 2 +- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/docs/environments.md b/docs/environments.md index ba9f70ca6a..3c091f2c85 100644 --- a/docs/environments.md +++ b/docs/environments.md @@ -1,18 +1,14 @@ # Environments - -⚠️ URLs to be updated! - We have several environments where the app can be deployed: |Env|URL|Purpose|How it's deployed|Backend env| |---|---|---|---|---| |local|http://localhost:3000/app|local development|`yarn start`|staging| -|PRs |`https://pr--safereact.review-safe.gnosisdev.com/app`|peer review & feature QA|for all PRs on push|staging| -|release PRs|`https://pr--safereact.review-safe.gnosisdev.com/app`|pre-release regression testing|in PRs to `main`|**production** (sic!)| -|dev |https://safe-team.dev.gnosisdev.com/app/|preview of all WIP features|on push to the `dev` branch|staging| -|staging|https://safe-team.staging.gnosisdev.com/app/|preview of features before a release|on push to `main`|staging| -|production|https://gnosis-safe.io/app/|live app|deployed by DevOps (see the [Release Procedure](https://github.com/safe-global/safe-react/blob/ee39ef932d58e67db96756577814c1bfaf396d75/docs/release-procedure.md))|**production**| +|PRs |`https://--webcore.review-web-core.5afe.dev/`|peer review & feature QA|for all PRs on push|staging| +|dev |https://safe-web-core.dev.5afe.dev/|preview of all WIP features|on push to the `dev` branch|staging| +|staging|https://safe-web-core.staging.5afe.dev/|preview of features before a release|on push to `main`|staging| +|production|https://app.safe.global/|live app|deployed by DevOps (see the [Release Procedure](release-procedure.md))|**production**| ## Lifecycle of a feature @@ -26,11 +22,11 @@ After a feature enters the development cycle (i.e. is in a sprint), it goes thro 5. Once QA gives a green light, the branch is merged to the `dev` branch ### Release -1. All merged branches sit on `dev`, which is occasionally reviewed on the [dev site](https://safe-team.dev.gnosisdev.com/app/). +1. All merged branches sit on `dev`, which is occasionally reviewed on the [dev site](https://safe-web-core.dev.5afe.dev/). 2. In case some regression is noticed, it's fixed on dev. 3. Once a sufficient amount of features are ready for a release (at least once in a sprint), a release branch is made (normally from the HEAD of `dev`) and a PR to `main` is created. 4. QA does regression testing on the release branch. The backend APIs are pointing to production on this branch so that all chains can be tested. -5. Once QA passes, the branch is merged to `main` and is automatically deployed to the [staging site](https://safe-team.staging.gnosisdev.com/app/). +5. Once QA passes, the branch is merged to `main` and is automatically deployed to the [staging site](https://safe-web-core.staging.5afe.dev/). 6. It sits on staging for a short while where QA and the release manager briefly do a final check before going live. 7. DevOps are requested to deploy the code from `main` to the production env. -8. Once it's done, brief sanity checks are done on the [production site](https://gnosis-safe.io/app/). +8. Once it's done, brief sanity checks are done on the [production site](https://app.safe.global/). diff --git a/src/components/new-safe/CreateSafe/index.tsx b/src/components/new-safe/CreateSafe/index.tsx index 54e4455ecb..8f05af2d54 100644 --- a/src/components/new-safe/CreateSafe/index.tsx +++ b/src/components/new-safe/CreateSafe/index.tsx @@ -65,7 +65,7 @@ const staticHints: Record< Not sure how many owners and confirmations you need for your Safe?
Learn more about setting up your Safe. From b565703bb53b6021a5f7e20025c551b5148ca0be Mon Sep 17 00:00:00 2001 From: Diogo Soares <32431609+DiogoSoaress@users.noreply.github.com> Date: Mon, 2 Jan 2023 14:32:35 +0000 Subject: [PATCH 004/422] fix: update signers confirmations (#1468) * fix: update signers confirmations * fetch txDetails when txQueueTag changes * fix: flickering when reloading the tx details Co-authored-by: schmanu --- src/components/transactions/TxDetails/index.tsx | 12 +++++++++--- src/components/transactions/TxSigners/index.tsx | 4 +--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/transactions/TxDetails/index.tsx b/src/components/transactions/TxDetails/index.tsx index 005bbf049f..25cb46e68f 100644 --- a/src/components/transactions/TxDetails/index.tsx +++ b/src/components/transactions/TxDetails/index.tsx @@ -30,6 +30,7 @@ import useWallet from '@/hooks/wallets/useWallet' import useIsWrongChain from '@/hooks/useIsWrongChain' import { DelegateCallWarning, UnsignedWarning } from '@/components/transactions/Warning' import Multisend from '@/components/transactions/TxDetails/TxData/DecodedData/Multisend' +import useSafeInfo from '@/hooks/useSafeInfo' export const NOT_AVAILABLE = 'n/a' @@ -122,10 +123,15 @@ const TxDetails = ({ txDetails?: TransactionDetails // optional }): ReactElement => { const chainId = useChainId() + const { safe } = useSafeInfo() - const [txDetailsData, error, loading] = useAsync(async () => { - return txDetails || getTransactionDetails(chainId, txSummary.id) - }, [txDetails, chainId, txSummary.id]) + const [txDetailsData, error, loading] = useAsync( + async () => { + return txDetails || getTransactionDetails(chainId, txSummary.id) + }, + [txDetails, chainId, txSummary.id, safe.txQueuedTag], + false, + ) return (
diff --git a/src/components/transactions/TxSigners/index.tsx b/src/components/transactions/TxSigners/index.tsx index e494ec843d..43b44387da 100644 --- a/src/components/transactions/TxSigners/index.tsx +++ b/src/components/transactions/TxSigners/index.tsx @@ -137,9 +137,7 @@ export const TxSigners = ({ : }> Confirmations{' '} - - ({`${confirmationsCount} of ${detailedExecutionInfo.confirmationsRequired}`}) - + ({`${confirmationsCount} of ${confirmationsRequired}`}) {!hideConfirmations && confirmations.map(({ signer }) => getConfirmationStep(signer, signer.value))} From 7b2cc49e1acd9be4f97182f883b0324e00067320 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Mon, 2 Jan 2023 16:52:41 +0100 Subject: [PATCH 005/422] feat: redesign Load Safe (#1405) * chore: Move files to new folder structure * fix: Add new load safe design, remove old load/create safe routes and pages * fix: import paths * refactor: Extract OwnerRow and ReviewRow * fix: Remove old load safe components * fix: Shorten safe address in owner row * fix: Center load safe card, make owner name field wider, add another breakpoint for width * refactor: Rename step components * fix: load safe e2e test * Stretch address field * Fix useLayoutEffect warning Co-authored-by: katspaugh --- cypress/e2e/smoke/load_safe.cy.js | 12 +- .../common/NetworkSelector/index.tsx | 2 +- .../common/PageLayout/SideDrawer.tsx | 10 +- src/components/load-safe/index.tsx | 57 ------ .../load-safe/steps/SafeOwnersStep.tsx | 96 --------- .../load-safe/steps/SafeReviewStep.tsx | 183 ------------------ .../load-safe/steps/SelectNetworkStep.tsx | 35 ---- .../load-safe/steps/SetAddressStep.tsx | 146 -------------- .../Step2/OwnerRow.tsx => OwnerRow/index.tsx} | 19 +- .../new-safe/OwnerRow/styles.module.css | 11 ++ src/components/new-safe/ReviewRow/index.tsx | 17 ++ .../{ => create}/CreateSafeInfos/index.tsx | 0 .../{ => create}/NetworkWarning/index.tsx | 0 .../{ => create}/OverviewWidget/index.tsx | 2 +- .../OverviewWidget/styles.module.css | 0 .../__tests__/useSyncSafeCreationStep.test.ts | 2 +- .../new-safe/{CreateSafe => create}/index.tsx | 20 +- .../{ => create}/steps/Step0/index.tsx | 8 +- .../{ => create}/steps/Step1/index.tsx | 12 +- .../steps/Step1/styles.module.css | 0 .../{ => create}/steps/Step2/index.tsx | 18 +- .../steps/Step2/styles.module.css | 0 .../steps/Step2/useSafeSetupHints.ts | 2 +- .../{ => create}/steps/Step3/index.tsx | 28 +-- .../steps/Step3/styles.module.css | 1 + .../steps/Step4/LoadingSpinner/index.tsx | 4 +- .../Step4/LoadingSpinner/styles.module.css | 0 .../steps/Step4/StatusMessage.tsx | 4 +- .../{ => create}/steps/Step4/StatusStep.tsx | 2 +- .../steps/Step4/StatusStepper.tsx | 8 +- .../{ => create}/steps/Step4/index.tsx | 16 +- .../{ => create}/steps/Step4/logic/index.ts | 4 +- .../steps/Step4/styles.module.css | 0 .../steps/Step4/useSafeCreation.ts | 4 +- .../steps/Step4/useSafeCreationEffects.ts | 4 +- .../{CreateSafe => create}/styles.module.css | 0 .../useSyncSafeCreationStep.ts | 6 +- src/components/new-safe/load/index.tsx | 75 +++++++ .../load/steps/SafeOwnerStep/index.tsx | 91 +++++++++ .../load/steps/SafeReviewStep/index.tsx | 142 ++++++++++++++ .../load/steps/SetAddressStep/index.tsx | 161 +++++++++++++++ .../SafeAppLandingPage/AppActions.tsx | 2 +- src/components/sidebar/SafeListItem/index.tsx | 2 +- src/components/welcome/index.tsx | 4 +- src/config/routes.ts | 3 +- src/pages/index.tsx | 6 +- src/pages/new-safe/create.tsx | 2 +- src/pages/{ => new-safe}/load.tsx | 6 +- src/pages/open.tsx | 35 ---- 49 files changed, 602 insertions(+), 660 deletions(-) delete mode 100644 src/components/load-safe/index.tsx delete mode 100644 src/components/load-safe/steps/SafeOwnersStep.tsx delete mode 100644 src/components/load-safe/steps/SafeReviewStep.tsx delete mode 100644 src/components/load-safe/steps/SelectNetworkStep.tsx delete mode 100644 src/components/load-safe/steps/SetAddressStep.tsx rename src/components/new-safe/{steps/Step2/OwnerRow.tsx => OwnerRow/index.tsx} (88%) create mode 100644 src/components/new-safe/OwnerRow/styles.module.css create mode 100644 src/components/new-safe/ReviewRow/index.tsx rename src/components/new-safe/{ => create}/CreateSafeInfos/index.tsx (100%) rename src/components/new-safe/{ => create}/NetworkWarning/index.tsx (100%) rename src/components/new-safe/{ => create}/OverviewWidget/index.tsx (95%) rename src/components/new-safe/{ => create}/OverviewWidget/styles.module.css (100%) rename src/components/new-safe/{CreateSafe => create}/__tests__/useSyncSafeCreationStep.test.ts (93%) rename src/components/new-safe/{CreateSafe => create}/index.tsx (89%) rename src/components/new-safe/{ => create}/steps/Step0/index.tsx (89%) rename src/components/new-safe/{ => create}/steps/Step1/index.tsx (88%) rename src/components/new-safe/{ => create}/steps/Step1/styles.module.css (100%) rename src/components/new-safe/{ => create}/steps/Step2/index.tsx (89%) rename src/components/new-safe/{ => create}/steps/Step2/styles.module.css (100%) rename src/components/new-safe/{ => create}/steps/Step2/useSafeSetupHints.ts (92%) rename src/components/new-safe/{ => create}/steps/Step3/index.tsx (88%) rename src/components/new-safe/{ => create}/steps/Step3/styles.module.css (81%) rename src/components/new-safe/{ => create}/steps/Step4/LoadingSpinner/index.tsx (93%) rename src/components/new-safe/{ => create}/steps/Step4/LoadingSpinner/styles.module.css (100%) rename src/components/new-safe/{ => create}/steps/Step4/StatusMessage.tsx (93%) rename src/components/new-safe/{ => create}/steps/Step4/StatusStep.tsx (94%) rename src/components/new-safe/{ => create}/steps/Step4/StatusStepper.tsx (86%) rename src/components/new-safe/{ => create}/steps/Step4/index.tsx (89%) rename src/components/new-safe/{ => create}/steps/Step4/logic/index.ts (96%) rename src/components/new-safe/{ => create}/steps/Step4/styles.module.css (100%) rename src/components/new-safe/{ => create}/steps/Step4/useSafeCreation.ts (96%) rename src/components/new-safe/{ => create}/steps/Step4/useSafeCreationEffects.ts (92%) rename src/components/new-safe/{CreateSafe => create}/styles.module.css (100%) rename src/components/new-safe/{CreateSafe => create}/useSyncSafeCreationStep.ts (81%) create mode 100644 src/components/new-safe/load/index.tsx create mode 100644 src/components/new-safe/load/steps/SafeOwnerStep/index.tsx create mode 100644 src/components/new-safe/load/steps/SafeReviewStep/index.tsx create mode 100644 src/components/new-safe/load/steps/SetAddressStep/index.tsx rename src/pages/{ => new-safe}/load.tsx (65%) delete mode 100644 src/pages/open.tsx diff --git a/cypress/e2e/smoke/load_safe.cy.js b/cypress/e2e/smoke/load_safe.cy.js index 599d511d6d..144bb30f83 100644 --- a/cypress/e2e/smoke/load_safe.cy.js +++ b/cypress/e2e/smoke/load_safe.cy.js @@ -29,22 +29,20 @@ describe('Load existing Safe', () => { it('should allow choosing the network where the Safe exists', () => { // Click the network selector inside the Stepper content - cy.contains('Select network on which the Safe was created:').contains('span', 'Polygon').click() + cy.get('[data-testid=load-safe-form]').contains('Polygon').click() // Selects Goerli cy.get('ul li') .contains(/^G(ö|oe)rli$/) .click() - cy.contains('Select network on which the Safe was created:').contains('span', /^G(ö|oe)rli$/) - - cy.contains('Continue').click() + cy.contains('span', /^G(ö|oe)rli$/) }) it('should accept name the Safe', () => { // alias the address input label cy.get('input[name="address"]').parent().prev('label').as('addressLabel') - // Name input should have a placeholder ending in 'rinkeby-safe' + // Name input should have a placeholder ending in 'goerli-safe' cy.get('input[name="name"]') .should('have.attr', 'placeholder') .should('match', /g(ö|oe)rli-safe/) @@ -77,7 +75,7 @@ describe('Load existing Safe', () => { const [, address] = SAFE_QR_CODE_ADDRESS.split(':') cy.get('input[name="address"]').should('have.value', address) - cy.contains('Continue').click() + cy.contains('Next').click() }) // TODO: register the goerli ENS for the Safe owner when possible @@ -92,7 +90,7 @@ describe('Load existing Safe', () => { it('should set custom name in the first owner', () => { // Sets a custom name for the first owner cy.get('input[name="owners.0.name"]').type('Test Owner Name').should('have.value', 'Test Owner Name') - cy.contains('Continue').click() + cy.contains('Next').click() }) it('should have Safe and owner names in the Review step', () => { diff --git a/src/components/common/NetworkSelector/index.tsx b/src/components/common/NetworkSelector/index.tsx index 279a754d0d..15d527a5bd 100644 --- a/src/components/common/NetworkSelector/index.tsx +++ b/src/components/common/NetworkSelector/index.tsx @@ -24,7 +24,7 @@ const NetworkSelector = (): ReactElement => { trackEvent({ ...OVERVIEW_EVENTS.SWITCH_NETWORK, label: selectedChainId }) - const shouldKeepPath = [AppRoutes.load, AppRoutes.open, AppRoutes.newSafe.create].includes(router.pathname) + const shouldKeepPath = [AppRoutes.newSafe.create, AppRoutes.newSafe.load].includes(router.pathname) const newRoute = { pathname: shouldKeepPath ? router.pathname : '/', diff --git a/src/components/common/PageLayout/SideDrawer.tsx b/src/components/common/PageLayout/SideDrawer.tsx index 27166ccf47..61e8300f65 100644 --- a/src/components/common/PageLayout/SideDrawer.tsx +++ b/src/components/common/PageLayout/SideDrawer.tsx @@ -20,6 +20,10 @@ const isNewSafeRoute = (pathname: string): boolean => { return pathname === AppRoutes.newSafe.create } +const isLoadSafeRoute = (pathname: string): boolean => { + return pathname === AppRoutes.newSafe.load +} + const isAppShareRoute = (pathname: string): boolean => { return pathname === AppRoutes.share.safeApp } @@ -36,7 +40,11 @@ const SideDrawer = ({ isOpen, onToggle }: SideDrawerProps): ReactElement => { useEffect(() => { const closeSidebar = - isSmallScreen || isSafeAppRoute(pathname, query) || isAppShareRoute(pathname) || isNewSafeRoute(pathname) + isSmallScreen || + isSafeAppRoute(pathname, query) || + isAppShareRoute(pathname) || + isNewSafeRoute(pathname) || + isLoadSafeRoute(pathname) onToggle(!closeSidebar) }, [isSmallScreen, onToggle, pathname, query]) diff --git a/src/components/load-safe/index.tsx b/src/components/load-safe/index.tsx deleted file mode 100644 index d1a273a8c9..0000000000 --- a/src/components/load-safe/index.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React from 'react' -import { useRouter } from 'next/router' - -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import VerticalTxStepper from '@/components/tx/TxStepper/vertical' -import { AppRoutes } from '@/config/routes' -import SafeOwnersStep from '@/components/load-safe/steps/SafeOwnersStep' -import SetAddressStep from '@/components/load-safe/steps/SetAddressStep' -import SafeReviewStep from '@/components/load-safe/steps/SafeReviewStep' -import SelectNetworkStep from '@/components/load-safe/steps/SelectNetworkStep' -import type { SafeFormData } from '@/components/create-safe/types' -import { LOAD_SAFE_CATEGORY } from '@/services/analytics' - -export const LoadSafeSteps: TxStepperProps['steps'] = [ - { - label: 'Connect wallet & select network', - render: (_, onSubmit, onBack) => , - }, - { - label: 'Name and address', - render: (data, onSubmit, onBack) => ( - - ), - }, - { - label: 'Owners', - render: (data, onSubmit, onBack) => ( - - ), - }, - { - label: 'Review', - render: (data, _, onBack) => , - }, -] - -const LoadSafe = ({ - initialStep, - initialData, -}: { - initialStep?: TxStepperProps['initialStep'] - initialData?: TxStepperProps['initialData'] -}) => { - const router = useRouter() - - return ( - router.push(AppRoutes.welcome)} - eventCategory={LOAD_SAFE_CATEGORY} - /> - ) -} - -export default LoadSafe diff --git a/src/components/load-safe/steps/SafeOwnersStep.tsx b/src/components/load-safe/steps/SafeOwnersStep.tsx deleted file mode 100644 index c913336ded..0000000000 --- a/src/components/load-safe/steps/SafeOwnersStep.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import type { ReactElement } from 'react' -import React, { useEffect } from 'react' -import { Box, Button, Divider, Grid, Paper, Typography } from '@mui/material' -import { FormProvider, useFieldArray, useForm } from 'react-hook-form' - -import type { StepRenderProps } from '@/components/tx/TxStepper/useTxStepper' -import ChainIndicator from '@/components/common/ChainIndicator' -import useAsync from '@/hooks/useAsync' -import type { SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' -import { getSafeInfo } from '@safe-global/safe-gateway-typescript-sdk' - -import { OwnerRow } from '@/components/create-safe/steps/OwnerRow' -import useChainId from '@/hooks/useChainId' -import type { SafeFormData } from '@/components/create-safe/types' - -type Props = { - params: SafeFormData - onSubmit: StepRenderProps['onSubmit'] - onBack: StepRenderProps['onBack'] -} - -const SafeOwnersStep = ({ params, onSubmit, onBack }: Props): ReactElement => { - const chainId = useChainId() - const formMethods = useForm({ defaultValues: params, mode: 'onChange' }) - const { handleSubmit, setValue, control, formState, getValues } = formMethods - - const { fields } = useFieldArray({ - control, - name: 'owners', - }) - - const [safeInfo] = useAsync(() => { - if (params.address) { - return getSafeInfo(chainId, params.address) - } - }, [chainId, params.address]) - - useEffect(() => { - if (!safeInfo) return - - setValue('threshold', safeInfo.threshold) - - const owners = safeInfo.owners.map((owner, i) => ({ - address: owner.value, - name: getValues(`owners.${i}.name`) || '', - })) - - setValue('owners', owners) - }, [getValues, safeInfo, setValue]) - - const onFormBack = () => { - onBack(getValues()) - } - - return ( - - -
- - - This Safe on has {safeInfo?.owners.length} owners. Optional: Provide a name for - each owner. - - - - - - Name - - - Address - - - - - {fields.map((field, index) => ( - - ))} - - - - - - - - - - -
-
- ) -} - -export default SafeOwnersStep diff --git a/src/components/load-safe/steps/SafeReviewStep.tsx b/src/components/load-safe/steps/SafeReviewStep.tsx deleted file mode 100644 index 7cf8e73345..0000000000 --- a/src/components/load-safe/steps/SafeReviewStep.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import React from 'react' -import { Box, Button, Divider, Grid, Paper, Typography } from '@mui/material' -import type { StepRenderProps } from '@/components/tx/TxStepper/useTxStepper' -import ChainIndicator from '@/components/common/ChainIndicator' -import EthHashInfo from '@/components/common/EthHashInfo' -import { useAppDispatch } from '@/store' -import { addOrUpdateSafe } from '@/store/addedSafesSlice' -import { useRouter } from 'next/router' -import { AppRoutes } from '@/config/routes' -import { upsertAddressBookEntry } from '@/store/addressBookSlice' -import useWallet from '@/hooks/wallets/useWallet' -import { isOwner } from '@/utils/transaction-guards' -import { defaultSafeInfo } from '@/store/safeInfoSlice' -import { useCurrentChain } from '@/hooks/useChains' -import type { SafeFormData } from '@/components/create-safe/types' -import { trackEvent, LOAD_SAFE_EVENTS } from '@/services/analytics' - -type Props = { - params: SafeFormData - onBack: StepRenderProps['onBack'] -} - -const SafeReviewStep = ({ params, onBack }: Props) => { - const dispatch = useAppDispatch() - const router = useRouter() - const wallet = useWallet() - const isSafeOwner = wallet && isOwner(params.owners, wallet.address) - const currentChain = useCurrentChain() - const chainId = currentChain?.chainId || '' - - const addSafe = () => { - const safeName = params.name - const safeAddress = params.address - - dispatch( - addOrUpdateSafe({ - safe: { - ...defaultSafeInfo, - address: { value: safeAddress, name: safeName }, - threshold: params.threshold, - owners: params.owners.map((owner) => ({ - value: owner.address, - name: owner.name || owner.ens, - })), - chainId, - }, - }), - ) - - dispatch( - upsertAddressBookEntry({ - chainId, - address: safeAddress, - name: safeName, - }), - ) - - for (const { address, name, ens } of params.owners) { - const entryName = name || ens - - if (!entryName) { - continue - } - - dispatch( - upsertAddressBookEntry({ - chainId, - address, - name: entryName, - }), - ) - } - - trackEvent({ - ...LOAD_SAFE_EVENTS.OWNERS, - label: params.owners.length, - }) - - trackEvent({ - ...LOAD_SAFE_EVENTS.THRESHOLD, - label: params.threshold, - }) - - trackEvent(LOAD_SAFE_EVENTS.GO_TO_SAFE) - - router.push({ - pathname: AppRoutes.home, - query: { safe: `${currentChain?.shortName}:${safeAddress}` }, - }) - } - - return ( - - - - - Details - - Network - - - - - - {params.name && ( - <> - - Name of the Safe - - {params.name} - - )} - - Safe address - - - - - - Connected wallet client is owner? - - {isSafeOwner ? 'Yes' : 'No'} - - - Any transaction requires the confirmation of: - - - {params.threshold} out of {params.owners.length} - - - - [undefined, undefined, `1px solid ${palette.border.light}`]} - borderTop={({ palette }) => [`1px solid ${palette.border.light}`, undefined, 'none']} - > - {params.owners.length} Safe owner(s) - - - {params.owners.map((owner) => { - return ( - - - - ) - })} - - - - - - - - - - - - - - - - - ) -} - -export default SafeReviewStep diff --git a/src/components/load-safe/steps/SelectNetworkStep.tsx b/src/components/load-safe/steps/SelectNetworkStep.tsx deleted file mode 100644 index a52df40d18..0000000000 --- a/src/components/load-safe/steps/SelectNetworkStep.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { Box, Button, Divider, Grid, Paper, Typography } from '@mui/material' -import type { StepRenderProps } from '@/components/tx/TxStepper/useTxStepper' -import NetworkSelector from '@/components/common/NetworkSelector' - -type Props = { - onSubmit: StepRenderProps['onSubmit'] - onBack: StepRenderProps['onBack'] -} - -const SelectNetworkStep = ({ onSubmit, onBack }: Props) => { - return ( - - - - Select network on which the Safe was created: - - - - - - - - - - - - - - - ) -} - -export default SelectNetworkStep diff --git a/src/components/load-safe/steps/SetAddressStep.tsx b/src/components/load-safe/steps/SetAddressStep.tsx deleted file mode 100644 index 104471d3f2..0000000000 --- a/src/components/load-safe/steps/SetAddressStep.tsx +++ /dev/null @@ -1,146 +0,0 @@ -import React from 'react' -import { Box, Button, CircularProgress, Divider, Grid, InputAdornment, Paper, Typography } from '@mui/material' -import { useForm, FormProvider } from 'react-hook-form' -import type { StepRenderProps } from '@/components/tx/TxStepper/useTxStepper' -import ChainIndicator from '@/components/common/ChainIndicator' -import AddressInput from '@/components/common/AddressInput' -import { getSafeInfo } from '@safe-global/safe-gateway-typescript-sdk' -import useChainId from '@/hooks/useChainId' -import { useAppSelector } from '@/store' -import { selectAddedSafes } from '@/store/addedSafesSlice' -import NameInput from '@/components/common/NameInput' -import { useAddressResolver } from '@/hooks/useAddressResolver' -import { useMnemonicSafeName } from '@/hooks/useMnemonicName' -import type { SafeFormData } from '@/components/create-safe/types' -import { trackEvent, LOAD_SAFE_EVENTS } from '@/services/analytics' -import ExternalLink from '@/components/common/ExternalLink' - -type Props = { - params: SafeFormData - onSubmit: StepRenderProps['onSubmit'] - onBack: StepRenderProps['onBack'] -} - -enum FormField { - address = 'address', - name = 'name', -} - -const SetAddressStep = ({ params, onSubmit, onBack }: Props) => { - const currentChainId = useChainId() - const addedSafes = useAppSelector((state) => selectAddedSafes(state, currentChainId)) - const formMethods = useForm({ - mode: 'onChange', - defaultValues: { - [FormField.address]: params?.address || '', - [FormField.name]: params?.name || '', - }, - }) - - const { handleSubmit, watch, formState, getValues } = formMethods - - const safeAddress = watch('address') - - const randomName = useMnemonicSafeName() - const { ens, name, resolving } = useAddressResolver(safeAddress) - - // Address book, ENS, mnemonic - const fallbackName = name || ens || randomName - - const validateSafeAddress = async (address: string) => { - if (addedSafes && Object.keys(addedSafes).includes(address)) { - return 'Safe is already added' - } - - try { - await getSafeInfo(currentChainId, address) - } catch (error) { - return 'Address given is not a valid Safe address' - } - } - - const onFormSubmit = handleSubmit((data: SafeFormData) => { - onSubmit({ - ...data, - [FormField.name]: data[FormField.name] || fallbackName, - }) - - if (data[FormField.name]) { - trackEvent(LOAD_SAFE_EVENTS.NAME_SAFE) - } - }) - - const onFormBack = () => { - onBack({ - ...getValues(), - [FormField.name]: getValues([FormField.name]) || fallbackName, - }) - } - - return ( - - -
- - - You are about to add an existing Safe on . First, choose a name and enter the - Safe address. The name is only stored locally and will never be shared with us or any third parties. Your - connected wallet does not have to be the owner of this Safe. In this case, the interface will provide you - a read-only view. - - - - Don't have the address of the Safe you created?{' '} - - This article explains how to find it. - - - - - - - - ), - }} - /> - - - - - - - - By continuing you consent to the{' '} - terms of use and{' '} - privacy policy. - - - - - - - - - - - - - - - - -
-
- ) -} - -export default SetAddressStep diff --git a/src/components/new-safe/steps/Step2/OwnerRow.tsx b/src/components/new-safe/OwnerRow/index.tsx similarity index 88% rename from src/components/new-safe/steps/Step2/OwnerRow.tsx rename to src/components/new-safe/OwnerRow/index.tsx index e582cd560e..8899c1ca50 100644 --- a/src/components/new-safe/steps/Step2/OwnerRow.tsx +++ b/src/components/new-safe/OwnerRow/index.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useMemo } from 'react' -import { CircularProgress, FormControl, Grid, IconButton, SvgIcon } from '@mui/material' +import { CircularProgress, FormControl, Grid, IconButton, SvgIcon, Typography } from '@mui/material' import NameInput from '@/components/common/NameInput' import InputAdornment from '@mui/material/InputAdornment' import AddressBookInput from '@/components/common/AddressBookInput' @@ -10,11 +10,8 @@ import EthHashInfo from '@/components/common/EthHashInfo' import type { NamedAddress } from '@/components/create-safe/types' import useWallet from '@/hooks/wallets/useWallet' import { sameAddress } from '@/utils/addresses' +import css from './styles.module.css' -/** - * TODO: this is a slightly modified copy of the old /create-safe/OwnerRow.tsx - * Once we remove the old safe creation flow we should remove the old file. - */ export const OwnerRow = ({ index, groupName, @@ -66,10 +63,11 @@ export const OwnerRow = ({ }, [ens, setValue, getValues, name, fieldName]) return ( - - + + {readOnly ? ( - + + + ) : ( ) } + +export default OwnerRow diff --git a/src/components/new-safe/OwnerRow/styles.module.css b/src/components/new-safe/OwnerRow/styles.module.css new file mode 100644 index 0000000000..434db87c10 --- /dev/null +++ b/src/components/new-safe/OwnerRow/styles.module.css @@ -0,0 +1,11 @@ +.name :global .MuiFormHelperText-root { + position: absolute; + bottom: -20px; +} + +@media (max-width: 900px) { + .name :global .MuiFormHelperText-root { + position: relative; + bottom: 0; + } +} diff --git a/src/components/new-safe/ReviewRow/index.tsx b/src/components/new-safe/ReviewRow/index.tsx new file mode 100644 index 0000000000..7478c054c4 --- /dev/null +++ b/src/components/new-safe/ReviewRow/index.tsx @@ -0,0 +1,17 @@ +import React, { type ReactElement } from 'react' +import { Grid, Typography } from '@mui/material' + +const ReviewRow = ({ name, value }: { name: string; value: ReactElement }) => { + return ( + <> + + {name} + + + {value} + + + ) +} + +export default ReviewRow diff --git a/src/components/new-safe/CreateSafeInfos/index.tsx b/src/components/new-safe/create/CreateSafeInfos/index.tsx similarity index 100% rename from src/components/new-safe/CreateSafeInfos/index.tsx rename to src/components/new-safe/create/CreateSafeInfos/index.tsx diff --git a/src/components/new-safe/NetworkWarning/index.tsx b/src/components/new-safe/create/NetworkWarning/index.tsx similarity index 100% rename from src/components/new-safe/NetworkWarning/index.tsx rename to src/components/new-safe/create/NetworkWarning/index.tsx diff --git a/src/components/new-safe/OverviewWidget/index.tsx b/src/components/new-safe/create/OverviewWidget/index.tsx similarity index 95% rename from src/components/new-safe/OverviewWidget/index.tsx rename to src/components/new-safe/create/OverviewWidget/index.tsx index dace52829a..14c02e63c5 100644 --- a/src/components/new-safe/OverviewWidget/index.tsx +++ b/src/components/new-safe/create/OverviewWidget/index.tsx @@ -6,7 +6,7 @@ import { Card, Grid, Typography } from '@mui/material' import type { ReactElement } from 'react' import SafeLogo from '@/public/images/logo-no-text.svg' -import css from './styles.module.css' +import css from '@/components/new-safe/create/OverviewWidget/styles.module.css' const LOGO_DIMENSIONS = '22px' diff --git a/src/components/new-safe/OverviewWidget/styles.module.css b/src/components/new-safe/create/OverviewWidget/styles.module.css similarity index 100% rename from src/components/new-safe/OverviewWidget/styles.module.css rename to src/components/new-safe/create/OverviewWidget/styles.module.css diff --git a/src/components/new-safe/CreateSafe/__tests__/useSyncSafeCreationStep.test.ts b/src/components/new-safe/create/__tests__/useSyncSafeCreationStep.test.ts similarity index 93% rename from src/components/new-safe/CreateSafe/__tests__/useSyncSafeCreationStep.test.ts rename to src/components/new-safe/create/__tests__/useSyncSafeCreationStep.test.ts index 7472e03927..cd8d2a011e 100644 --- a/src/components/new-safe/CreateSafe/__tests__/useSyncSafeCreationStep.test.ts +++ b/src/components/new-safe/create/__tests__/useSyncSafeCreationStep.test.ts @@ -1,5 +1,5 @@ import { renderHook } from '@/tests/test-utils' -import useSyncSafeCreationStep from '@/components/new-safe/CreateSafe/useSyncSafeCreationStep' +import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCreationStep' import * as wallet from '@/hooks/wallets/useWallet' import * as localStorage from '@/services/local-storage/useLocalStorage' import type { ConnectedWallet } from '@/services/onboard' diff --git a/src/components/new-safe/CreateSafe/index.tsx b/src/components/new-safe/create/index.tsx similarity index 89% rename from src/components/new-safe/CreateSafe/index.tsx rename to src/components/new-safe/create/index.tsx index 8f05af2d54..e554a3d51c 100644 --- a/src/components/new-safe/CreateSafe/index.tsx +++ b/src/components/new-safe/create/index.tsx @@ -2,21 +2,21 @@ import { Container, Typography, Grid } from '@mui/material' import { useRouter } from 'next/router' import useWallet from '@/hooks/wallets/useWallet' -import OverviewWidget from '../OverviewWidget' +import OverviewWidget from '@/components/new-safe/create/OverviewWidget' import type { NamedAddress } from '@/components/create-safe/types' -import type { TxStepperProps } from '../CardStepper/useCardStepper' -import CreateSafeStep0 from '@/components/new-safe/steps/Step0' -import CreateSafeStep1 from '@/components/new-safe/steps/Step1' -import CreateSafeStep2 from '@/components/new-safe/steps/Step2' -import CreateSafeStep3 from '@/components/new-safe/steps/Step3' -import { CreateSafeStatus } from '@/components/new-safe/steps/Step4' +import type { TxStepperProps } from '@/components/new-safe/CardStepper/useCardStepper' +import CreateSafeStep0 from '@/components/new-safe/create/steps/Step0' +import CreateSafeStep1 from '@/components/new-safe/create/steps/Step1' +import CreateSafeStep2 from '@/components/new-safe/create/steps/Step2' +import CreateSafeStep3 from '@/components/new-safe/create/steps/Step3' +import { CreateSafeStatus } from '@/components/new-safe/create/steps/Step4' import useAddressBook from '@/hooks/useAddressBook' -import { CardStepper } from '../CardStepper' +import { CardStepper } from '@/components/new-safe/CardStepper' import { AppRoutes } from '@/config/routes' import { CREATE_SAFE_CATEGORY } from '@/services/analytics' import type { AlertColor } from '@mui/material' -import type { CreateSafeInfoItem } from '../CreateSafeInfos' -import CreateSafeInfos from '../CreateSafeInfos' +import type { CreateSafeInfoItem } from '@/components/new-safe/create/CreateSafeInfos' +import CreateSafeInfos from '@/components/new-safe/create/CreateSafeInfos' import { type ReactElement, useMemo, useState } from 'react' import ExternalLink from '@/components/common/ExternalLink' diff --git a/src/components/new-safe/steps/Step0/index.tsx b/src/components/new-safe/create/steps/Step0/index.tsx similarity index 89% rename from src/components/new-safe/steps/Step0/index.tsx rename to src/components/new-safe/create/steps/Step0/index.tsx index ee2864f922..48e5c17291 100644 --- a/src/components/new-safe/steps/Step0/index.tsx +++ b/src/components/new-safe/create/steps/Step0/index.tsx @@ -4,12 +4,12 @@ import useWallet from '@/hooks/wallets/useWallet' import { useCurrentChain } from '@/hooks/useChains' import { isPairingSupported } from '@/services/pairing/utils' -import type { NewSafeFormData } from '@/components/new-safe/CreateSafe' +import type { NewSafeFormData } from '@/components/new-safe/create' import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' -import useSyncSafeCreationStep from '@/components/new-safe/CreateSafe/useSyncSafeCreationStep' -import layoutCss from '@/components/new-safe/CreateSafe/styles.module.css' +import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCreationStep' +import layoutCss from '@/components/new-safe/create/styles.module.css' import useLocalStorage from '@/services/local-storage/useLocalStorage' -import { type PendingSafeData, SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/steps/Step4' +import { type PendingSafeData, SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/create/steps/Step4' import useConnectWallet from '@/components/common/ConnectWallet/useConnectWallet' import KeyholeIcon from '@/components/common/icons/KeyholeIcon' import PairingDescription from '@/components/common/PairingDetails/PairingDescription' diff --git a/src/components/new-safe/steps/Step1/index.tsx b/src/components/new-safe/create/steps/Step1/index.tsx similarity index 88% rename from src/components/new-safe/steps/Step1/index.tsx rename to src/components/new-safe/create/steps/Step1/index.tsx index 0aae2b064f..543b208c7d 100644 --- a/src/components/new-safe/steps/Step1/index.tsx +++ b/src/components/new-safe/create/steps/Step1/index.tsx @@ -3,14 +3,14 @@ import { FormProvider, useForm } from 'react-hook-form' import { useMnemonicSafeName } from '@/hooks/useMnemonicName' import InfoIcon from '@/public/images/notifications/info.svg' import NetworkSelector from '@/components/common/NetworkSelector' -import type { StepRenderProps } from '../../CardStepper/useCardStepper' -import type { NewSafeFormData } from '../../CreateSafe' -import useSyncSafeCreationStep from '@/components/new-safe/CreateSafe/useSyncSafeCreationStep' +import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' +import type { NewSafeFormData } from '@/components/new-safe/create' +import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCreationStep' -import css from './styles.module.css' -import layoutCss from '@/components/new-safe/CreateSafe/styles.module.css' +import css from '@/components/new-safe/create/steps/Step1/styles.module.css' +import layoutCss from '@/components/new-safe/create/styles.module.css' import useIsWrongChain from '@/hooks/useIsWrongChain' -import NetworkWarning from '@/components/new-safe/NetworkWarning' +import NetworkWarning from '@/components/new-safe/create/NetworkWarning' import NameInput from '@/components/common/NameInput' import { CREATE_SAFE_EVENTS, trackEvent } from '@/services/analytics' import ExternalLink from '@/components/common/ExternalLink' diff --git a/src/components/new-safe/steps/Step1/styles.module.css b/src/components/new-safe/create/steps/Step1/styles.module.css similarity index 100% rename from src/components/new-safe/steps/Step1/styles.module.css rename to src/components/new-safe/create/steps/Step1/styles.module.css diff --git a/src/components/new-safe/steps/Step2/index.tsx b/src/components/new-safe/create/steps/Step2/index.tsx similarity index 89% rename from src/components/new-safe/steps/Step2/index.tsx rename to src/components/new-safe/create/steps/Step2/index.tsx index f03e83f39c..8461ed6d06 100644 --- a/src/components/new-safe/steps/Step2/index.tsx +++ b/src/components/new-safe/create/steps/Step2/index.tsx @@ -4,19 +4,19 @@ import type { ReactElement } from 'react' import AddIcon from '@/public/images/common/add.svg' import InfoIcon from '@/public/images/notifications/info.svg' -import { OwnerRow } from './OwnerRow' import type { NamedAddress } from '@/components/create-safe/types' -import type { StepRenderProps } from '../../CardStepper/useCardStepper' -import type { NewSafeFormData } from '../../CreateSafe' -import type { CreateSafeInfoItem } from '../../CreateSafeInfos' -import { useSafeSetupHints } from './useSafeSetupHints' -import useSyncSafeCreationStep from '@/components/new-safe/CreateSafe/useSyncSafeCreationStep' +import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' +import type { NewSafeFormData } from '@/components/new-safe/create' +import type { CreateSafeInfoItem } from '@/components/new-safe/create/CreateSafeInfos' +import { useSafeSetupHints } from '@/components/new-safe/create/steps/Step2/useSafeSetupHints' +import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCreationStep' import ArrowBackIcon from '@mui/icons-material/ArrowBack' -import css from './styles.module.css' -import layoutCss from '@/components/new-safe/CreateSafe/styles.module.css' -import NetworkWarning from '@/components/new-safe/NetworkWarning' +import css from '@/components/new-safe/create/steps/Step2/styles.module.css' +import layoutCss from '@/components/new-safe/create/styles.module.css' +import NetworkWarning from '@/components/new-safe/create/NetworkWarning' import useIsWrongChain from '@/hooks/useIsWrongChain' import { CREATE_SAFE_EVENTS, trackEvent } from '@/services/analytics' +import OwnerRow from '@/components/new-safe/OwnerRow' enum CreateSafeStep2Fields { owners = 'owners', diff --git a/src/components/new-safe/steps/Step2/styles.module.css b/src/components/new-safe/create/steps/Step2/styles.module.css similarity index 100% rename from src/components/new-safe/steps/Step2/styles.module.css rename to src/components/new-safe/create/steps/Step2/styles.module.css diff --git a/src/components/new-safe/steps/Step2/useSafeSetupHints.ts b/src/components/new-safe/create/steps/Step2/useSafeSetupHints.ts similarity index 92% rename from src/components/new-safe/steps/Step2/useSafeSetupHints.ts rename to src/components/new-safe/create/steps/Step2/useSafeSetupHints.ts index dad2b00e39..c8b7c793e6 100644 --- a/src/components/new-safe/steps/Step2/useSafeSetupHints.ts +++ b/src/components/new-safe/create/steps/Step2/useSafeSetupHints.ts @@ -1,5 +1,5 @@ import { useEffect } from 'react' -import type { CreateSafeInfoItem } from '../../CreateSafeInfos' +import type { CreateSafeInfoItem } from '@/components/new-safe/create/CreateSafeInfos' export const useSafeSetupHints = ( threshold: number, diff --git a/src/components/new-safe/steps/Step3/index.tsx b/src/components/new-safe/create/steps/Step3/index.tsx similarity index 88% rename from src/components/new-safe/steps/Step3/index.tsx rename to src/components/new-safe/create/steps/Step3/index.tsx index 9f88a9e5b8..0b0fa354d0 100644 --- a/src/components/new-safe/steps/Step3/index.tsx +++ b/src/components/new-safe/create/steps/Step3/index.tsx @@ -1,4 +1,4 @@ -import { useMemo, type ReactElement } from 'react' +import { useMemo } from 'react' import { Button, Grid, Typography, Divider, Box } from '@mui/material' import ChainIndicator from '@/components/common/ChainIndicator' import EthHashInfo from '@/components/common/EthHashInfo' @@ -7,33 +7,21 @@ import useGasPrice from '@/hooks/useGasPrice' import { useEstimateSafeCreationGas } from '@/components/create-safe/useEstimateSafeCreationGas' import { formatVisualAmount } from '@/utils/formatters' import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' -import type { NewSafeFormData } from '@/components/new-safe/CreateSafe' -import css from './styles.module.css' -import layoutCss from '@/components/new-safe/CreateSafe/styles.module.css' +import type { NewSafeFormData } from '@/components/new-safe/create' +import css from '@/components/new-safe/create/steps/Step3/styles.module.css' +import layoutCss from '@/components/new-safe/create/styles.module.css' import { getFallbackHandlerContractInstance } from '@/services/contracts/safeContracts' import { computeNewSafeAddress } from '@/components/create-safe/logic' import useWallet from '@/hooks/wallets/useWallet' import { useWeb3 } from '@/hooks/wallets/web3' import useLocalStorage from '@/services/local-storage/useLocalStorage' -import { type PendingSafeData, SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/steps/Step4' -import useSyncSafeCreationStep from '@/components/new-safe/CreateSafe/useSyncSafeCreationStep' +import { type PendingSafeData, SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/create/steps/Step4' +import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCreationStep' import ArrowBackIcon from '@mui/icons-material/ArrowBack' -import NetworkWarning from '@/components/new-safe/NetworkWarning' +import NetworkWarning from '@/components/new-safe/create/NetworkWarning' import useIsWrongChain from '@/hooks/useIsWrongChain' import palette from '@/styles/colors' - -const ReviewRow = ({ name, value }: { name: string; value: ReactElement }) => { - return ( - <> - - {name} - - - {value} - - - ) -} +import ReviewRow from '@/components/new-safe/ReviewRow' const CreateSafeStep3 = ({ data, onSubmit, onBack, setStep }: StepRenderProps) => { const isWrongChain = useIsWrongChain() diff --git a/src/components/new-safe/steps/Step3/styles.module.css b/src/components/new-safe/create/steps/Step3/styles.module.css similarity index 81% rename from src/components/new-safe/steps/Step3/styles.module.css rename to src/components/new-safe/create/steps/Step3/styles.module.css index 31a8389b86..e2b53bf895 100644 --- a/src/components/new-safe/steps/Step3/styles.module.css +++ b/src/components/new-safe/create/steps/Step3/styles.module.css @@ -2,4 +2,5 @@ display: flex; flex-direction: column; gap: var(--space-2); + font-size: 14px; } diff --git a/src/components/new-safe/steps/Step4/LoadingSpinner/index.tsx b/src/components/new-safe/create/steps/Step4/LoadingSpinner/index.tsx similarity index 93% rename from src/components/new-safe/steps/Step4/LoadingSpinner/index.tsx rename to src/components/new-safe/create/steps/Step4/LoadingSpinner/index.tsx index 2de0501100..f769059dc9 100644 --- a/src/components/new-safe/steps/Step4/LoadingSpinner/index.tsx +++ b/src/components/new-safe/create/steps/Step4/LoadingSpinner/index.tsx @@ -1,7 +1,7 @@ import { Box } from '@mui/material' -import css from './styles.module.css' +import css from '@/components/new-safe/create/steps/Step4/LoadingSpinner/styles.module.css' import classnames from 'classnames' -import { SafeCreationStatus } from '@/components/new-safe/steps/Step4/useSafeCreation' +import { SafeCreationStatus } from '@/components/new-safe/create/steps/Step4/useSafeCreation' import { useCallback, useEffect, useRef } from 'react' const rectTlEndTransform = 'translateX(0) translateY(20px) scaleY(1.1)' diff --git a/src/components/new-safe/steps/Step4/LoadingSpinner/styles.module.css b/src/components/new-safe/create/steps/Step4/LoadingSpinner/styles.module.css similarity index 100% rename from src/components/new-safe/steps/Step4/LoadingSpinner/styles.module.css rename to src/components/new-safe/create/steps/Step4/LoadingSpinner/styles.module.css diff --git a/src/components/new-safe/steps/Step4/StatusMessage.tsx b/src/components/new-safe/create/steps/Step4/StatusMessage.tsx similarity index 93% rename from src/components/new-safe/steps/Step4/StatusMessage.tsx rename to src/components/new-safe/create/steps/Step4/StatusMessage.tsx index fc70006930..161eff5666 100644 --- a/src/components/new-safe/steps/Step4/StatusMessage.tsx +++ b/src/components/new-safe/create/steps/Step4/StatusMessage.tsx @@ -1,6 +1,6 @@ import { Box, Typography } from '@mui/material' -import { SafeCreationStatus } from './useSafeCreation' -import LoadingSpinner from '@/components/new-safe/steps/Step4/LoadingSpinner' +import { SafeCreationStatus } from '@/components/new-safe/create/steps/Step4/useSafeCreation' +import LoadingSpinner from '@/components/new-safe/create/steps/Step4/LoadingSpinner' const getStep = (status: SafeCreationStatus) => { const ERROR_TEXT = 'Please cancel the process or retry the transaction.' diff --git a/src/components/new-safe/steps/Step4/StatusStep.tsx b/src/components/new-safe/create/steps/Step4/StatusStep.tsx similarity index 94% rename from src/components/new-safe/steps/Step4/StatusStep.tsx rename to src/components/new-safe/create/steps/Step4/StatusStep.tsx index 7d68272dd2..8a82eec354 100644 --- a/src/components/new-safe/steps/Step4/StatusStep.tsx +++ b/src/components/new-safe/create/steps/Step4/StatusStep.tsx @@ -1,6 +1,6 @@ import type { ReactNode } from 'react' import { Box, Skeleton, StepLabel, SvgIcon } from '@mui/material' -import css from '@/components/new-safe/steps/Step4/styles.module.css' +import css from '@/components/new-safe/create/steps/Step4/styles.module.css' import CircleIcon from '@mui/icons-material/Circle' import CircleOutlinedIcon from '@mui/icons-material/CircleOutlined' import Identicon from '@/components/common/Identicon' diff --git a/src/components/new-safe/steps/Step4/StatusStepper.tsx b/src/components/new-safe/create/steps/Step4/StatusStepper.tsx similarity index 86% rename from src/components/new-safe/steps/Step4/StatusStepper.tsx rename to src/components/new-safe/create/steps/Step4/StatusStepper.tsx index 81f7b77ac3..9e76107bc0 100644 --- a/src/components/new-safe/steps/Step4/StatusStepper.tsx +++ b/src/components/new-safe/create/steps/Step4/StatusStepper.tsx @@ -1,9 +1,9 @@ import { Box, Step, StepConnector, Stepper, Typography } from '@mui/material' -import css from '@/components/new-safe/steps/Step4/styles.module.css' +import css from '@/components/new-safe/create/steps/Step4/styles.module.css' import EthHashInfo from '@/components/common/EthHashInfo' -import { SafeCreationStatus } from '@/components/new-safe/steps/Step4/useSafeCreation' -import type { PendingSafeData } from '@/components/new-safe/steps/Step4/index' -import StatusStep from '@/components/new-safe/steps/Step4/StatusStep' +import { SafeCreationStatus } from '@/components/new-safe/create/steps/Step4/useSafeCreation' +import type { PendingSafeData } from '@/components/new-safe/create/steps/Step4/index' +import StatusStep from '@/components/new-safe/create/steps/Step4/StatusStep' const StatusStepper = ({ pendingSafe, status }: { pendingSafe: PendingSafeData; status: SafeCreationStatus }) => { if (!pendingSafe?.safeAddress) return null diff --git a/src/components/new-safe/steps/Step4/index.tsx b/src/components/new-safe/create/steps/Step4/index.tsx similarity index 89% rename from src/components/new-safe/steps/Step4/index.tsx rename to src/components/new-safe/create/steps/Step4/index.tsx index aa826347ae..9a2dab05b6 100644 --- a/src/components/new-safe/steps/Step4/index.tsx +++ b/src/components/new-safe/create/steps/Step4/index.tsx @@ -5,19 +5,19 @@ import { useRouter } from 'next/router' import Track from '@/components/common/Track' import { CREATE_SAFE_EVENTS } from '@/services/analytics/events/createLoadSafe' import useLocalStorage from '@/services/local-storage/useLocalStorage' -import StatusMessage from '@/components/new-safe/steps/Step4/StatusMessage' +import StatusMessage from '@/components/new-safe/create/steps/Step4/StatusMessage' import useWallet from '@/hooks/wallets/useWallet' import useIsWrongChain from '@/hooks/useIsWrongChain' -import type { NewSafeFormData } from '@/components/new-safe/CreateSafe' +import type { NewSafeFormData } from '@/components/new-safe/create' import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' -import type { PendingSafeTx } from '@/components/create-safe/types.d' -import useSafeCreationEffects from '@/components/new-safe/steps/Step4/useSafeCreationEffects' -import { SafeCreationStatus, useSafeCreation } from '@/components/new-safe/steps/Step4/useSafeCreation' -import StatusStepper from '@/components/new-safe/steps/Step4/StatusStepper' +import type { PendingSafeTx } from '@/components/create-safe/types' +import useSafeCreationEffects from '@/components/new-safe/create/steps/Step4/useSafeCreationEffects' +import { SafeCreationStatus, useSafeCreation } from '@/components/new-safe/create/steps/Step4/useSafeCreation' +import StatusStepper from '@/components/new-safe/create/steps/Step4/StatusStepper' import { trackEvent } from '@/services/analytics' import useChainId from '@/hooks/useChainId' -import { getRedirect } from '@/components/new-safe/steps/Step4/logic' -import layoutCss from '@/components/new-safe/CreateSafe/styles.module.css' +import { getRedirect } from '@/components/new-safe/create/steps/Step4/logic' +import layoutCss from '@/components/new-safe/create/styles.module.css' import { AppRoutes } from '@/config/routes' import palette from '@/styles/colors' diff --git a/src/components/new-safe/steps/Step4/logic/index.ts b/src/components/new-safe/create/steps/Step4/logic/index.ts similarity index 96% rename from src/components/new-safe/steps/Step4/logic/index.ts rename to src/components/new-safe/create/steps/Step4/logic/index.ts index 442976b583..f34cc23bb0 100644 --- a/src/components/new-safe/steps/Step4/logic/index.ts +++ b/src/components/new-safe/create/steps/Step4/logic/index.ts @@ -3,13 +3,13 @@ import type { ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' import { getProxyFactoryContractInstance } from '@/services/contracts/safeContracts' import type { ConnectedWallet } from '@/services/onboard' import { BigNumber } from '@ethersproject/bignumber' -import { SafeCreationStatus } from '@/components/new-safe/steps/Step4/useSafeCreation' +import { SafeCreationStatus } from '@/components/new-safe/create/steps/Step4/useSafeCreation' import { didRevert, type EthersError } from '@/utils/ethers-utils' import { Errors, logError } from '@/services/exceptions' import { ErrorCode } from '@ethersproject/logger' import { isWalletRejection } from '@/utils/wallets' import type { PendingSafeTx } from '@/components/create-safe/types' -import type { NewSafeFormData } from '@/components/new-safe/CreateSafe' +import type { NewSafeFormData } from '@/components/new-safe/create' import type { UrlObject } from 'url' import chains from '@/config/chains' import { AppRoutes } from '@/config/routes' diff --git a/src/components/new-safe/steps/Step4/styles.module.css b/src/components/new-safe/create/steps/Step4/styles.module.css similarity index 100% rename from src/components/new-safe/steps/Step4/styles.module.css rename to src/components/new-safe/create/steps/Step4/styles.module.css diff --git a/src/components/new-safe/steps/Step4/useSafeCreation.ts b/src/components/new-safe/create/steps/Step4/useSafeCreation.ts similarity index 96% rename from src/components/new-safe/steps/Step4/useSafeCreation.ts rename to src/components/new-safe/create/steps/Step4/useSafeCreation.ts index 009c3531f1..8d6eeab384 100644 --- a/src/components/new-safe/steps/Step4/useSafeCreation.ts +++ b/src/components/new-safe/create/steps/Step4/useSafeCreation.ts @@ -4,7 +4,7 @@ import { useWeb3, useWeb3ReadOnly } from '@/hooks/wallets/web3' import { useCurrentChain } from '@/hooks/useChains' import useWallet from '@/hooks/wallets/useWallet' import type { EthersError } from '@/utils/ethers-utils' -import type { PendingSafeData } from '@/components/new-safe/steps/Step4/index' +import type { PendingSafeData } from '@/components/new-safe/create/steps/Step4/index' import type { PendingSafeTx } from '@/components/create-safe/types' import { checkSafeCreationTx, @@ -12,7 +12,7 @@ import { handleSafeCreationError, SAFE_CREATION_ERROR_KEY, showSafeCreationError, -} from '@/components/new-safe/steps/Step4/logic' +} from '@/components/new-safe/create/steps/Step4/logic' import { useAppDispatch } from '@/store' import { closeByGroupKey } from '@/store/notificationsSlice' import { CREATE_SAFE_EVENTS, trackEvent } from '@/services/analytics' diff --git a/src/components/new-safe/steps/Step4/useSafeCreationEffects.ts b/src/components/new-safe/create/steps/Step4/useSafeCreationEffects.ts similarity index 92% rename from src/components/new-safe/steps/Step4/useSafeCreationEffects.ts rename to src/components/new-safe/create/steps/Step4/useSafeCreationEffects.ts index 50515a5721..91c32c03ed 100644 --- a/src/components/new-safe/steps/Step4/useSafeCreationEffects.ts +++ b/src/components/new-safe/create/steps/Step4/useSafeCreationEffects.ts @@ -1,12 +1,12 @@ import type { Dispatch, SetStateAction } from 'react' import { useEffect } from 'react' import { pollSafeInfo } from '@/components/create-safe/logic' -import { SafeCreationStatus } from '@/components/new-safe/steps/Step4/useSafeCreation' +import { SafeCreationStatus } from '@/components/new-safe/create/steps/Step4/useSafeCreation' import { CREATE_SAFE_EVENTS, trackEvent } from '@/services/analytics' import { updateAddressBook } from '@/components/create-safe/logic/address-book' import { useAppDispatch } from '@/store' import useChainId from '@/hooks/useChainId' -import type { PendingSafeData } from '@/components/new-safe/steps/Step4/index' +import type { PendingSafeData } from '@/components/new-safe/create/steps/Step4/index' const useSafeCreationEffects = ({ pendingSafe, diff --git a/src/components/new-safe/CreateSafe/styles.module.css b/src/components/new-safe/create/styles.module.css similarity index 100% rename from src/components/new-safe/CreateSafe/styles.module.css rename to src/components/new-safe/create/styles.module.css diff --git a/src/components/new-safe/CreateSafe/useSyncSafeCreationStep.ts b/src/components/new-safe/create/useSyncSafeCreationStep.ts similarity index 81% rename from src/components/new-safe/CreateSafe/useSyncSafeCreationStep.ts rename to src/components/new-safe/create/useSyncSafeCreationStep.ts index 0ada098a50..8e64022730 100644 --- a/src/components/new-safe/CreateSafe/useSyncSafeCreationStep.ts +++ b/src/components/new-safe/create/useSyncSafeCreationStep.ts @@ -1,9 +1,9 @@ import { useEffect } from 'react' import useLocalStorage from '@/services/local-storage/useLocalStorage' import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' -import type { PendingSafeData } from '@/components/new-safe/steps/Step4' -import type { NewSafeFormData } from '@/components/new-safe/CreateSafe/index' -import { SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/steps/Step4' +import type { PendingSafeData } from '@/components/new-safe/create/steps/Step4' +import type { NewSafeFormData } from '@/components/new-safe/create/index' +import { SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/create/steps/Step4' import useWallet from '@/hooks/wallets/useWallet' const useSyncSafeCreationStep = (setStep: StepRenderProps['setStep']) => { diff --git a/src/components/new-safe/load/index.tsx b/src/components/new-safe/load/index.tsx new file mode 100644 index 0000000000..52ade6fd2d --- /dev/null +++ b/src/components/new-safe/load/index.tsx @@ -0,0 +1,75 @@ +import React from 'react' +import { useRouter } from 'next/router' + +import { LOAD_SAFE_CATEGORY } from '@/services/analytics' +import { Container, Grid, Typography } from '@mui/material' +import { CardStepper } from '@/components/new-safe/CardStepper' +import type { TxStepperProps } from '@/components/new-safe/CardStepper/useCardStepper' +import type { NamedAddress } from '@/components/create-safe/types' +import SetAddressStep from '@/components/new-safe/load/steps/SetAddressStep' +import { AppRoutes } from '@/config/routes' +import SafeOwnerStep from '@/components/new-safe/load/steps/SafeOwnerStep' +import SafeReviewStep from '@/components/new-safe/load/steps/SafeReviewStep' + +export type LoadSafeFormData = NamedAddress & { + threshold: number + owners: NamedAddress[] +} + +export const LoadSafeSteps: TxStepperProps['steps'] = [ + { + title: 'Connect wallet & select network', + subtitle: 'Select network on which the Safe was created', + render: (_, onSubmit, onBack, setStep) => ( + + ), + }, + { + title: 'Owners and confirmations', + subtitle: 'Optional: Provide a name for each owner.', + render: (data, onSubmit, onBack, setStep) => ( + + ), + }, + { + title: 'Review', + subtitle: 'Confirm loading Safe.', + render: (data, onSubmit, onBack, setStep) => ( + + ), + }, +] + +export const loadSafeDefaultData = { threshold: -1, owners: [], address: '', name: '' } + +const LoadSafe = ({ initialData }: { initialData?: TxStepperProps['initialData'] }) => { + const router = useRouter() + + const onClose = () => { + router.push(AppRoutes.welcome) + } + + const initialSafe = initialData ?? loadSafeDefaultData + + return ( + + + + + Load Safe + + + + + + + + ) +} + +export default LoadSafe diff --git a/src/components/new-safe/load/steps/SafeOwnerStep/index.tsx b/src/components/new-safe/load/steps/SafeOwnerStep/index.tsx new file mode 100644 index 0000000000..68ba7d1cbb --- /dev/null +++ b/src/components/new-safe/load/steps/SafeOwnerStep/index.tsx @@ -0,0 +1,91 @@ +import React, { useEffect } from 'react' +import { getSafeInfo, type SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' +import { FormProvider, useFieldArray, useForm } from 'react-hook-form' +import { Box, Button, Divider } from '@mui/material' + +import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' +import type { LoadSafeFormData } from '@/components/new-safe/load' +import useAsync from '@/hooks/useAsync' +import useChainId from '@/hooks/useChainId' +import type { NamedAddress } from '@/components/create-safe/types' +import layoutCss from '@/components/new-safe/create/styles.module.css' +import ArrowBackIcon from '@mui/icons-material/ArrowBack' +import { OwnerRow } from '@/components/new-safe/OwnerRow' + +enum Field { + owners = 'owners', + threshold = 'threshold', +} + +type FormData = { + [Field.owners]: NamedAddress[] + [Field.threshold]: number +} + +const SafeOwnerStep = ({ data, onSubmit, onBack }: StepRenderProps) => { + const chainId = useChainId() + const formMethods = useForm({ + defaultValues: data, + mode: 'onChange', + }) + const { + handleSubmit, + setValue, + control, + formState: { isValid }, + getValues, + } = formMethods + + const { fields } = useFieldArray({ + control, + name: Field.owners, + }) + + const [safeInfo] = useAsync(() => { + if (data.address) { + return getSafeInfo(chainId, data.address) + } + }, [chainId, data.address]) + + useEffect(() => { + if (!safeInfo) return + + setValue(Field.threshold, safeInfo.threshold) + + const owners = safeInfo.owners.map((owner, i) => ({ + address: owner.value, + name: getValues(`owners.${i}.name`) || '', + })) + + setValue(Field.owners, owners) + }, [getValues, safeInfo, setValue]) + + const handleBack = () => { + onBack(getValues()) + } + + return ( + +
+ + {fields.map((field, index) => ( + + ))} + + + + + + + + + +
+ ) +} + +export default SafeOwnerStep diff --git a/src/components/new-safe/load/steps/SafeReviewStep/index.tsx b/src/components/new-safe/load/steps/SafeReviewStep/index.tsx new file mode 100644 index 0000000000..304d5ebe9a --- /dev/null +++ b/src/components/new-safe/load/steps/SafeReviewStep/index.tsx @@ -0,0 +1,142 @@ +import React from 'react' +import { Box, Button, Divider, Grid, Typography } from '@mui/material' + +import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' +import type { LoadSafeFormData } from '@/components/new-safe/load' +import layoutCss from '@/components/new-safe/create/styles.module.css' +import ArrowBackIcon from '@mui/icons-material/ArrowBack' +import ChainIndicator from '@/components/common/ChainIndicator' +import css from '@/components/new-safe/create/steps/Step3/styles.module.css' +import EthHashInfo from '@/components/common/EthHashInfo' +import { useCurrentChain } from '@/hooks/useChains' +import { useAppDispatch } from '@/store' +import { useRouter } from 'next/router' +import { addOrUpdateSafe } from '@/store/addedSafesSlice' +import { defaultSafeInfo } from '@/store/safeInfoSlice' +import { upsertAddressBookEntry } from '@/store/addressBookSlice' +import { LOAD_SAFE_EVENTS, trackEvent } from '@/services/analytics' +import { AppRoutes } from '@/config/routes' +import ReviewRow from '@/components/new-safe/ReviewRow' + +const SafeReviewStep = ({ data, onBack }: StepRenderProps) => { + const chain = useCurrentChain() + const dispatch = useAppDispatch() + const router = useRouter() + const chainId = chain?.chainId || '' + + const addSafe = () => { + const safeName = data.name + const safeAddress = data.address + + dispatch( + addOrUpdateSafe({ + safe: { + ...defaultSafeInfo, + address: { value: safeAddress, name: safeName }, + threshold: data.threshold, + owners: data.owners.map((owner) => ({ + value: owner.address, + name: owner.name || owner.ens, + })), + chainId, + }, + }), + ) + + dispatch( + upsertAddressBookEntry({ + chainId, + address: safeAddress, + name: safeName, + }), + ) + + for (const { address, name, ens } of data.owners) { + const entryName = name || ens + + if (!entryName) { + continue + } + + dispatch( + upsertAddressBookEntry({ + chainId, + address, + name: entryName, + }), + ) + } + + trackEvent({ + ...LOAD_SAFE_EVENTS.OWNERS, + label: data.owners.length, + }) + + trackEvent({ + ...LOAD_SAFE_EVENTS.THRESHOLD, + label: data.threshold, + }) + + trackEvent(LOAD_SAFE_EVENTS.GO_TO_SAFE) + + router.push({ + pathname: AppRoutes.home, + query: { safe: `${chain?.shortName}:${safeAddress}` }, + }) + } + + const handleBack = () => { + onBack(data) + } + + return ( + <> + + + } /> + {data.name}} /> + + {data.owners.map((owner, index) => ( + + ))} + + } + /> + + {data.threshold} out of {data.owners.length} owner(s) + + } + /> +
+ + + + + + + + + + ) +} + +export default SafeReviewStep diff --git a/src/components/new-safe/load/steps/SetAddressStep/index.tsx b/src/components/new-safe/load/steps/SetAddressStep/index.tsx new file mode 100644 index 0000000000..85952f8333 --- /dev/null +++ b/src/components/new-safe/load/steps/SetAddressStep/index.tsx @@ -0,0 +1,161 @@ +import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' +import type { LoadSafeFormData } from '@/components/new-safe/load' +import { FormProvider, useForm } from 'react-hook-form' +import { + Box, + Button, + CircularProgress, + Divider, + Grid, + InputAdornment, + SvgIcon, + Tooltip, + Typography, +} from '@mui/material' +import layoutCss from '@/components/new-safe/create/styles.module.css' +import NameInput from '@/components/common/NameInput' +import InfoIcon from '@/public/images/notifications/info.svg' +import css from '@/components/new-safe/create/steps/Step1/styles.module.css' +import NetworkSelector from '@/components/common/NetworkSelector' +import { useMnemonicSafeName } from '@/hooks/useMnemonicName' +import { useAddressResolver } from '@/hooks/useAddressResolver' +import ArrowBackIcon from '@mui/icons-material/ArrowBack' +import AddressInput from '@/components/common/AddressInput' +import React from 'react' +import { getSafeInfo } from '@safe-global/safe-gateway-typescript-sdk' +import useChainId from '@/hooks/useChainId' +import { useAppSelector } from '@/store' +import { selectAddedSafes } from '@/store/addedSafesSlice' +import { LOAD_SAFE_EVENTS, trackEvent } from '@/services/analytics' +import ExternalLink from '@/components/common/ExternalLink' + +enum Field { + name = 'name', + address = 'address', +} + +type FormData = { + [Field.name]: string + [Field.address]: string +} + +const SetAddressStep = ({ data, onSubmit, onBack }: StepRenderProps) => { + const currentChainId = useChainId() + const addedSafes = useAppSelector((state) => selectAddedSafes(state, currentChainId)) + const formMethods = useForm({ + mode: 'all', + defaultValues: { + [Field.name]: data.name, + [Field.address]: data.address, + }, + }) + + const { + handleSubmit, + formState: { errors, isValid }, + watch, + getValues, + } = formMethods + + const safeAddress = watch(Field.address) + + const randomName = useMnemonicSafeName() + const { ens, name, resolving } = useAddressResolver(safeAddress) + + // Address book, ENS, mnemonic + const fallbackName = name || ens || randomName + + const validateSafeAddress = async (address: string) => { + if (addedSafes && Object.keys(addedSafes).includes(address)) { + return 'Safe is already added' + } + + try { + await getSafeInfo(currentChainId, address) + } catch (error) { + return 'Address given is not a valid Safe address' + } + } + + const onFormSubmit = handleSubmit((data: FormData) => { + onSubmit({ + ...data, + [Field.name]: data[Field.name] || fallbackName, + }) + + if (data[Field.name]) { + trackEvent(LOAD_SAFE_EVENTS.NAME_SAFE) + } + }) + + const handleBack = () => { + const formData = getValues() + onBack({ + ...formData, + [Field.name]: formData.name || fallbackName, + }) + } + + return ( + +
+ + + + + + + ) : ( + + + + + + ), + }} + /> + + + + + + + + + + + + By continuing you consent to the terms of use{' '} + and privacy policy. + + + + + + + + + + + + +
+ ) +} + +export default SetAddressStep diff --git a/src/components/safe-apps/SafeAppLandingPage/AppActions.tsx b/src/components/safe-apps/SafeAppLandingPage/AppActions.tsx index 1808aced5b..81c88dda63 100644 --- a/src/components/safe-apps/SafeAppLandingPage/AppActions.tsx +++ b/src/components/safe-apps/SafeAppLandingPage/AppActions.tsx @@ -71,7 +71,7 @@ const AppActions = ({ wallet, onConnectWallet, chain, appUrl, app }: Props): Rea case shouldCreateSafe: const redirect = `${AppRoutes.apps}?appUrl=${appUrl}` const createSafeHrefWithRedirect: UrlObject = { - pathname: AppRoutes.open, + pathname: AppRoutes.newSafe.create, query: { safeViewRedirectURL: redirect, chain: chain.shortName }, } button = ( diff --git a/src/components/sidebar/SafeListItem/index.tsx b/src/components/sidebar/SafeListItem/index.tsx index 0a932a9189..a87aea66b0 100644 --- a/src/components/sidebar/SafeListItem/index.tsx +++ b/src/components/sidebar/SafeListItem/index.tsx @@ -64,7 +64,7 @@ const SafeListItem = ({ address={address} onClick={closeDrawer} href={{ - pathname: AppRoutes.load, + pathname: AppRoutes.newSafe.load, query: { chain: shortName, address }, }} /> diff --git a/src/components/welcome/index.tsx b/src/components/welcome/index.tsx index 99160f9e6c..01c8732874 100644 --- a/src/components/welcome/index.tsx +++ b/src/components/welcome/index.tsx @@ -29,7 +29,7 @@ const NewSafe = () => { for creating your new Safe. - @@ -44,7 +44,7 @@ const NewSafe = () => { address. - diff --git a/src/config/routes.ts b/src/config/routes.ts index 2e82d827c8..6fd0bfd99d 100644 --- a/src/config/routes.ts +++ b/src/config/routes.ts @@ -1,8 +1,6 @@ export const AppRoutes = { '404': '/404', welcome: '/welcome', - open: '/open', - load: '/load', index: '/', import: '/import', home: '/home', @@ -14,6 +12,7 @@ export const AppRoutes = { }, newSafe: { create: '/new-safe/create', + load: '/new-safe/load', }, settings: { spendingLimits: '/settings/spending-limits', diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 2a52c4c6fa..ac98f28c18 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,16 +1,18 @@ -import { useLayoutEffect } from 'react' +import { useEffect, useLayoutEffect } from 'react' import type { NextPage } from 'next' import { useRouter } from 'next/router' import useLastSafe from '@/hooks/useLastSafe' import { AppRoutes } from '@/config/routes' +const useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect + const IndexPage: NextPage = () => { const router = useRouter() const { safe, chain } = router.query const lastSafe = useLastSafe() const safeAddress = safe || lastSafe - useLayoutEffect(() => { + useIsomorphicEffect(() => { router.replace( safeAddress ? `${AppRoutes.home}?safe=${safeAddress}` diff --git a/src/pages/new-safe/create.tsx b/src/pages/new-safe/create.tsx index e158c36424..5327d3c5b8 100644 --- a/src/pages/new-safe/create.tsx +++ b/src/pages/new-safe/create.tsx @@ -1,7 +1,7 @@ import Head from 'next/head' import type { NextPage } from 'next' -import CreateSafe from '@/components/new-safe/CreateSafe' +import CreateSafe from '@/components/new-safe/create' const Open: NextPage = () => { return ( diff --git a/src/pages/load.tsx b/src/pages/new-safe/load.tsx similarity index 65% rename from src/pages/load.tsx rename to src/pages/new-safe/load.tsx index 4cd8af13dd..882f2950a0 100644 --- a/src/pages/load.tsx +++ b/src/pages/new-safe/load.tsx @@ -1,7 +1,7 @@ import type { NextPage } from 'next' import Head from 'next/head' import { useRouter } from 'next/router' -import LoadSafe from '@/components/load-safe' +import LoadSafe, { loadSafeDefaultData } from '@/components/new-safe/load' const Load: NextPage = () => { const router = useRouter() @@ -15,9 +15,9 @@ const Load: NextPage = () => { {safeAddress ? ( - + ) : ( - + )} ) diff --git a/src/pages/open.tsx b/src/pages/open.tsx deleted file mode 100644 index 5ca00b96ec..0000000000 --- a/src/pages/open.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import type { NextPage } from 'next' -import Head from 'next/head' -import CreateSafe from '@/components/create-safe' -import { useRouter } from 'next/router' -import useABTesting from '@/services/tracking/useABTesting' -import { AbTest } from '@/services/tracking/abTesting' -import { useLayoutEffect } from 'react' -import { AppRoutes } from '@/config/routes' - -const Open: NextPage = () => { - const shouldUseNewCreation = useABTesting(AbTest.SAFE_CREATION) - const router = useRouter() - - useLayoutEffect(() => { - if (shouldUseNewCreation) { - router.replace(AppRoutes.newSafe.create) - } - }, [router, shouldUseNewCreation]) - - if (shouldUseNewCreation) { - return <> - } - - return ( -
- - Safe – Create Safe - - - -
- ) -} - -export default Open From e89d8f4ce628db18610c94bb06f36203d4a45fa1 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Mon, 2 Jan 2023 16:55:07 +0100 Subject: [PATCH 006/422] fix: Add owner icon to confirmations (#1436) * fix: Add owner icon to confirmations * fix: Revert color changes --- .../dashboard/PendingTxs/PendingTxListItem.tsx | 8 ++++++-- src/components/dashboard/PendingTxs/styles.module.css | 3 +++ src/components/transactions/TxSummary/index.tsx | 10 ++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/dashboard/PendingTxs/PendingTxListItem.tsx b/src/components/dashboard/PendingTxs/PendingTxListItem.tsx index 032d350fe5..33e2781869 100644 --- a/src/components/dashboard/PendingTxs/PendingTxListItem.tsx +++ b/src/components/dashboard/PendingTxs/PendingTxListItem.tsx @@ -3,12 +3,13 @@ import type { LinkProps } from 'next/link' import type { ReactElement } from 'react' import ChevronRight from '@mui/icons-material/ChevronRight' import type { TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' -import { Box } from '@mui/material' +import { Box, SvgIcon, Typography } from '@mui/material' import { isMultisigExecutionInfo } from '@/utils/transaction-guards' import TxInfo from '@/components/transactions/TxInfo' import TxType from '@/components/transactions/TxType' import css from './styles.module.css' import classNames from 'classnames' +import OwnersIcon from '@/public/images/common/owners.svg' type PendingTxType = { transaction: TransactionSummary @@ -35,7 +36,10 @@ const PendingTx = ({ transaction, url }: PendingTxType): ReactElement => { {isMultisigExecutionInfo(transaction.executionInfo) ? ( - {`${transaction.executionInfo.confirmationsSubmitted}/${transaction.executionInfo.confirmationsRequired}`} + + + {`${transaction.executionInfo.confirmationsSubmitted}/${transaction.executionInfo.confirmationsRequired}`} + ) : ( diff --git a/src/components/dashboard/PendingTxs/styles.module.css b/src/components/dashboard/PendingTxs/styles.module.css index 27aba3d65d..42326042e4 100644 --- a/src/components/dashboard/PendingTxs/styles.module.css +++ b/src/components/dashboard/PendingTxs/styles.module.css @@ -15,6 +15,9 @@ } .confirmationsCount { + display: flex; + align-items: center; + gap: var(--space-1); padding: var(--space-1) 12px; border-radius: 8px; font-weight: bold; diff --git a/src/components/transactions/TxSummary/index.tsx b/src/components/transactions/TxSummary/index.tsx index 04f7120e11..81d30c2607 100644 --- a/src/components/transactions/TxSummary/index.tsx +++ b/src/components/transactions/TxSummary/index.tsx @@ -54,6 +54,8 @@ const TxSummary = ({ item, isGrouped }: TxSummaryProps): ReactElement => { : undefined const displayConfirmations = isQueue && !!submittedConfirmations && !!requiredConfirmations + const confirmationColor = + displayConfirmations && requiredConfirmations > submittedConfirmations ? 'border' : 'primary' return ( { {displayConfirmations && ( - - submittedConfirmations ? 'border.main' : 'primary'} - > + + {submittedConfirmations} out of {requiredConfirmations} From 9597d390f107b7c319e5893a382aa79e14d81df6 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Mon, 2 Jan 2023 16:55:31 +0100 Subject: [PATCH 007/422] fix: Use custom safeTxGas for simulations (#1439) --- src/components/tx/SignOrExecuteForm/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/tx/SignOrExecuteForm/index.tsx b/src/components/tx/SignOrExecuteForm/index.tsx index 76813d05ca..703556f6a7 100644 --- a/src/components/tx/SignOrExecuteForm/index.tsx +++ b/src/components/tx/SignOrExecuteForm/index.tsx @@ -238,7 +238,7 @@ const SignOrExecuteForm = ({ From 5c328d9877db8c432ef04e198123d1d5378e0b3f Mon Sep 17 00:00:00 2001 From: Diogo Soares <32431609+DiogoSoaress@users.noreply.github.com> Date: Tue, 3 Jan 2023 08:46:22 +0000 Subject: [PATCH 008/422] fix: don't show previous Safe notifications (#1473) * fix: do not dispatch outdated warning notifications for the wrong Safe * use safeAddress from useSafeInfo --- src/hooks/useSafeNotifications.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/hooks/useSafeNotifications.ts b/src/hooks/useSafeNotifications.ts index f1ef0d4dff..ea135f72c6 100644 --- a/src/hooks/useSafeNotifications.ts +++ b/src/hooks/useSafeNotifications.ts @@ -9,6 +9,7 @@ import { isValidMasterCopy } from '@/services/contracts/safeContracts' import { useRouter } from 'next/router' import useIsSafeOwner from './useIsSafeOwner' import { isValidSafeVersion } from './coreSDK/safeCoreSDK' +import useSafeAddress from '@/hooks/useSafeAddress' const OLD_APP_URL = 'https://gnosis-safe.io/app' @@ -23,15 +24,17 @@ const CLI_LINK = { const useSafeNotifications = (): void => { const dispatch = useAppDispatch() const { query } = useRouter() - const { safe } = useSafeInfo() + const { safe, safeAddress } = useSafeInfo() const { chainId, version, implementationVersionState } = safe const isOwner = useIsSafeOwner() + const urlSafeAddress = useSafeAddress() /** * Show a notification when the Safe version is out of date */ useEffect(() => { + if (safeAddress !== urlSafeAddress) return if (!isOwner) return if (implementationVersionState !== ImplementationVersionState.OUTDATED) return @@ -61,7 +64,7 @@ const useSafeNotifications = (): void => { return () => { dispatch(closeNotification({ id })) } - }, [dispatch, implementationVersionState, version, query.safe, isOwner]) + }, [dispatch, implementationVersionState, version, query.safe, isOwner, safeAddress, urlSafeAddress]) /** * Show a notification when the Safe master copy is not supported From 7cc27ac93b3dde1c7dd183f2a912282808350ab8 Mon Sep 17 00:00:00 2001 From: Diogo Soares <32431609+DiogoSoaress@users.noreply.github.com> Date: Tue, 3 Jan 2023 09:39:40 +0000 Subject: [PATCH 009/422] fix: do not hardcode year (#1478) --- src/components/common/Footer/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/common/Footer/index.tsx b/src/components/common/Footer/index.tsx index 256045bbea..e6227fb676 100644 --- a/src/components/common/Footer/index.tsx +++ b/src/components/common/Footer/index.tsx @@ -28,7 +28,7 @@ const Footer = (): ReactElement | null => {
  • - ©2022 Safe Ecosystem Foundation + ©2022–{new Date().getFullYear()} Safe Ecosystem Foundation
  • From 9a7dbeccaa895690201fa8b6eb5805230f9e0a05 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Tue, 3 Jan 2023 11:39:07 +0100 Subject: [PATCH 010/422] Chore: roll back onboard-core (#1476) * Chore: roll back onboard-core * Rm ignored file * Lock file --- package.json | 2 +- yarn.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index dd39e3faaa..d47f35000d 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@sentry/tracing": "^7.28.1", "@truffle/hdwallet-provider": "^2.1.4", "@web3-onboard/coinbase": "^2.1.3", - "@web3-onboard/core": "2.12.1", + "@web3-onboard/core": "2.8.5", "@web3-onboard/injected-wallets": "^2.3.0", "@web3-onboard/keystone": "^2.3.2", "@web3-onboard/ledger": "^2.3.2", diff --git a/yarn.lock b/yarn.lock index 79fdda0bfb..fc8e8fd07d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4101,14 +4101,14 @@ ethers "5.5.4" joi "^17.6.1" -"@web3-onboard/core@2.12.1": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.12.1.tgz#e6dae9eaad1e572cfafe4ceaedd803a9a40224f0" - integrity sha512-WqDXHJ28hkJACJYv85iqYfiRm1Nn5BDrvKYwWm6LOQI9J2YuaVYr9c99WRLQzP7x42E/QKVTopn/gATdKY0VQQ== +"@web3-onboard/core@2.8.5": + version "2.8.5" + resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.8.5.tgz#1a53da35620f8519af0eacda017385c67a69c5b9" + integrity sha512-MxyhA4E8uivWUxh+HHIuFEeQ8YhAesvD08cCD1NExrTgLogyLovvnuFuE7zwMJaEF7s2U33s1O31kBoy1We95A== dependencies: "@web3-onboard/common" "^2.2.3" bignumber.js "^9.0.0" - bnc-sdk "^4.6.2" + bnc-sdk "^4.4.1" bowser "^2.11.0" ethers "5.5.3" eventemitter3 "^4.0.7" @@ -4116,7 +4116,7 @@ lodash.merge "^4.6.2" lodash.partition "^4.6.0" nanoid "^4.0.0" - rxjs "^7.5.5" + rxjs "^7.5.2" svelte "^3.49.0" svelte-i18n "^3.3.13" @@ -4849,7 +4849,7 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -bnc-sdk@^4.6.2: +bnc-sdk@^4.4.1: version "4.6.3" resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.6.3.tgz#c852f091a5e84bb77864543b0775b35ebdbb1724" integrity sha512-rva+LyJuAm+U6xwZYqlsDxKaMy3EpHBqkOL93UDih7iwXDYnUr87n27pnGCw3B8xRBeRhCBC/VZMuzRFeea/Hw== @@ -11313,7 +11313,7 @@ rxjs@6, rxjs@^6.6.3: dependencies: tslib "^1.9.0" -rxjs@^7.5.1, rxjs@^7.5.2, rxjs@^7.5.5: +rxjs@^7.5.1, rxjs@^7.5.2: version "7.8.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== From ad11abb382c75e811258c70f2660fcf90f307844 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Thu, 5 Jan 2023 11:25:38 +0100 Subject: [PATCH 011/422] fix: Keyboard support (#1454) * fix: Keyboard support * fix: Restore clickble card on dashboard * fix: Dashboard e2e test --- cypress/e2e/smoke/dashboard.cy.js | 2 +- .../balances/AssetsTable/styles.module.css | 3 +- src/components/common/NavTabs/index.tsx | 62 +++++++++++++------ .../common/NetworkSelector/styles.module.css | 4 -- .../dashboard/Overview/Overview.tsx | 8 +-- src/components/nfts/NftCard/styles.module.css | 3 +- .../NotificationCenter/styles.module.css | 2 +- .../safe-apps/SafeAppIcon/index.tsx | 1 + .../sidebar/SidebarHeader/index.tsx | 34 +++++----- .../transactions/TxDetails/Summary/index.tsx | 32 +++++----- .../TxDetails/Summary/styles.module.css | 9 --- 11 files changed, 85 insertions(+), 75 deletions(-) diff --git a/cypress/e2e/smoke/dashboard.cy.js b/cypress/e2e/smoke/dashboard.cy.js index 45e7dad44f..f5513a2652 100644 --- a/cypress/e2e/smoke/dashboard.cy.js +++ b/cypress/e2e/smoke/dashboard.cy.js @@ -18,7 +18,7 @@ describe('Dashboard', () => { // Prefix is separated across elements in EthHashInfo cy.contains('0xCD4FddB8FfA90012DFE11eD4bf258861204FeEAE').should('exist') cy.contains('1/1') - cy.get(`a[href="/balances?safe=${encodeURIComponent(SAFE)}"] button`).contains('View assets') + cy.get(`a[href="/balances?safe=${encodeURIComponent(SAFE)}"]`).contains('View assets') cy.contains('p', 'Tokens').next().contains('3') cy.contains('p', 'NFTs').next().contains('0') }) diff --git a/src/components/balances/AssetsTable/styles.module.css b/src/components/balances/AssetsTable/styles.module.css index 74146ec7f8..b9b5882cd5 100644 --- a/src/components/balances/AssetsTable/styles.module.css +++ b/src/components/balances/AssetsTable/styles.module.css @@ -3,7 +3,8 @@ transition: opacity 0.2s; } -.container tr:hover td:last-of-type button { +.container tr:hover td:last-of-type button, +.container td:last-of-type button:focus-visible { opacity: 1; } diff --git a/src/components/common/NavTabs/index.tsx b/src/components/common/NavTabs/index.tsx index cfdf0cfbbd..cb37d36613 100644 --- a/src/components/common/NavTabs/index.tsx +++ b/src/components/common/NavTabs/index.tsx @@ -1,10 +1,35 @@ -import Link from 'next/link' -import { Tab, Tabs, Typography } from '@mui/material' +import React, { forwardRef } from 'react' +import NextLink, { type LinkProps as NextLinkProps } from 'next/link' +import { Tab, Tabs, Typography, type TabProps } from '@mui/material' import { useRouter } from 'next/router' import type { NavItem } from '@/components/sidebar/SidebarNavigation/config' - import css from './styles.module.css' +type Props = TabProps & NextLinkProps + +// This is needed in order for the tabs to work properly with Next Link e.g. tabbing with the keyboard +// Based on https://github.com/mui/material-ui/blob/master/examples/nextjs-with-typescript/src/Link.tsx +const NextLinkComposed = forwardRef(function NextComposedLink(props: Props, ref) { + const { href, as, replace, scroll, shallow, prefetch, legacyBehavior = true, locale, ...other } = props + + return ( + + {/* @ts-ignore */} + + + ) +}) + const NavTabs = ({ tabs }: { tabs: NavItem[] }) => { const router = useRouter() const activeTab = tabs.map((tab) => tab.href).indexOf(router.pathname) @@ -13,21 +38,22 @@ const NavTabs = ({ tabs }: { tabs: NavItem[] }) => { {tabs.map((tab, idx) => { return ( - - - {tab.label} - - } - /> - + + {tab.label} + + } + /> ) })} diff --git a/src/components/common/NetworkSelector/styles.module.css b/src/components/common/NetworkSelector/styles.module.css index 55c2fdf198..76f06608f7 100644 --- a/src/components/common/NetworkSelector/styles.module.css +++ b/src/components/common/NetworkSelector/styles.module.css @@ -7,10 +7,6 @@ display: none; } -.select *:focus { - background: inherit; -} - .select *:focus-visible { outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color; diff --git a/src/components/dashboard/Overview/Overview.tsx b/src/components/dashboard/Overview/Overview.tsx index c28e3ac31a..5087b8f015 100644 --- a/src/components/dashboard/Overview/Overview.tsx +++ b/src/components/dashboard/Overview/Overview.tsx @@ -153,11 +153,9 @@ const Overview = (): ReactElement => { - - - + diff --git a/src/components/nfts/NftCard/styles.module.css b/src/components/nfts/NftCard/styles.module.css index 114846ae8f..c14c438f54 100644 --- a/src/components/nfts/NftCard/styles.module.css +++ b/src/components/nfts/NftCard/styles.module.css @@ -13,7 +13,8 @@ pointer-events: none; } -.card:hover .sendButton { +.card:hover .sendButton, +.sendButton:focus-visible { pointer-events: all; opacity: 1; } diff --git a/src/components/notification-center/NotificationCenter/styles.module.css b/src/components/notification-center/NotificationCenter/styles.module.css index 989e46be85..82d3f95627 100644 --- a/src/components/notification-center/NotificationCenter/styles.module.css +++ b/src/components/notification-center/NotificationCenter/styles.module.css @@ -1,7 +1,7 @@ .bell { display: flex; justify-content: center; - height: 100%; + padding: 4px; } .bell svg path { diff --git a/src/components/safe-apps/SafeAppIcon/index.tsx b/src/components/safe-apps/SafeAppIcon/index.tsx index 45f1577cd4..9b470e769f 100644 --- a/src/components/safe-apps/SafeAppIcon/index.tsx +++ b/src/components/safe-apps/SafeAppIcon/index.tsx @@ -35,6 +35,7 @@ const SafeAppIcon = ({ width={width} height={height} style={{ pointerEvents: 'none' }} + tabIndex={-1} /> ) } diff --git a/src/components/sidebar/SidebarHeader/index.tsx b/src/components/sidebar/SidebarHeader/index.tsx index f15c3179f8..a84952d881 100644 --- a/src/components/sidebar/SidebarHeader/index.tsx +++ b/src/components/sidebar/SidebarHeader/index.tsx @@ -1,7 +1,6 @@ import type { ReactElement } from 'react' import { useEffect, useState } from 'react' import Typography from '@mui/material/Typography' -import type { IconButtonProps } from '@mui/material/IconButton' import IconButton from '@mui/material/IconButton' import Skeleton from '@mui/material/Skeleton' import Tooltip from '@mui/material/Tooltip' @@ -29,18 +28,6 @@ import Track from '@/components/common/Track' import { OVERVIEW_EVENTS } from '@/services/analytics/events/overview' import { SvgIcon } from '@mui/material' -const HeaderIconButton = ({ - title, - children, - ...props -}: { title: string } & Omit) => ( - - - {children} - - -) - const SafeHeader = (): ReactElement => { const currency = useAppSelector(selectCurrency) const { balances, loading: balancesLoading } = useBalances() @@ -88,9 +75,11 @@ const SafeHeader = (): ReactElement => {
    - - - + + + + + @@ -101,11 +90,16 @@ const SafeHeader = (): ReactElement => { - - + + - - + +
diff --git a/src/components/transactions/TxDetails/Summary/index.tsx b/src/components/transactions/TxDetails/Summary/index.tsx index 1efd0f15f7..ff39c72872 100644 --- a/src/components/transactions/TxDetails/Summary/index.tsx +++ b/src/components/transactions/TxDetails/Summary/index.tsx @@ -44,22 +44,24 @@ const Summary = ({ txDetails, defaultExpanded = false }: Props): ReactElement => )} -
- - {`${txData.operation} (${Operation[txData.operation].toLowerCase()})`} - - {safeTxGas} - {baseGas} - {gasPrice} - {generateDataRowValue(gasToken, 'hash', true)} - {generateDataRowValue(refundReceiver, 'hash', true)} - {confirmations?.map(({ signature }, index) => ( - - {generateDataRowValue(signature, 'rawData')} + {expanded && ( +
+ + {`${txData.operation} (${Operation[txData.operation].toLowerCase()})`} - ))} - {generateDataRowValue(txData.hexData, 'rawData')} -
+ {safeTxGas} + {baseGas} + {gasPrice} + {generateDataRowValue(gasToken, 'hash', true)} + {generateDataRowValue(refundReceiver, 'hash', true)} + {confirmations?.map(({ signature }, index) => ( + + {generateDataRowValue(signature, 'rawData')} + + ))} + {generateDataRowValue(txData.hexData, 'rawData')} +
+ )} )} diff --git a/src/components/transactions/TxDetails/Summary/styles.module.css b/src/components/transactions/TxDetails/Summary/styles.module.css index b52f448846..f6dd3cc651 100644 --- a/src/components/transactions/TxDetails/Summary/styles.module.css +++ b/src/components/transactions/TxDetails/Summary/styles.module.css @@ -2,12 +2,3 @@ margin-top: 8px; padding: 0; } - -.collapsibleSection { - max-height: 0px; - overflow: hidden; -} - -.collapsibleSectionExpanded { - max-height: '500px'; -} From edd6bdd07b1799c1bbc148378b39e19a7f2f2b2b Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Thu, 5 Jan 2023 15:10:21 +0100 Subject: [PATCH 012/422] fix: adjust error colour (#1485) --- src/styles/onboard.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles/onboard.css b/src/styles/onboard.css index ba09b4c4da..0fbd6deb6d 100644 --- a/src/styles/onboard.css +++ b/src/styles/onboard.css @@ -22,7 +22,7 @@ --onboard-success-600: var(--color-secondary-light); --onboard-success-700: var(--color-success-dark); - --onboard-danger-500: var(--color-error-light); + --onboard-danger-500: var(--color-error-main); --onboard-danger-600: var(--color-error-main); --onboard-danger-700: var(--color-error-dark); From fe45b0631d14a0f8aa8b9a55d7ad49b2c88b70e1 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Thu, 5 Jan 2023 15:42:13 +0100 Subject: [PATCH 013/422] fix: don't show unread badge if showing all (#1488) --- src/components/notification-center/NotificationCenter/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/notification-center/NotificationCenter/index.tsx b/src/components/notification-center/NotificationCenter/index.tsx index 2c88c33599..c805922239 100644 --- a/src/components/notification-center/NotificationCenter/index.tsx +++ b/src/components/notification-center/NotificationCenter/index.tsx @@ -137,7 +137,7 @@ const NotificationCenter = (): ReactElement => {
setShowAll((prev) => !prev)} disableRipple className={css.expandButton}> Date: Mon, 9 Jan 2023 09:00:05 +0100 Subject: [PATCH 014/422] fix: async validation loader in AddressInput (#1464) * fix: async validation loader in AddressInput * fix: condition and add testcase --- .../common/AddressInput/index.test.tsx | 25 +++++++++++++++++++ src/components/common/AddressInput/index.tsx | 4 +-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/components/common/AddressInput/index.test.tsx b/src/components/common/AddressInput/index.test.tsx index 0dc6d25f49..88bb005b95 100644 --- a/src/components/common/AddressInput/index.test.tsx +++ b/src/components/common/AddressInput/index.test.tsx @@ -124,6 +124,31 @@ describe('AddressInput tests', () => { await waitFor(() => expect(utils.getByLabelText(`${TEST_ADDRESS_B} is wrong`, { exact: false })).toBeDefined()) }) + it('should show a spinner when validation is in progress', async () => { + const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms)) + + const { input, utils } = setup('', async (val) => { + await sleep(2000) + return `${val} is wrong` + }) + + act(() => { + fireEvent.change(input, { target: { value: `gor:${TEST_ADDRESS_A}` } }) + jest.advanceTimersByTime(1000) + }) + + await waitFor(() => { + expect(utils.getByRole('progressbar')).toBeDefined() + expect(utils.queryByLabelText(`${TEST_ADDRESS_A} is wrong`, { exact: false })).toBeNull() + }) + + act(() => { + jest.advanceTimersByTime(1000) + }) + + await waitFor(() => expect(utils.getByLabelText(`${TEST_ADDRESS_A} is wrong`, { exact: false })).toBeDefined()) + }) + it('should resolve ENS names', async () => { const { input } = setup('') diff --git a/src/components/common/AddressInput/index.tsx b/src/components/common/AddressInput/index.tsx index 211cfb43df..aa63b220d0 100644 --- a/src/components/common/AddressInput/index.tsx +++ b/src/components/common/AddressInput/index.tsx @@ -18,7 +18,7 @@ const AddressInput = ({ name, validate, required = true, deps, ...props }: Addre register, setValue, control, - formState: { errors }, + formState: { errors, isValidating }, trigger, } = useFormContext() const currentChain = useCurrentChain() @@ -72,7 +72,7 @@ const AddressInput = ({ name, validate, required = true, deps, ...props }: Addre {currentShortName}: ), - endAdornment: resolving && ( + endAdornment: (resolving || isValidating) && ( From 390d78083e8a8757c6c028aedbea68453dd4655f Mon Sep 17 00:00:00 2001 From: Diogo Soares <32431609+DiogoSoaress@users.noreply.github.com> Date: Mon, 9 Jan 2023 08:05:56 +0000 Subject: [PATCH 015/422] fix: trigger validation upon owner removal (#1477) * fix: trigger validation upon owner removal * trigger validation on remove owner. Fetch owners with getValues * trigger validation only for owners --- src/components/new-safe/OwnerRow/index.tsx | 3 ++- src/components/new-safe/create/steps/Step2/index.tsx | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/new-safe/OwnerRow/index.tsx b/src/components/new-safe/OwnerRow/index.tsx index 8899c1ca50..f9f4ae34cf 100644 --- a/src/components/new-safe/OwnerRow/index.tsx +++ b/src/components/new-safe/OwnerRow/index.tsx @@ -43,11 +43,12 @@ export const OwnerRow = ({ const validateSafeAddress = useCallback( async (address: string) => { + const owners = getValues('owners') if (owners.filter((owner: NamedAddress) => sameAddress(owner.address, address)).length > 1) { return 'Owner is already added' } }, - [owners], + [getValues], ) const { ens, name, resolving } = useAddressResolver(owner.address) diff --git a/src/components/new-safe/create/steps/Step2/index.tsx b/src/components/new-safe/create/steps/Step2/index.tsx index 8461ed6d06..0ae9e27092 100644 --- a/src/components/new-safe/create/steps/Step2/index.tsx +++ b/src/components/new-safe/create/steps/Step2/index.tsx @@ -43,14 +43,14 @@ const CreateSafeStep2 = ({ useSyncSafeCreationStep(setStep) const formMethods = useForm({ - mode: 'all', + mode: 'onChange', defaultValues: { [CreateSafeStep2Fields.owners]: data.owners, [CreateSafeStep2Fields.threshold]: data.threshold, }, }) - const { handleSubmit, control, watch, formState, getValues, setValue } = formMethods + const { handleSubmit, control, watch, formState, getValues, setValue, trigger } = formMethods const threshold = watch(CreateSafeStep2Fields.threshold) @@ -64,6 +64,7 @@ const CreateSafeStep2 = ({ // Set threshold if it's greater than the number of owners setValue(CreateSafeStep2Fields.threshold, Math.min(threshold, ownerFields.length - 1)) remove(index) + trigger(CreateSafeStep2Fields.owners) } const isDisabled = isWrongChain || !formState.isValid From c7258cfd45b37c826c3f37404a43936bff68263a Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Mon, 9 Jan 2023 09:13:00 +0100 Subject: [PATCH 016/422] feat: Redesign welcome page (#1471) * feat: Redesign welcome page * fix: Remove dot from title * fix: Add connect wallet button to welcome page * fix: Design feedback * fix: Rename load to add * fix: Remove badge from keyhole icon * fix: Remove unused component * fix: Typos and text color * fix: Drawer links to welcome page * fix: Add collapsible sidebar on mobile screens * fix: Load safe e2e test connect wallet * fix: add sidebar min width * fix: implement feedback, fix e2e * fix: Adjust load safe e2e test * fix: Move load safe e2e out of smoke test folder * fix: Add isWelcomePage check again * fix: Remove connect wallet screen, move e2e test back to smoke folder * fix: Adjust grid breakpoints * fix: Keep footer visible on welcome page * fix: Only render SafeList once, useMediaQuery for accordion expanded state instead * Fix: css layout * Fix page layout * fix: Hide sidebar on index page * Revert layout changes * Accordion height * fix: Move scroll behaviour into child element * fix: Remove route utils * fix: Move beamer e2e into its own test file * fix: Stop event propagation to avoid closing parent accordion * fix: Adjust no safe message wording Co-authored-by: katspaugh --- cypress/e2e/smoke/beamer.cy.js | 32 +++ cypress/e2e/smoke/landing.cy.js | 29 --- cypress/e2e/smoke/load_safe.cy.js | 2 +- public/images/common/loading.svg | 6 + public/images/welcome/load-safe.svg | 4 + public/images/welcome/new-safe.svg | 4 + .../common/PageLayout/SideDrawer.tsx | 23 +- src/components/common/PageLayout/index.tsx | 15 +- src/components/sidebar/SafeList/index.tsx | 240 ++++++++++-------- .../sidebar/SafeList/styles.module.css | 5 +- src/components/sidebar/SafeListItem/index.tsx | 3 +- .../sidebar/SafeListItem/styles.module.css | 4 +- .../SafeListItemSecondaryAction/index.tsx | 4 +- src/components/welcome/index.tsx | 144 +++++++---- src/components/welcome/styles.module.css | 78 ++++++ src/pages/welcome.tsx | 4 +- src/styles/globals.css | 1 + 17 files changed, 389 insertions(+), 209 deletions(-) create mode 100644 cypress/e2e/smoke/beamer.cy.js create mode 100644 public/images/common/loading.svg create mode 100644 public/images/welcome/load-safe.svg create mode 100644 public/images/welcome/new-safe.svg create mode 100644 src/components/welcome/styles.module.css diff --git a/cypress/e2e/smoke/beamer.cy.js b/cypress/e2e/smoke/beamer.cy.js new file mode 100644 index 0000000000..5f723c8157 --- /dev/null +++ b/cypress/e2e/smoke/beamer.cy.js @@ -0,0 +1,32 @@ +const TEST_SAFE = 'gor:0x97d314157727D517A706B5D08507A1f9B44AaaE9' + +describe('Beamer', () => { + it('should require accept "Updates" cookies to display Beamer', () => { + // Disable PWA, otherwise it will throw a security error + cy.visit(`/${TEST_SAFE}/address-book`, { failOnStatusCode: false }) + + // Way to select the cookies banner without an id + cy.contains('We use cookies to provide') + cy.contains('Accept selection').click() + cy.contains('We use cookies to provide').should('not.exist') + + // Open What's new + cy.contains("What's new").click() + + // Tells that the user has to accept "Updates & Feedback" cookies + cy.contains('We use cookies to provide').parent('div').contains('accept the "Updates & Feedback"') + + // "Updates" is checked when the banner opens + cy.contains('We use cookies to provide').parent('div').get('input[name="updates"]').should('be.checked') + // Accept "Updates & Feedback" cookies + cy.contains('Accept selection').click() + cy.contains('We use cookies to provide').should('not.exist') + + // wait for Beamer cookies to be set + cy.wait(3000) + + // Open What's new + cy.contains("What's new").click({ force: true }) // clicks through the "lastPostTitle" + cy.get('#beamerOverlay .iframeCointaner').should('exist') + }) +}) diff --git a/cypress/e2e/smoke/landing.cy.js b/cypress/e2e/smoke/landing.cy.js index c33a4742c6..4dd60b90d1 100644 --- a/cypress/e2e/smoke/landing.cy.js +++ b/cypress/e2e/smoke/landing.cy.js @@ -4,33 +4,4 @@ describe('Landing page', () => { cy.url().should('include', '/welcome') }) - - it('should require accept "Updates" cookies to display Beamer', () => { - // Disable PWA, otherwise it will throw a security error - cy.visit('/') - - // Way to select the cookies banner without an id - cy.contains('We use cookies to provide') - cy.contains('Accept selection').click() - cy.contains('We use cookies to provide').should('not.exist') - - // Open What's new - cy.contains("What's new").click() - - // Tells that the user has to accept "Updates & Feedback" cookies - cy.contains('We use cookies to provide').parent('div').contains('accept the "Updates & Feedback"') - - // "Updates" is checked when the banner opens - cy.contains('We use cookies to provide').parent('div').get('input[name="updates"]').should('be.checked') - // Accept "Updates & Feedback" cookies - cy.contains('Accept selection').click() - cy.contains('We use cookies to provide').should('not.exist') - - // wait for Beamer cookies to be set - cy.wait(3000) - - // Open What's new - cy.contains("What's new").click({ force: true }) // clicks through the "lastPostTitle" - cy.get('#beamerOverlay .iframeCointaner').should('exist') - }) }) diff --git a/cypress/e2e/smoke/load_safe.cy.js b/cypress/e2e/smoke/load_safe.cy.js index 144bb30f83..a44ff5f71d 100644 --- a/cypress/e2e/smoke/load_safe.cy.js +++ b/cypress/e2e/smoke/load_safe.cy.js @@ -23,7 +23,7 @@ describe('Load existing Safe', () => { cy.get('[data-testid=CloseIcon]').click() // Enters Loading Safe form - cy.contains('Add existing Safe').click() + cy.contains('button', 'Add existing Safe').click() cy.contains('Connect wallet & select network') }) diff --git a/public/images/common/loading.svg b/public/images/common/loading.svg new file mode 100644 index 0000000000..45ff4306aa --- /dev/null +++ b/public/images/common/loading.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/public/images/welcome/load-safe.svg b/public/images/welcome/load-safe.svg new file mode 100644 index 0000000000..546d08730b --- /dev/null +++ b/public/images/welcome/load-safe.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/public/images/welcome/new-safe.svg b/public/images/welcome/new-safe.svg new file mode 100644 index 0000000000..774153e8a6 --- /dev/null +++ b/public/images/welcome/new-safe.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/components/common/PageLayout/SideDrawer.tsx b/src/components/common/PageLayout/SideDrawer.tsx index 61e8300f65..07299c9dd8 100644 --- a/src/components/common/PageLayout/SideDrawer.tsx +++ b/src/components/common/PageLayout/SideDrawer.tsx @@ -1,12 +1,12 @@ import { useEffect, type ReactElement } from 'react' import { IconButton, Drawer, useMediaQuery } from '@mui/material' +import type { ParsedUrlQuery } from 'querystring' import { useTheme } from '@mui/material/styles' import DoubleArrowRightIcon from '@mui/icons-material/KeyboardDoubleArrowRightRounded' import DoubleArrowLeftIcon from '@mui/icons-material/KeyboardDoubleArrowLeftRounded' import { useRouter } from 'next/router' -import classnames from 'classnames' -import { type ParsedUrlQuery } from 'querystring' +import classnames from 'classnames' import Sidebar from '@/components/sidebar/Sidebar' import css from './styles.module.css' import { AppRoutes } from '@/config/routes' @@ -16,18 +16,6 @@ type SideDrawerProps = { onToggle: (isOpen: boolean) => void } -const isNewSafeRoute = (pathname: string): boolean => { - return pathname === AppRoutes.newSafe.create -} - -const isLoadSafeRoute = (pathname: string): boolean => { - return pathname === AppRoutes.newSafe.load -} - -const isAppShareRoute = (pathname: string): boolean => { - return pathname === AppRoutes.share.safeApp -} - const isSafeAppRoute = (pathname: string, query: ParsedUrlQuery): boolean => { return pathname === AppRoutes.apps && !!query.appUrl } @@ -39,12 +27,7 @@ const SideDrawer = ({ isOpen, onToggle }: SideDrawerProps): ReactElement => { const showSidebarToggle = isSafeAppRoute(pathname, query) && !isSmallScreen useEffect(() => { - const closeSidebar = - isSmallScreen || - isSafeAppRoute(pathname, query) || - isAppShareRoute(pathname) || - isNewSafeRoute(pathname) || - isLoadSafeRoute(pathname) + const closeSidebar = isSmallScreen || isSafeAppRoute(pathname, query) onToggle(!closeSidebar) }, [isSmallScreen, onToggle, pathname, query]) diff --git a/src/components/common/PageLayout/index.tsx b/src/components/common/PageLayout/index.tsx index 5dc06e0537..88661c7e87 100644 --- a/src/components/common/PageLayout/index.tsx +++ b/src/components/common/PageLayout/index.tsx @@ -7,14 +7,25 @@ import SafeLoadingError from '../SafeLoadingError' import Footer from '../Footer' import SideDrawer from './SideDrawer' import PsaBanner from '../PsaBanner' +import { useRouter } from 'next/router' +import { AppRoutes } from '@/config/routes' const PageLayout = ({ children }: { children: ReactElement }): ReactElement => { const [isSidebarOpen, setSidebarOpen] = useState(true) + const router = useRouter() const toggleSidebar = () => { setSidebarOpen((prev) => !prev) } + const hideSidebar = [ + AppRoutes.share.safeApp, + AppRoutes.newSafe.create, + AppRoutes.newSafe.load, + AppRoutes.welcome, + AppRoutes.index, + ].includes(router.pathname) + return ( <>
@@ -22,9 +33,9 @@ const PageLayout = ({ children }: { children: ReactElement }): ReactElement => {
- + {!hideSidebar && } -
+
{children}
diff --git a/src/components/sidebar/SafeList/index.tsx b/src/components/sidebar/SafeList/index.tsx index 16256a8291..571cef06bc 100644 --- a/src/components/sidebar/SafeList/index.tsx +++ b/src/components/sidebar/SafeList/index.tsx @@ -1,4 +1,4 @@ -import { Fragment, useState, type ReactElement } from 'react' +import React, { Fragment, useState, type ReactElement } from 'react' import { useRouter } from 'next/router' import Link from 'next/link' import List from '@mui/material/List' @@ -9,8 +9,10 @@ import ExpandLess from '@mui/icons-material/ExpandLess' import ExpandMore from '@mui/icons-material/ExpandMore' import IconButton from '@mui/material/IconButton' import SvgIcon from '@mui/material/SvgIcon' -import AddIcon from '@/public/images/common/add.svg' +import Box from '@mui/material/Box' +import { Link as MuiLink } from '@mui/material' +import AddIcon from '@/public/images/common/add.svg' import useChains from '@/hooks/useChains' import useOwnedSafes from '@/hooks/useOwnedSafes' import useChainId from '@/hooks/useChainId' @@ -18,14 +20,15 @@ import { useAppSelector } from '@/store' import type { AddedSafesOnChain } from '@/store/addedSafesSlice' import { selectAllAddedSafes } from '@/store/addedSafesSlice' import SafeListItem from '@/components/sidebar/SafeListItem' -import { AppRoutes } from '@/config/routes' +import { AppRoutes } from '@/config/routes' import css from './styles.module.css' import { sameAddress } from '@/utils/addresses' import ChainIndicator from '@/components/common/ChainIndicator' import useSafeInfo from '@/hooks/useSafeInfo' import Track from '@/components/common/Track' import { OVERVIEW_EVENTS } from '@/services/analytics/events/overview' +import LoadingIcon from '@/public/images/common/loading.svg' export const _shouldExpandSafeList = ({ isCurrentChain, @@ -54,8 +57,9 @@ export const _shouldExpandSafeList = ({ } const MAX_EXPANDED_SAFES = 3 +const NO_SAFE_MESSAGE = 'Create a new safe or add' -const SafeList = ({ closeDrawer }: { closeDrawer: () => void }): ReactElement => { +const SafeList = ({ closeDrawer }: { closeDrawer?: () => void }): ReactElement => { const router = useRouter() const chainId = useChainId() const { safeAddress, safe } = useSafeInfo() @@ -68,119 +72,145 @@ const SafeList = ({ closeDrawer }: { closeDrawer: () => void }): ReactElement => setOpen((prev) => ({ ...prev, [chainId]: open })) } + const hasNoSafes = Object.keys(ownedSafes).length === 0 && Object.keys(addedSafes).length === 0 + const isWelcomePage = router.pathname === AppRoutes.welcome + return (
My Safes - - - - - + {!isWelcomePage && ( + + + + + + )}
- {configs.map((chain) => { - const ownedSafesOnChain = ownedSafes[chain.chainId] ?? [] - const addedSafesOnChain = addedSafes[chain.chainId] ?? {} - const isCurrentChain = chain.chainId === chainId - const addedSafeEntriesOnChain = Object.entries(addedSafesOnChain) - - if (!isCurrentChain && !ownedSafesOnChain.length && !addedSafeEntriesOnChain.length) { - return null - } - - const isOpen = - chain.chainId in open - ? open[chain.chainId] - : _shouldExpandSafeList({ - isCurrentChain, - safeAddress, - ownedSafesOnChain, - addedSafesOnChain, - }) - - return ( - - {/* Chain indicator */} - - - {/* No Safes yet */} - {!addedSafeEntriesOnChain.length && !ownedSafesOnChain.length && ( - - - Create or add - {' '} - an existing Safe on this network - - )} - - {/* Added Safes */} - - {addedSafeEntriesOnChain.map(([address, { threshold, owners }]) => ( - - ))} - - {isCurrentChain && - safeAddress && - !addedSafesOnChain[safeAddress] && - !ownedSafesOnChain.includes(safeAddress) && ( + {hasNoSafes && ( + + + + {!isWelcomePage ? ( + + {NO_SAFE_MESSAGE} + + ) : ( + <>{NO_SAFE_MESSAGE} + )}{' '} + an existing one + + + )} + + {!hasNoSafes && + configs.map((chain) => { + const ownedSafesOnChain = ownedSafes[chain.chainId] ?? [] + const addedSafesOnChain = addedSafes[chain.chainId] ?? {} + const isCurrentChain = chain.chainId === chainId + const addedSafeEntriesOnChain = Object.entries(addedSafesOnChain) + + if (!isCurrentChain && !ownedSafesOnChain.length && !addedSafeEntriesOnChain.length) { + return null + } + + const isOpen = + chain.chainId in open + ? open[chain.chainId] + : _shouldExpandSafeList({ + isCurrentChain, + safeAddress, + ownedSafesOnChain, + addedSafesOnChain, + }) + + return ( + + {/* Chain indicator */} + + + {/* No Safes yet */} + {!addedSafeEntriesOnChain.length && !ownedSafesOnChain.length && ( + + {!isWelcomePage ? ( + + {NO_SAFE_MESSAGE} + + ) : ( + <>{NO_SAFE_MESSAGE} + )}{' '} + an existing one on this network + + )} + + {/* Added Safes */} + + {addedSafeEntriesOnChain.map(([address, { threshold, owners }]) => ( - )} - - - {/* Owned Safes */} - {ownedSafesOnChain.length > 0 && ( - <> -
toggleOpen(chain.chainId, !isOpen)} className={css.ownedLabelWrapper}> - - Safes owned on {chain.chainName} ({ownedSafesOnChain.length}) - {isOpen ? : } - -
- - - - {ownedSafesOnChain.map((address) => ( - - ))} - - - - )} -
- ) - })} + ))} + + {isCurrentChain && + safeAddress && + !addedSafesOnChain[safeAddress] && + !ownedSafesOnChain.includes(safeAddress) && ( + + )} +
+ + {/* Owned Safes */} + {ownedSafesOnChain.length > 0 && ( + <> +
toggleOpen(chain.chainId, !isOpen)} className={css.ownedLabelWrapper}> + + Safes owned on {chain.chainName} ({ownedSafesOnChain.length}) + {isOpen ? : } + +
+ + + + {ownedSafesOnChain.map((address) => ( + + ))} + + + + )} +
+ ) + })}
) } diff --git a/src/components/sidebar/SafeList/styles.module.css b/src/components/sidebar/SafeList/styles.module.css index ad08bcb847..a69c6bb227 100644 --- a/src/components/sidebar/SafeList/styles.module.css +++ b/src/components/sidebar/SafeList/styles.module.css @@ -6,7 +6,8 @@ display: flex; justify-content: space-between; align-items: center; - padding: var(--space-2) var(--space-1) 0; + padding: var(--space-3) var(--space-3) var(--space-2); + border-bottom: 1px solid var(--color-border-light); } .chainDivider { @@ -14,7 +15,7 @@ border-radius: 8px; text-transform: none; height: 27px; - margin: var(--space-1); + margin: var(--space-2); } .ownedLabelWrapper { diff --git a/src/components/sidebar/SafeListItem/index.tsx b/src/components/sidebar/SafeListItem/index.tsx index a87aea66b0..45ad68403d 100644 --- a/src/components/sidebar/SafeListItem/index.tsx +++ b/src/components/sidebar/SafeListItem/index.tsx @@ -30,8 +30,8 @@ const SafeListItem = ({ }: { address: string chainId: string - closeDrawer: () => void shouldScrollToSafe: boolean + closeDrawer?: () => void threshold?: string | number owners?: string | number noActions?: boolean @@ -56,6 +56,7 @@ const SafeListItem = ({ diff --git a/src/components/sidebar/SafeListItem/styles.module.css b/src/components/sidebar/SafeListItem/styles.module.css index 3f70bab02d..3e01d6e1db 100644 --- a/src/components/sidebar/SafeListItem/styles.module.css +++ b/src/components/sidebar/SafeListItem/styles.module.css @@ -1,8 +1,8 @@ .container { margin-top: var(--space-1); margin-bottom: var(--space-1); - padding-left: var(--space-1); - padding-right: var(--space-1); + padding-left: var(--space-2); + padding-right: var(--space-2); } .safe { diff --git a/src/components/sidebar/SafeListItemSecondaryAction/index.tsx b/src/components/sidebar/SafeListItemSecondaryAction/index.tsx index 80a08348cd..ebb30c1b9c 100644 --- a/src/components/sidebar/SafeListItemSecondaryAction/index.tsx +++ b/src/components/sidebar/SafeListItemSecondaryAction/index.tsx @@ -21,7 +21,7 @@ const SafeListItemSecondaryAction = ({ }: { chainId: string address: string - onClick: () => void + onClick?: () => void href?: LinkProps['href'] }) => { const { configs } = useChains() @@ -39,7 +39,7 @@ const SafeListItemSecondaryAction = ({ disableElevation onClick={(e) => { e.stopPropagation() - onClick() + onClick?.() }} > Add Safe diff --git a/src/components/welcome/index.tsx b/src/components/welcome/index.tsx index 01c8732874..212db0276d 100644 --- a/src/components/welcome/index.tsx +++ b/src/components/welcome/index.tsx @@ -1,57 +1,115 @@ -import React from 'react' -import { Button, Divider, Grid, Paper, Typography } from '@mui/material' +import React, { useEffect, useState } from 'react' +import { + Button, + Grid, + Paper, + SvgIcon, + Typography, + AccordionSummary, + AccordionDetails, + Accordion, + useMediaQuery, +} from '@mui/material' import { useRouter } from 'next/router' import { CREATE_SAFE_EVENTS, LOAD_SAFE_EVENTS } from '@/services/analytics/events/createLoadSafe' import Track from '../common/Track' import { AppRoutes } from '@/config/routes' +import SafeList from '@/components/sidebar/SafeList' +import css from './styles.module.css' +import NewSafeIcon from '@/public/images/welcome/new-safe.svg' +import LoadSafeIcon from '@/public/images/welcome/load-safe.svg' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import { useTheme } from '@mui/material/styles' const NewSafe = () => { + const [expanded, setExpanded] = useState(true) const router = useRouter() + const theme = useTheme() + const isSmallScreen = useMediaQuery(theme.breakpoints.down('md')) + + useEffect(() => { + setExpanded(!isSmallScreen) + }, [isSmallScreen]) + + const toggleSafeList = () => { + return isSmallScreen ? setExpanded((prev) => !prev) : null + } return ( - <> - - Welcome to the Safe. - - - Safe is the most trusted platform to manage digital assets. -
- Here is how to get started: -
- - - - - Create Safe - - - Create a new Safe that is controlled by one or multiple owners. You will be required to pay a network fee - for creating your new Safe. - - - - - - - - - Load Existing Safe - - - Already have a Safe or want to access it from a different device? Easily load your Safe using your Safe - address. + + + + }> + + My Safes - - - + + + event.stopPropagation()}> + + + + + + +
+ + Welcome to the Safe + + + + The most trusted decentralized custody protocol and collective asset management platform. + + + + + + + + Create Safe + + + + A new Safe that is controlled by one or multiple owners. + + + + + + + + + + + + + Add existing Safe + + + + Already have a Safe? Add your Safe using your Safe address. + + + + + + + - - - +
+
+
) } diff --git a/src/components/welcome/styles.module.css b/src/components/welcome/styles.module.css new file mode 100644 index 0000000000..ff1af86155 --- /dev/null +++ b/src/components/welcome/styles.module.css @@ -0,0 +1,78 @@ +.accordion :global .MuiAccordionDetails-root > div > div:first-child, +.accordion :global .MuiAccordionSummary-expandIconWrapper { + display: none; +} + +.accordion { + border: 0; + height: 100%; +} + +.accordion :global .MuiAccordionSummary-root { + background: transparent !important; + padding: var(--space-3); + border-bottom: 1px solid var(--color-border-light); + pointer-events: none; +} + +.accordion :global .MuiAccordionSummary-content { + margin: 0; +} + +.sidebar :global .MuiPaper-root { + height: calc(100vh - var(--header-height) - var(--footer-height) - 24px); + overflow: auto; +} + +.content { + background: linear-gradient(-90deg, #10ff84, #5fddff); + background-size: 200% 200%; + animation: gradient 15s ease infinite; + border-radius: 6px; + padding: var(--space-8); + display: flex; + flex-direction: column; + justify-content: center; + width: 100%; + height: 100%; +} + +@media (max-width: 900px) { + .sidebar :global .MuiPaper-root { + height: 100%; + } + + .accordion { + height: auto; + } + + .accordion :global .MuiAccordionSummary-root { + pointer-events: auto; + } + + .accordion :global .MuiAccordionSummary-expandIconWrapper { + display: block; + } + + .content { + padding: var(--space-6); + } +} + +@media (max-width: 600px) { + .content { + padding: var(--space-4); + } +} + +@keyframes gradient { + 0% { + background-position: 0 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0 50%; + } +} diff --git a/src/pages/welcome.tsx b/src/pages/welcome.tsx index 992eb3a691..6b8cc6c88d 100644 --- a/src/pages/welcome.tsx +++ b/src/pages/welcome.tsx @@ -4,13 +4,13 @@ import NewSafe from '@/components/welcome' const Welcome: NextPage = () => { return ( -
+ <> Safe – Welcome -
+ ) } diff --git a/src/styles/globals.css b/src/styles/globals.css index 32af031006..bf4ffa36e7 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -51,6 +51,7 @@ button { :root { --header-height: var(--header-inner-height); + --footer-height: 67px; } .psaBanner:root { From 439d586cc6a87cab1f11076b3c42c89e2c16e5ab Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Mon, 9 Jan 2023 11:21:24 +0100 Subject: [PATCH 017/422] Fix: add PWA fields in the manifest (#1499) * Chore: add missing fields in the manifest.json * manifest.json -> safe.webmanifest * Update icons * Fix typo --- README.md | 6 +++--- public/favicon.ico | Bin 15086 -> 15406 bytes public/favicons/android-chrome-192x192.png | Bin 2621 -> 4296 bytes public/favicons/apple-touch-icon.png | Bin 2501 -> 3947 bytes public/favicons/mstile-144x144.png | Bin 2007 -> 2536 bytes public/favicons/mstile-150x150.png | Bin 2227 -> 2486 bytes public/favicons/mstile-310x150.png | Bin 2176 -> 2733 bytes public/favicons/mstile-310x310.png | Bin 3634 -> 7101 bytes public/favicons/mstile-70x70.png | Bin 1630 -> 1877 bytes public/{manifest.json => safe.webmanifest} | 2 ++ src/components/common/MetaTags/index.tsx | 2 +- 11 files changed, 6 insertions(+), 4 deletions(-) rename public/{manifest.json => safe.webmanifest} (65%) diff --git a/README.md b/README.md index d0c56154b2..51342cec07 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Here's the list of all the required and optional variables: If you don't provide some of the optional vars, the corresponding features will be disabled in the UI. -### Runing the app locally +### Running the app locally Install the dependencies: @@ -100,11 +100,11 @@ yarn cmp MyNewComponent ``` ## Frameworks + * [Safe Core SDK](https://github.com/safe-global/safe-core-sdk) + * [Safe Gateway SDK](https://github.com/safe-global/safe-gateway-typescript-sdk) * Next.js * React * Redux * MUI * ethers.js * web3-onboard - * [Safe Core SDK](https://github.com/safe-global/safe-core-sdk) - * [Gateway SDK](https://github.com/safe-global/safe-react-gateway-sdk) diff --git a/public/favicon.ico b/public/favicon.ico index 499fd349df92e827fbe99ec4642b5766f262a921..5e6e26a3f1d4b38a47669648551f562712c7cd2c 100644 GIT binary patch literal 15406 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 literal 15086 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

Fj?zpmssVSau$XV)M+c2q{IB-5^~ zb%H`3=En1Xa!p>&)9-eWT_MUQe^)6$ZwTe14z85%SI`|vBz*LQ_9Gv}oYty)ZkS(} zX;V*W+QUqx6z~epe)}OOMM&*I=_}d~4~NSZ3rM3bfJCitF+9ytKF;eYX=@wx?Fqyxst*TT7S1L_(@&qwS#5L6W*}j*hv$k*2!yr zs=-=8wgFsKNv$S|UpOP7EiCR_v&29aO(C7aocCbQ@V(ZiiPU8(v!!bE%DE~-Gb1RU zc@K9Cs}N2)4?XWFc{?FSg4c2vv^bJM#(;?X>Au-Nc&H^NhnqOHp5;<~UCbEMWuaWT z{aBmF(sEH1G8;Kw%+qH3f>W{`c&!JX7<4FzAr)h%)deVT2x;0Qah(hPleO(>%^9)7t}24SDuWz!f+5dT++e+H1L@&>F??L zv(CkN-`bk8$)6^2EnlvmJka}8XcH;fw77NMR?TzA6@>Y#I^2KBkh2|dt+KXACtdRa z{!i}Rx2uRA7Ps=?{&wqh4N;wGZe1MZ>txCMoHJQft31k`V*GsCzxa%9pyZ%F39NZCy7H3l z#*90)!u`&D)lVxqhlIQ1A3s zd&=Ak%^WAb+-d8OkL4Ywd^vLTbS2rVZd z+gM7O{^z>rng61Dl0`~ zXS7JeqhR%s6W(n>zjvR~o$`8B?f6vExAB&h>oSJ9_rprT-jjE3S-8f9X;nY@F;3~x z>$ARnurHFzn*A-Xv&4z%@FL&uUhwX*p;4tfgUO5C)ZE%6y9GQi)Cx_r3b3r-L`~eb zcR|qM0XP4UQf-5--gkWeM?n9P)i+th6dWF}1}{e?@n*BBSXDQ_+w~S#3zvR^RZNEf zW<)46(mXsNatVk&OeKelKSt2 z#^tH(C4zsNZvfLfltqn8h}{ysJ(9{yjf3SVl=^T$n%t&Q@H{4H#!0v8?feuWrw!q({I(i6nl L!Nb1HHYEEm*vAe) diff --git a/public/favicons/apple-touch-icon.png b/public/favicons/apple-touch-icon.png index d7a0ccd3f6a34632908e3fb6253596ff8b1743da..06c2c126dc516540c88e822d5ec86a43891bd0c7 100644 GIT binary patch delta 3793 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 delta 2336 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 literal 2007 zcmZ`&X;f3!7QPaOD1;>U5`q*kG8B}BB!nRb5rUy%CJj-kwLlC3QU?O2Ai*JkRY1Xj zf_2KnIxL|I)lgJg)F&WlLc^pFDWX)MQHxRmYk=0Co1km;$2;rfoPGBGzWwdJvu-gr zmV;YlzX*aLTtqmV2W|!W!(zbM^$lDCF4Htt3=4uTAF`Yin1MG%7|x4i3AdXXajB{4C00b3?m)&BSe4)21+!jSX)~g zk@F|Of{=lWf(;llnGBrZiKaCO+S=Np1-#D;oG91^2GxFW0svZ-VSy;ffVah?NSpbz zs1OX}@pyCsc>D)BfB{6%2&!dh3cv^i0yvErRNA-<0Aud}3H)es7 zqZV)i1MT8H9i53`8blIWKdMV07;V4>8`U+=*>KJ`2QE;ZWPiGIW7PjZM5y4uYU%w7mC|L=D5=fl46oyLa!x_53(c;&mx6HXgz(c6PK_ zB|M-;?yQx#9rb}UcudpZM`y*-h%r>OKy=ik5D zdenPOo+pRAQ2%)CwA6KI?mxZ@1dQ*WyWEfYt!*oFDUK*^elu;pdiZf5-`n$MlY5rK zy;)ObIeo+Jg#*|l7mKTYcyzQ{*Hn1L4A^yz`2L8CC0AYjx+Plt|v) zMQ+Q>+0Gnn`H8_l=W=?y#YuE6o&NZhX4TZr-9y@(q54zDc6F`}RP8M)I@t0yX2Qaa zLWoCvY5gCw=*v=ks?s7o66h5*0)|pN%uo(Tw@a$FP(@C8xr9Sa~5mTH$MH zb-eU>`IwxwJ(D$gt6G1pny>(-p!>FY+k|<^D6TWoONdO0;>vAGbg5Np{s8l}pf?->#o_Kc;EE*~{*fWYboC_HaxVZjCvz`O5y0 z?jU_?UP86WP{@zD7_r`zX4b%wn}*BpeAJO7H`VRIh~m{>hY5M<%RD3*nZ>WZi;5Sj zFPe=1;+@3cZo}!S*VGW5gl0N!an`wp+u@4aB%#}-?fr8(7YY(O8)Z#$4J`Q)b=MkT7;a*w@|m+RcSE-FIL0bgb|~OY`D^z~rul^}jwb zKlgRy8rI0jvO{x&y)pV}97zL5DWc=1Mm$G%wa{4!_vUD;>0)Er1` zGFkA&Iqk~|FH%=jHul1CS#k0Ksv|pC0FMOjD`@T+QPBidYRVJ zVrSmLpQJZ+z5>5?=Gx!)zk#1-9xh4x%lw?sj%d+WJU(#7F( z9UZ0?PXE!Sl@Rm=I(^BLrH?1-YCoT)g`AxXtY|;*CLktwca_|)EPtuS-TRDe_x-}2 z(wX)R&d%?6yD?LG1nQqds1Zj#uDq;$=MBsvas6IYkREC$2FP}zd`uQ{I zR8K0ENu}zAjA#EMY|Tg!r{?~DLeXmZT0mGY<0nXYf*gt@D>UPQ`G%^9j%&HhgJ)< cJiIz`1@xRul)eu2s{|5IL|81lE;PB|9}SV9cK`qY diff --git a/public/favicons/mstile-150x150.png b/public/favicons/mstile-150x150.png index fb093e7d4382d2b36c65cdad07bb4bbdae22651b..38e4709b4f0d46a815c53abf665e3e28cea43b6e 100644 GIT binary patch literal 2486 zcmZ`(2{@Gf7JudIqebP|HA&gGF=cBk$ugGI5VA&vk(ntphOuOjrAX6eecEp|NbwPk zENM}LQI-}_(QS;Bt)VDi%zf3Z=Ajxo<^~cufRJPD79x6iOaK zkZ2r&eAtB`<^>3%5P7C{n7q;-Q8KC}GhZj|r(y~UqI>x~Ek)}4^JnOnu27EDe7E!9 zk2Z}x-n8csm~u~6m*<^G_r0%Ni8J_Za|!_&R+ClgA1V5bS#YJ>NB$ajOGXb{jL z-4Vjfp*j$(G$EG=7Tl;lBkC6Mq?;0C))A#Ry?58ex!nPCeI;@9;qef@Q(Y&3=|By6%V zTX&*MHoa0`tlB@VYuSza#9?Y!i*8}>nt(8+Lf<^{=0oznJr|G16a<8jNO=LF)3e>` za<^_6)tvWb3>vl7pKBbm9IP1cwtG%WDfC&2>i&J*Gc58B4`hyS)YO~#gl*;-v~~97 zl-!=3;P)&#p&uCOlQc>ilatzD`KL~8)>3_JSKqtG7Z$V!eY-RuIhu~e;9tB{JUfvQ zR-R){DV{dTR`M!t@VHE`kubbKe53nUb#u>fp&^A+eW`j@ z&)bzB=1BZGOsZ)#$;J~Cgm<$i-f#bu{6*M%x{h%#tdXi{WLz_DeIRz4v1rb>6jJv*(`pKBCm$DRclL$nt9|vm6<%iPP&Ayr(?E+-&Uvp9*Ejj< znUne;FaFHshCWU2i7JJfNBdLtxh=iJ`-mqjM_0ZctZ~j$i;Z|nSbesC#FT66%X-t0 zckXH--+1)1X%Tf$k=@W2S|7?1q8awCFH12F30C;#69UZ9aB7+b*I>XYrgRv?N#DR7 zEu*TBNm5yC!jaeAHIrp-0v{S<(#l07xcz`Ry_otb8^aspY1`%trd{Tp$W!kkWOhqU2&g8{M!h?1!FP^kv@A6okD!geAH$40XrZe0+h!7T4kiRe3gXzBF zI>!Gdd+%A&ELXY$!xrXx?-5yls-EiRT(MNCz`U2FRW)=TxG*$j)=$Z%vobgyD*ZFW zoTz%L#jgEnQC0hHuI`lX#f+o1|G;!mtW_)2s_+;lyWtLP(-AvXZO342|Hc?%T9ok% zrr1F0aFC!U+p)T7|L&~ck>mVKZ9qaN3frtWXY z3K?ESYdgG`WmUS0b}fs-vZ`A}d730$iShT-FnuKI5=I=nz5ZgW@UvN_T}7mCF>S;u zN4~%8WnEL6jw5elx71YP^z2D`(X+twWY+2(-7n@Yy{YOQHhR=KX3ljz`Giv5Zp>{j zi=rP_YcYJOj`GI+m-UP%gq3Sa;CHMDSlm*IxmzcDa>&*4>)>@+{o!KH;q-8&b^&yI(sWX^JJ74If4m!wLMizKO%Bk92i5_^U}u~c%u zm$r7RE3eI2;Esr^Ex`sakx`RzIVCGDqiUaQd_P27?S`i+@5R&RrnV+blLRl>>B43# Y@1y+kia$}2YpuxT?~=6GE=357RA{*+x7J$a?w?f4(Y7kOqU>aM zx?@wOa;xlUi9$)ag=JA#YUi$6N9{R#=FFTk^UZwkyx;fCGxN^#{_e^Z$)50~Vw|_Q z*+@u8Kz#6jog|14VKNafLU4tFEEim5peYnniRk5ky#eZqkOLqKd0@2?VmIMK6h6kl z#|SdAkd?(AQ+$p?t~(Zg|A!^=xZ#Bz>+zEe0!e(OD13?mT?;ZYaMZ(S9EM|Hr3nWe zY|_L)6wK678;ljpu-_8SYcL*<^UhFSf&&}zXDoWyc*jB)3vH1o^+Sj$2nDQMhN=Jz zMdP#+9CSfbg{}(pRG_U4B?Y8A;tPfM2jF7}#l;jR8x3=S;4c4jRs2$38<5@83 zg3%I=cl%(kgT}q6+zlONlKG9L-^P9frRB5Jh7!8Yi}3l_HE*;B5r_j9{sOhP^oE051cK#NopMs4T&g z0DPkmL_)wuo(CvvSZm=|Hze6$JOL3F*r0)SDiY!5u+srQ2xIYh;EOmqb{pfeJNggc zfgh5825mXy<)BI6Whfr`<2MhmHefmtIon{N0p4b45!kpIHd^pAM%rc!N8`RPn8rwT zz95B(+}I*TGG2B zm@}-*=pPC1_s!ShV|A;BqZUFc2v4>d8%l{T4EHfQy0WJ&&UV!&jF-)m%Xm0fj;hq;dNKPy7OGf~HCEEB6Ul@? zRf>Ef^`EN7iudUZ{qU)IJ?xZpriPQNTWsk05E(~y%AY;jg9W*Ey#lRNi}iJ~79I0i z`FZA-_yS`0hvIXwi&}Z^TNzm@u|iF=hDENA@3v=j&*?Lnlwa-1%iOlrz@++@req;y zLLYiee@?jk5qSkEouT_5cBm(f-w6uZ zKc5QePp78{CfReImHBpjxi8@(lB$_n;5hZOj^dj8(GS(nN(b-gUs#uRF1^4z%8UQ& z8?{V@H-;={6FE9x_=kh`+KOCj>ef*evYWyC*r3(K(DS<9{b6r9Kd#zTAfva3l8zbL zzhc$Pt5066v<>zus(3Q`&l6Lcb^OB8R~5JK``OG23C>!nUnrA7ZzXhEYr5(hoTLM# ze#}wc)OJ@bi_T8r`A?=L^UWgo1}R!(Rh#?H8%^!W;k$~ADhx~2NNei3UgJqRQNjw@ zW$~;=%`~Ep{HXR?D_kn`+)7Ssaod8n$<*njIl_YQ@e6ZUfv<$?EQ)LPRd4d)jeagA zyOrWe!G)-0ne=Dx>)VM_?-ho9dz8MCqVnn&gvaoe$gzYgo}upf(lyD-57SO=e&n;gm zoKIFgK0dK`5;ydd)_q2;pR%`|74@_pX(pwu{0^9(jBDyl_*09? z4qd9wjgDoDK3!|!1$}9H{0s41G}7l;P@Bb!D-+w*u)pca8Bna0zOTndmgIIUIJ0J~ zH>E5%l&4<)d1Jlk=7Lmh?wz3gXDYX+8*9D9o~b(A;Mm{lM^j4guZ?@N&4y=V+ zc^AjOkR3TxxQBG_>-L*=oV3U%;^d#w-V%esQ&-EvI74B}sYa7WIjPyDo%)*97q?p8 z@V>UnH6zATcktfH5_YP+v4U$(iRrB6GN;Cp)|Q)J9k|h$CoH+}yQT4%`|N~hHXLz&{Ss{|mbBzX;$>A-eHJI)x=Ug} zGU0NXjmEX?r_F}k#o}9JWg_=f#dDe|ceFakAgWk9#A(DTXDcsOGp;3~DJuW86ZnBcWm4!eqpVVOH(xLT)qJ)S?s> zw#{wS)Fx^)LM79ED>L1OET!E-^Bvpg`*xr2`JQLb^MB6!zQ6bP-p+Z?$@BJfo%^Nk zmk5H)rEPTfL6BJ}f~d^XP{ok4zIYc*%#L>Qa6*u?1-Qv@HOw}Q-00(hAe^NLlAVhn zA2BHVC4#Um5ajh%1hG4WAcUmywoMLLvJ!81KPpC;quc|^oCV5k_@ATmUnECM`7NSE z7ASK*(=g>f`e#I2nTwy{BY#&6XH1N#t<1)1X;0_LovE0Ef!NWSrsd52^FHJHTUQuo z?sT`);O9J;GLtPEtNzz15M|ltw4eE(UDy0d#d>k1I@O!5^7GHG>2PDE5FW+hE-?NL&m01fY{)kq)>lhw%*PU_y{Jc%e|> z4jJp=Lnd5{0>&y>hzDr`eAoqiFK{*kk{%fALa7&walmysP)y)lC`8+V;UdU#hVxsY zFBYDsz)vAyv>0++;9>;aiiO*8@Gb*rD`15_m=eKh8Sq@-bt>G9gD1(b$_Pw!;RPG2 z{ULJ$MB0Fz3DgCFI~kTNhKEUDMuaIY&{smBH4LSK0}1xi!JY&L1UMB4pSW<`9|(9@ zvjp;J5McvDJE71WeoX=o6zYSaAp}+$z?(F9l?vuxL4Q03plJ)NT?(b1KwJnq+K{vkdSZa>2#uk@rGld=EM5pp^?*r%L*B4;4Wv84 zZ|O>mzJlZeQX}vDQIz7+f-)8OK`^8C( zmgbr~cQ5@nwbY(pmSp06d1vHWp6dH{ zldV1JDpo-yg6``4pltR+JZ7k;&^)N>FH|%&EzET8vVKC4FE-Jfo&3`74?mjV=Cg^{ zM$d+~T9=h}-gPTXa1j&t&b#I0%8tQr!0Erty;W2Km8wmCcDByyuS`na?3Nwr<$Cb> zZ$f`HnAlZ6ak0L4u|{QD1T`gW;fKUeu) zYv)b&44<(vB8Il5Ze%ViQM&0E+_}M7{BvE+#LatN)zya#I;jH_2R+u}HtdrplCA}s zI}Z>ataupsgHB0sgL5iTYCjq5(BKuVI3ni#e9_3^N!#&{r9p|*6W3Q%Zr<{EpL@xXMNIP1fXmWjwhFxj^3k0|;}NrM469B)H1<)gvoWqIR;Pwy zZn>^l9NVjTYSKtWb0V!)j zUsmMa^U{9>3VTwR1}A3_jhP zh!b|?56(H+x=vv4<*OnzDIJ^>K#2{~cO%QdCf~aJwOC&19cv_LO)d{VVk}rK<2fXw zab0TZ&lm%RxG}NXa;#5Q4$p#Mz`nVkQQ?Ss8xl-scgvqr3LHN6E{ou=YtFhdC@a#- z6*?4V(QX&NGEZbUqZA`=6enoO%6#Q3E5gl^k2NZJ(P9!oV@FU~YUfg=T5k~@O)7u7 zBcJiZt@^ab+{-wOM~rU0_th1CT}(jy+px1d1}jG~KkQv+-)kEuF)2VeFL@&0pX~0X zytbRc;=jccF1#D-=59!1J~(Y3BJxCq%lpi5ta~4W2MeF2iauSP#iH>JvdX5SPD^)Q zprV@debB@SG|(N>JkgMrKN{|OprZs+!Ols`c=z)aU0kOr16JN8N1<)ji>xj8)f7Zw ze<6KR?YcaaJLeqM{p{<^<`J!5F8sbuDC0Q_(=zmK`~LCd$~$Qnsgfsumf1Kmcy)@r z?nC4F;Urm+x5|zfRiO!9=$JF};11&Of4=(NNvt3`+J*N-uZ^pj`0`&SWKTZTYmSk$=UQbgdU}}f?mLQ=0%hQgh`_#K3TD7NDNus zDn@>IT%DgLD?-|X2lV}HSie0O;Wx5F6yx6Td`#5F5B*wW`}793Gn#96eAvYLx2M=n z@JLqV7%m@s>)Dl1C*5FnhOv!1(mAuDyMrZ+SPYIi&O|fMU^1799>Zj9pOpZx6|7bKtG3>427rie^sMS>r z_bI|lCAJE=M#bIbg3$rVf{w*&n*0bsTCVdquMw8Vi1aSw1N(i#MY<}b@AEJ6&-FBK zIZ(0JSQ%xvx{qVcQxMpw_8Ee)D)ohPh@`_x(J6LLSDMCAes@ra#O@zDUdB>>4320R z;(dQ~r>}Mz7uEd2eQyoHlKJ_T$IM0XV>M3qG?{%hU8RCB%c~sifAnkqhos4ZOGu%M}(Db`}88nj5LIIw8i~_3)}|NZRkaPBvsYc&rfPi7&rou=U)<5%LF`bMWN)l+Ly^~n V1u0|eSC>xDO{01`*RS8o`xnVYjYR+e literal 2176 zcmaJ=3sh5A7JUke3L#$-3?Na|VlgoWM2MCMBm_hd`34EdFKGNFl86EovBHcZR48j` z`3#OQ;K)oB#PStm6)F%>B4Pz4wUR&tffB=4V&=Z2W9_Wfp7qv!=j^lhIrrT6?)do z(P$XNV$e7=4u|{TlSm{$03iy60x4Ll4-Eu79uGUfa2NyvVJHGPpb=Psfh>$;VWEYE z1L`OaasMB~duo|Ii44pfadqXllR>MUY4&EYUvzH;nn~Dd{VN6ySU;`L!bs z4G##UhBG%D9R_1&X=Wf8_Kd{CTDYKr@V{YUmBH6{L0h1~;UEb}!=b?yK2!#K(`$7) z-8`z00qR~B2l@v=Mj`*~80fy1U`pv7_NBema+b-bZTEj&H`J#fymKkWZd;gLv}L3j zml?25kXv}=-&WP{udlFw7{2_4^m8U%#C|~B9OPiL%4~z<;?R3}sL9eSYI}?ta{+5Y!H};ef(G^L(41?E~K2# z_~YQ`&+uWo2cPU88yFS^hgjZ;*=cOI$Id|v4XC*2Y=axw0DkdH+%wlC1ay<`Hic2?M`g^Tw3YO;G#XH{nOTm@0u*+J|c3v_VQ6J(j zxEPf=?fZbop1L_a+ymw^73qcr3*_Oz7sm z;x~#L303ma^3!1*H@Qs%<5{DpYYuZLk%H7d(e<;YJNGN^Hhmp>Yx|p_eTABXZ8|S$ zrt#~>H+=(+3r1IGZr2G;Ylw=x66vT(XTq?5PE>|S4sL^|Ip|hD)biEjnUTqvau7PF z1tjZuj9Z-*(o>w{T6R*wE@_1nVMCT^`S&|3m5;}qyX;f71Cx*UD(*IDu?%9`+fP#5 zqQc!iB|HqT8}{h6C9nDa5Ao4A(YwMOl&_G-t@ zRm>*(X<~1FABIrYC`JVjOX??{+sI$=Hqym)d7SCAnNyne@l;9PUUTb1+O-SFg>EKU z%kaAHzRKv^`++!ic|9pV2=*8(f&2O#g<7P+$3OO_d;${K-`$RnF3L+Gwo&5+_>NZp zYBNbm%GpP3=N$zX?S}fK^gFZCFQdLVJgw`GCHtmbh&q#jN6Hr)B0;D{iepOE~=0^7@Zp94WyN-#$p7;}OoOcW&W5A#Uk zWFe2l7mDK`=w!*D+HBdeP<#8%-O>j>%0S4-&Xf{oinYV~=Hra8BxbtPy?7(L+F+9O n*^~Cx2d&nvCen28f9#|{BLuWq?Xl%=patZ^@@HQ2i2mZg!zTwD diff --git a/public/favicons/mstile-310x310.png b/public/favicons/mstile-310x310.png index 5915b7c13682d6c5da0d395a7454b67740db69a8..3dee417753ed6afdddacfc9a0ea30bb3b6b25fad 100644 GIT binary patch literal 7101 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 Az5oCK diff --git a/public/favicons/mstile-70x70.png b/public/favicons/mstile-70x70.png index 0550528f3a16cde8cdf32b76147c134eb415346e..888b1febda63b34afeabf813cfc482364fed7628 100644 GIT binary patch delta 1658 zcmZ`&do+}39R9vxj9cO78iSdsb?G{id+}j3Qlv34yV*>oO%aY;F7eIelCmwK3t@FR zbUU@no}$uBN=1oODk)K}Vcg2yw^Q1-{bSF0&+oj?<@Y@Qyzd+3XLB?BaFUtlI<5i*LtmDC8~Y|ZQn@}2aV8Qlv{0-=5veAoj895B=YbpQ>3 z09%kmLy-@7F<}OWg}6T4+YbHF&=Up6J)tEOPI4h<19U`yksg%z!f-6S3y0Gi!H5dW z3}GY=F7RNfA(&F3dI$XO1-hExX94lfAY2W39Qd>s?2X`62s{o1JuPSsg_<3}w}b>1 z#IvAx4@6?H!~o{&LR%PEGH@`~gVr!eTn+x#@E`yjje#)_%o*Tq2Az?xdLfulLA(v7 z5}<4|WV*xQb#TTTdZVDw3zFGz&<$>Gg|0~Gj)Dccz%z&T2w<54?g9@3Ajl3r#sQNC z`(44_7?#t)b^*jX!Rt_PFb0|q;A8Qy%?hYmu-E|3@u1iTUIxQp3|#sNEEsTPJzVEQ zwg(Kv0GA2pd7!TiCpb{$PY{GiseF#~;jkh&9$pB2%ZbX4fm^h>ArBt}D0CaqM$1) zrGeqfvKd!%BaP#8g8FfSVWS4B4{Oss6&LU=cP4NA;lhFJ zOc@TEVAw#~9(d8e@#w2m^3D-~O;Y!VixG`J8Kj18G@+(+ktIU9sJ8|U??#8SclbC> zH7@61a;s=wF`tY)F-=oiu0ckX1>b&^xY9!Gq=Na%)W4s5w$ZLoPUDZ9O=2xO6TI+f z43=N(INi9LMtqXHi`qr)yP>|ql70of-Yk3l#HLTGFE$-`A=eu|IrADvb~^7CJ2tn( zx}Nrn#Pkg6FFm_#QRpHO%vBp`p-{EZl9Th<>H2#bcyG=*3;L3JC#t>PsB~4zc?>Id zc`I8d&dF=ntUo}xpAejXn;lIq9LB@aDxOZF+OfWwX%+V;(X*0<_C+3-ycs-<5L??c^8D9SH?J{Ff!VHi4{GBx2Yp>SJeu11ra@2-e?F4kZ9cIjn-xJt(D2Gw&KmmPJ8ziTb_ ze&RBb-Zie&9HNf}$>d^ni)RLgG`H$`QYPzydq1A=BbMBpjw2sJCD_bpWX+-g$re;x zy3LP+RcT{lpGwk8d_+LwAUz>P-J*EoT0d8n43qt5d+?FW06n_DMU&808-8O@3*S7N7a)q z@_W;L;;y~Wc);=Fo$2^UxI3ZdgxlE6G4-4~9Rhh`ljYwMaXVVW&r+HjdRwkxb{&8-(P ZnYK)3QHsUVtegKUKYw*7GfP4a`5UXR&WQj3 literal 1630 zcmZ`(dsLEV7=Hy!M3KuUV8)C}o2w%tnDbHzrYWTuirLB>-e^{)8H#eI66Qv;rpT#7;C$Oxh=Pd( zM*;wVC=3aVfTs$*@mT0bx_6Dk1Gi2PCIH}Ek&Qmi66UOgkccn-ri)e3uB7Csq2h((bzNr9R_E@iir!03|ACs<%U)fi^Ct$+{+jJ|Tc1bxGCoin;?3pFkSk;hh-EDv zo;OCewqu{MX`ALwl32?5C#QZD_6iBk}4;+|`wvBUW?7G!)-ixLc#vdzQy}P1RQfpHX zqsw%smTq9!?{0D-wCS%tyW@M6*Xr{~$K!dozW8Un?8W50?ADf+7QY=7oPZ23BfiXA zoSBtURTR!?7#es`5Hr~2CN>uGXIIxd-82yMoh26g-(Cyi%JP=+W2NrL>lcsbCiq(y z18XUvLhDxiyq2$3^QXn<9S;|DgVi}Jdjti!O9n^pmgKmuE4d!5p7(C4x?`>QwYc){ z6sGR>t5$zIyG5J1!8_EE10hL1fw6zggA2XTGMPnew@fsr-&7z3U4 zOOXqBM2hK|z4u7S{5|{`9DP$1JDo`Vu92#860UuLc-cI-lw6k6S9=W8FS7F2zODXB zdJz;>WK7jHMP1yphP_3NdG~P9RgZ}YkJP>bT!e1y2{yllVEd3~g&F;V=1@D=sru3k?Nf+O*xTbqb~vk%?YVVc-y4xZx4wq|^kjDCQtQKKzfo0= zY`fgn8p_zvY3VRO*Kkx;c&>S~E^gA&0MJc~>$i1cXq#+812E#L%SW%^6h5&&QAXu@ z$6k{1!tuK8bpy0`@0>qDo3iKip{RS>`=Tt-i7un)q+FRht9B<>Ta{txI&~*+Of#zJ zFA2Ej&Ny9m&c$+Tt7fXdP+fn%6LX+cF@dQnQV3PJ5NVL0oERyMsPiAAMRu3!3!S?> zCa0GYgzwMD9uv-1%;XaMJH-qsGW2!flMare4X-8kNETu+Gy&v${BFOM^y!|~;C#uL0>eMU%0O-z<$|35*qSQP~c z(MriGc|@Fom6o0=OWv5ol4qwSv69o|2>@grd@^i{-@MY*wJBWJEPNILuybtK2{yj-fK>f2 Do ( {/* PWA primary color and manifest */} - + {/* Favicons */} From d40fef809fb82766d08cc02787ce0472b838fa36 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Mon, 9 Jan 2023 13:21:05 +0100 Subject: [PATCH 018/422] fix: Downgrade RHF version to 7.41.1 (#1494) --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d47f35000d..ccfd7859e5 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "react-dom": "18.2.0", "react-dropzone": "^14.2.3", "react-gtm-module": "^2.0.11", - "react-hook-form": "^7.41.3", + "react-hook-form": "7.41.1", "react-papaparse": "^4.0.2", "react-qr-reader": "2.2.1", "react-redux": "^8.0.2", diff --git a/yarn.lock b/yarn.lock index fc8e8fd07d..6e7a9db8b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10864,10 +10864,10 @@ react-gtm-module@^2.0.11: resolved "https://registry.yarnpkg.com/react-gtm-module/-/react-gtm-module-2.0.11.tgz#14484dac8257acd93614e347c32da9c5ac524206" integrity sha512-8gyj4TTxeP7eEyc2QKawEuQoAZdjKvMY4pgWfycGmqGByhs17fR+zEBs0JUDq4US/l+vbTl+6zvUIx27iDo/Vw== -react-hook-form@^7.41.3: - version "7.41.3" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.41.3.tgz#1b85e95e70cb743d41cd9230ea2df71359d00151" - integrity sha512-5QNTmqJtDb88WV5n41b6+AmcDMVyaJ3tccPgHAgS215w3jZ3bmJhDO27kNTr8u4YHNYXmS7p1/4/KachBAlUtw== +react-hook-form@7.41.1: + version "7.41.1" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.41.1.tgz#0e25e231550d477c5774b7f5a4ff800485281e6a" + integrity sha512-IHUozfwuqE+P201KIJwotMd+UCKqzIprseR8UUjz1jRupkZeubg0xyeMLIaT192zHv7vBBu9bibpNV5cIB4E9g== react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" From a1c0502cb2f05cb881027fcf696cbfdf41fd867b Mon Sep 17 00:00:00 2001 From: Manuel Gellfart Date: Mon, 9 Jan 2023 14:47:47 +0100 Subject: [PATCH 019/422] [Spam tokens] manually hide tokens (#1377) Tokens can be manually hidden on the assets page: - "Hide token" IconButton in action column of AssetTable - "Hide tokens" Button to enter "hide token menu" which lets users select multiple tokens to hide / unhide Hidden tokens will have an effect on: - displayed total balance of Safes - displayed tokens in Asset table - displayed tokens in dialogs: Send Funds, New Spending limit - number of assets in dashboard / overview Co-authored-by: Usame Algan --- .../address-book/AddressBookTable/index.tsx | 88 ++-- .../balances/AssetsHeader/index.tsx | 15 +- .../balances/AssetsTable/index.test.tsx | 431 ++++++++++++++++++ src/components/balances/AssetsTable/index.tsx | 256 +++++++---- .../balances/AssetsTable/useHideAssets.ts | 93 ++++ .../balances/HiddenTokenButton/index.test.tsx | 85 ++++ .../balances/HiddenTokenButton/index.tsx | 45 ++ .../HiddenTokenButton/styles.module.css | 5 + src/components/balances/TokenMenu/index.tsx | 53 +++ .../balances/TokenMenu/styles.module.css | 38 ++ src/components/common/EnhancedTable/index.tsx | 41 +- .../common/EnhancedTable/styles.module.css | 13 + .../dashboard/Overview/Overview.tsx | 4 +- .../steps/SpendingLimitForm.tsx | 4 +- .../SpendingLimits/SpendingLimitsTable.tsx | 72 +-- .../settings/owner/OwnerList/index.tsx | 30 +- .../sidebar/SidebarHeader/index.tsx | 4 +- .../TokenTransferModal/SendAssetsForm.tsx | 4 +- src/hooks/__tests__/useBalances.test.ts | 70 +++ .../__tests__/useVisibleBalances.test.ts | 224 +++++++++ src/hooks/useHiddenTokens.ts | 10 + src/hooks/useVisibleBalances.ts | 59 +++ src/pages/balances/index.tsx | 21 +- src/services/analytics/events/assets.ts | 29 ++ src/services/analytics/useMetaEvents.ts | 11 + src/store/settingsSlice.ts | 20 +- src/styles/theme.ts | 10 + 27 files changed, 1515 insertions(+), 220 deletions(-) create mode 100644 src/components/balances/AssetsTable/index.test.tsx create mode 100644 src/components/balances/AssetsTable/useHideAssets.ts create mode 100644 src/components/balances/HiddenTokenButton/index.test.tsx create mode 100644 src/components/balances/HiddenTokenButton/index.tsx create mode 100644 src/components/balances/HiddenTokenButton/styles.module.css create mode 100644 src/components/balances/TokenMenu/index.tsx create mode 100644 src/components/balances/TokenMenu/styles.module.css create mode 100644 src/hooks/__tests__/useBalances.test.ts create mode 100644 src/hooks/__tests__/useVisibleBalances.test.ts create mode 100644 src/hooks/useHiddenTokens.ts create mode 100644 src/hooks/useVisibleBalances.ts diff --git a/src/components/address-book/AddressBookTable/index.tsx b/src/components/address-book/AddressBookTable/index.tsx index c371bc308b..5126459ab1 100644 --- a/src/components/address-book/AddressBookTable/index.tsx +++ b/src/components/address-book/AddressBookTable/index.tsx @@ -82,50 +82,52 @@ const AddressBookTable = () => { }, [addressBookEntries, searchQuery]) const rows = filteredEntries.map(([address, name]) => ({ - name: { - rawValue: name, - content: name, - }, - address: { - rawValue: address, - content: , - }, - actions: { - rawValue: '', - sticky: true, - content: ( -

+ ), + }, }, })) diff --git a/src/components/balances/AssetsHeader/index.tsx b/src/components/balances/AssetsHeader/index.tsx index a2fa351654..66278b13d4 100644 --- a/src/components/balances/AssetsHeader/index.tsx +++ b/src/components/balances/AssetsHeader/index.tsx @@ -1,20 +1,21 @@ import { Box } from '@mui/material' -import type { ReactElement } from 'react' +import type { ReactElement, ReactNode } from 'react' import NavTabs from '@/components/common/NavTabs' import PageHeader from '@/components/common/PageHeader' -import CurrencySelect from '@/components/balances/CurrencySelect' import { balancesNavItems } from '@/components/sidebar/SidebarNavigation/config' -const AssetsHeader = ({ currencySelect = false }: { currencySelect?: boolean }): ReactElement => { +const AssetsHeader = ({ children }: { children?: ReactNode }): ReactElement => { return ( - - {currencySelect && } - + <> + + + {children} + + } /> ) diff --git a/src/components/balances/AssetsTable/index.test.tsx b/src/components/balances/AssetsTable/index.test.tsx new file mode 100644 index 0000000000..e513560925 --- /dev/null +++ b/src/components/balances/AssetsTable/index.test.tsx @@ -0,0 +1,431 @@ +import * as useChainId from '@/hooks/useChainId' +import useHiddenTokens from '@/hooks/useHiddenTokens' +import { act, fireEvent, getByRole, getByTestId, render, waitFor } from '@/tests/test-utils' +import { safeParseUnits } from '@/utils/formatters' +import { TokenType } from '@safe-global/safe-gateway-typescript-sdk' +import { hexZeroPad } from 'ethers/lib/utils' +import { useState } from 'react' +import AssetsTable from '.' +import { COLLAPSE_TIMEOUT_MS } from './useHideAssets' + +const getParentRow = (element: HTMLElement | null) => { + while (element !== null) { + if (element.tagName.toLowerCase() === 'tr') { + return element + } + element = element.parentElement + } + return null +} + +const TestComponent = () => { + const [showHidden, setShowHidden] = useState(false) + const hiddenTokens = useHiddenTokens() + return ( + <> + + - - ), + {!isNative && } +

+ ), + }, + balance: { + rawValue: Number(item.balance) / 10 ** item.tokenInfo.decimals, + collapsed: item.tokenInfo.address === hidingAsset, + content: ( + + ), + }, + value: { + rawValue: rawFiatValue, + collapsed: item.tokenInfo.address === hidingAsset, + content: ( + <> + + {rawFiatValue === 0 && ( + + + + + + )} + + ), + }, + actions: { + rawValue: '', + sticky: true, + collapsed: item.tokenInfo.address === hidingAsset, + content: ( + + <> + {!shouldHideSend && ( + + + + )} + {showHiddenAssets ? ( + toggleAsset(item.tokenInfo.address)} /> + ) : ( + + + hideAsset(item.tokenInfo.address)} + > + + + + + )} + + + ), + }, }, } }) return ( -
- - {selectedAsset && ( - setSelectedAsset(undefined)} - initialData={[{ tokenAddress: selectedAsset }]} - /> - )} -
+ <> + + +
+ + {selectedAsset && ( + setSelectedAsset(undefined)} + initialData={[{ tokenAddress: selectedAsset }]} + /> + )} +
+ ) } diff --git a/src/components/balances/AssetsTable/useHideAssets.ts b/src/components/balances/AssetsTable/useHideAssets.ts new file mode 100644 index 0000000000..f5b36a2050 --- /dev/null +++ b/src/components/balances/AssetsTable/useHideAssets.ts @@ -0,0 +1,93 @@ +import useBalances from '@/hooks/useBalances' +import useChainId from '@/hooks/useChainId' +import useHiddenTokens from '@/hooks/useHiddenTokens' +import { useAppDispatch } from '@/store' +import { setHiddenTokensForChain } from '@/store/settingsSlice' +import { useCallback, useState } from 'react' + +// This is the default for MUI Collapse +export const COLLAPSE_TIMEOUT_MS = 300 + +export const useHideAssets = (closeDialog: () => void) => { + const dispatch = useAppDispatch() + const chainId = useChainId() + const { balances } = useBalances() + + const [assetsToHide, setAssetsToHide] = useState([]) + const [assetsToUnhide, setAssetsToUnhide] = useState([]) + const [hidingAsset, setHidingAsset] = useState() + const hiddenAssets = useHiddenTokens() + + const toggleAsset = useCallback( + (address: string) => { + if (assetsToHide.includes(address)) { + setAssetsToHide(assetsToHide.filter((asset) => asset !== address)) + return + } + + if (assetsToUnhide.includes(address)) { + setAssetsToUnhide(assetsToUnhide.filter((asset) => asset !== address)) + return + } + + const assetIsHidden = hiddenAssets.includes(address) + if (!assetIsHidden) { + setAssetsToHide(assetsToHide.concat(address)) + } else { + setAssetsToUnhide(assetsToUnhide.concat(address)) + } + }, + [assetsToHide, assetsToUnhide, hiddenAssets], + ) + + /** + * Unhide all assets which are included in the current Safe's balance. + */ + const deselectAll = useCallback(() => { + setAssetsToHide([]) + setAssetsToUnhide([ + ...hiddenAssets.filter((asset) => balances.items.some((item) => item.tokenInfo.address === asset)), + ]) + }, [hiddenAssets, balances]) + + // Assets are selected if they are either hidden or marked for hiding + const isAssetSelected = useCallback( + (address: string) => + (hiddenAssets.includes(address) && !assetsToUnhide.includes(address)) || assetsToHide.includes(address), + [assetsToHide, assetsToUnhide, hiddenAssets], + ) + + const cancel = useCallback(() => { + setAssetsToHide([]) + setAssetsToUnhide([]) + closeDialog() + }, [closeDialog]) + + const hideAsset = useCallback( + (address: string) => { + setHidingAsset(address) + setTimeout(() => { + const newHiddenAssets = [...hiddenAssets, address] + dispatch(setHiddenTokensForChain({ chainId, assets: newHiddenAssets })) + setHidingAsset(undefined) + }, COLLAPSE_TIMEOUT_MS) + }, + [chainId, dispatch, hiddenAssets], + ) + + const saveChanges = useCallback(() => { + const newHiddenAssets = [...hiddenAssets.filter((asset) => !assetsToUnhide.includes(asset)), ...assetsToHide] + dispatch(setHiddenTokensForChain({ chainId, assets: newHiddenAssets })) + cancel() + }, [assetsToHide, assetsToUnhide, chainId, dispatch, hiddenAssets, cancel]) + + return { + hideAsset, + saveChanges, + cancel, + toggleAsset, + isAssetSelected, + deselectAll, + hidingAsset, + } +} diff --git a/src/components/balances/HiddenTokenButton/index.test.tsx b/src/components/balances/HiddenTokenButton/index.test.tsx new file mode 100644 index 0000000000..5f736d4c98 --- /dev/null +++ b/src/components/balances/HiddenTokenButton/index.test.tsx @@ -0,0 +1,85 @@ +import * as useChainId from '@/hooks/useChainId' +import { fireEvent, render } from '@/tests/test-utils' +import { hexZeroPad } from 'ethers/lib/utils' +import { TokenType } from '@safe-global/safe-gateway-typescript-sdk' +import { safeParseUnits } from '@/utils/formatters' +import HiddenTokenButton from '.' +import { useState } from 'react' + +const TestComponent = () => { + const [showHidden, setShowHidden] = useState(false) + return ( + setShowHidden((prev) => !prev)} /> + ) +} + +describe('HiddenTokenToggle', () => { + beforeEach(() => { + jest.clearAllMocks() + window.localStorage.clear() + jest.spyOn(useChainId, 'default').mockReturnValue('5') + }) + + test('button disabled if hidden assets are visible', async () => { + const mockHiddenAssets = { + '5': [hexZeroPad('0x3', 20)], + } + const mockBalances = { + data: { + fiatTotal: '300', + items: [ + { + balance: safeParseUnits('100', 18)!.toString(), + fiatBalance: '100', + fiatConversion: '1', + tokenInfo: { + address: hexZeroPad('0x2', 20), + decimals: 18, + logoUri: '', + name: 'DAI', + symbol: 'DAI', + type: TokenType.ERC20, + }, + }, + { + balance: safeParseUnits('200', 18)!.toString(), + fiatBalance: '200', + fiatConversion: '1', + tokenInfo: { + address: hexZeroPad('0x3', 20), + decimals: 18, + logoUri: '', + name: 'SPAM', + symbol: 'SPM', + type: TokenType.ERC20, + }, + }, + ], + }, + loading: false, + error: undefined, + } + + const result = render(, { + initialReduxState: { + balances: mockBalances, + settings: { + currency: 'usd', + hiddenTokens: mockHiddenAssets, + shortName: { + show: true, + copy: true, + qr: true, + }, + theme: { + darkMode: true, + }, + }, + }, + }) + fireEvent.click(result.getByTestId('toggle-hidden-assets')) + + // Now it is disabled + expect(result.getByTestId('toggle-hidden-assets')).toBeDisabled() + }) +}) diff --git a/src/components/balances/HiddenTokenButton/index.tsx b/src/components/balances/HiddenTokenButton/index.tsx new file mode 100644 index 0000000000..c97a48ce6f --- /dev/null +++ b/src/components/balances/HiddenTokenButton/index.tsx @@ -0,0 +1,45 @@ +import { type ReactElement } from 'react' +import { Typography, Button } from '@mui/material' +import { ASSETS_EVENTS } from '@/services/analytics' +import useHiddenTokens from '@/hooks/useHiddenTokens' +import useBalances from '@/hooks/useBalances' +import { VisibilityOutlined } from '@mui/icons-material' +import Track from '@/components/common/Track' + +import css from './styles.module.css' + +const HiddenTokenButton = ({ + toggleShowHiddenAssets, + showHiddenAssets, +}: { + toggleShowHiddenAssets?: () => void + showHiddenAssets?: boolean +}): ReactElement | null => { + const { balances } = useBalances() + const currentHiddenAssets = useHiddenTokens() + + const hiddenAssetCount = + balances.items?.filter((item) => currentHiddenAssets.includes(item.tokenInfo.address)).length || 0 + + return ( + + + + ) +} + +export default HiddenTokenButton diff --git a/src/components/balances/HiddenTokenButton/styles.module.css b/src/components/balances/HiddenTokenButton/styles.module.css new file mode 100644 index 0000000000..fddd67f640 --- /dev/null +++ b/src/components/balances/HiddenTokenButton/styles.module.css @@ -0,0 +1,5 @@ +@media (max-width: 600px) { + .hiddenTokenButton { + display: none; + } +} diff --git a/src/components/balances/TokenMenu/index.tsx b/src/components/balances/TokenMenu/index.tsx new file mode 100644 index 0000000000..f1d6c46538 --- /dev/null +++ b/src/components/balances/TokenMenu/index.tsx @@ -0,0 +1,53 @@ +import Track from '@/components/common/Track' +import { ASSETS_EVENTS } from '@/services/analytics' +import { VisibilityOffOutlined } from '@mui/icons-material' +import { Box, Typography, Button } from '@mui/material' + +import css from './styles.module.css' + +const TokenMenu = ({ + saveChanges, + cancel, + selectedAssetCount, + showHiddenAssets, + deselectAll, +}: { + saveChanges: () => void + cancel: () => void + deselectAll: () => void + selectedAssetCount: number + showHiddenAssets: boolean +}) => { + if (selectedAssetCount === 0 && !showHiddenAssets) { + return null + } + return ( + + + + + {selectedAssetCount} {selectedAssetCount === 1 ? 'token' : 'tokens'} selected + + + + + + + + + + + + + + + ) +} + +export default TokenMenu diff --git a/src/components/balances/TokenMenu/styles.module.css b/src/components/balances/TokenMenu/styles.module.css new file mode 100644 index 0000000000..090719ec44 --- /dev/null +++ b/src/components/balances/TokenMenu/styles.module.css @@ -0,0 +1,38 @@ +.hideTokensHeader { + display: flex; + flex-direction: row; + flex: 1; + gap: var(--space-1); + padding: 5px var(--space-2); + background-color: var(--color-background-light); + border-radius: 6px; + min-width: 185px; +} + +.stickyBox { + position: sticky; + top: 111px; /* under AssetHeader */ + z-index: 1; + padding: var(--space-2) 0; + background-color: var(--color-background-default); + display: flex; + flex-wrap: wrap; + flex-direction: row; + align-items: center; + margin-top: -24px; + gap: var(--space-3); +} + +@media (max-width: 600px) { + .stickyBox { + margin-top: -16px; + } +} + +.cancelButton { + padding: 4px 10px; +} + +.applyButton { + padding: 6px var(--space-3); +} diff --git a/src/components/common/EnhancedTable/index.tsx b/src/components/common/EnhancedTable/index.tsx index 225db6813c..59ccf86230 100644 --- a/src/components/common/EnhancedTable/index.tsx +++ b/src/components/common/EnhancedTable/index.tsx @@ -16,16 +16,21 @@ import type { PaperTypeMap } from '@mui/material/Paper/Paper' import classNames from 'classnames' import css from './styles.module.css' +import { Collapse } from '@mui/material' -type EnhancedRow = Record< - string, - { - content: ReactNode - rawValue: string | number - sticky?: boolean - hide?: boolean - } -> +type EnhancedCell = { + content: ReactNode + rawValue: string | number + sticky?: boolean + hide?: boolean +} + +type EnhancedRow = { + selected?: boolean + collapsed?: boolean + key?: string + cells: Record +} type EnhancedHeadCell = { id: string @@ -36,10 +41,10 @@ type EnhancedHeadCell = { } function descendingComparator(a: EnhancedRow, b: EnhancedRow, orderBy: string) { - if (b[orderBy].rawValue < a[orderBy].rawValue) { + if (b.cells[orderBy].rawValue < a.cells[orderBy].rawValue) { return -1 } - if (b[orderBy].rawValue > a[orderBy].rawValue) { + if (b.cells[orderBy].rawValue > a.cells[orderBy].rawValue) { return 1 } return 0 @@ -139,16 +144,24 @@ function EnhancedTable({ rows, headCells, variant }: EnhancedTableProps) { {pagedRows.length > 0 ? ( pagedRows.map((row, index) => ( - - {Object.entries(row).map(([key, cell]) => ( + + {Object.entries(row.cells).map(([key, cell]) => ( - {cell.content} + + {cell.content} + ))} diff --git a/src/components/common/EnhancedTable/styles.module.css b/src/components/common/EnhancedTable/styles.module.css index 68a1a93c79..47f327d413 100644 --- a/src/components/common/EnhancedTable/styles.module.css +++ b/src/components/common/EnhancedTable/styles.module.css @@ -2,6 +2,19 @@ display: none; } +.tableCell { + transition: padding 0s; +} + +.collapsedCell { + padding: 0px !important; + transition: padding 300ms ease-in-out; +} + +.collapsedRow { + border-bottom: none !important; +} + .actions { display: flex; justify-content: flex-end; diff --git a/src/components/dashboard/Overview/Overview.tsx b/src/components/dashboard/Overview/Overview.tsx index 5087b8f015..59a77c1bab 100644 --- a/src/components/dashboard/Overview/Overview.tsx +++ b/src/components/dashboard/Overview/Overview.tsx @@ -7,7 +7,6 @@ import { Box, Button, Grid, Skeleton, Typography } from '@mui/material' import { Card, WidgetBody, WidgetContainer } from '../styled' import useSafeInfo from '@/hooks/useSafeInfo' import { useCurrentChain } from '@/hooks/useChains' -import useBalances from '@/hooks/useBalances' import SafeIcon from '@/components/common/SafeIcon' import ChainIndicator from '@/components/common/ChainIndicator' import EthHashInfo from '@/components/common/EthHashInfo' @@ -15,6 +14,7 @@ import { AppRoutes } from '@/config/routes' import useSafeAddress from '@/hooks/useSafeAddress' import useCollectibles from '@/hooks/useCollectibles' import type { UrlObject } from 'url' +import { useVisibleBalances } from '@/hooks/useVisibleBalances' const IdenticonContainer = styled.div` position: relative; @@ -83,7 +83,7 @@ const Overview = (): ReactElement => { const router = useRouter() const safeAddress = useSafeAddress() const { safe, safeLoading } = useSafeInfo() - const { balances } = useBalances() + const { balances } = useVisibleBalances() const [nfts] = useCollectibles() const chain = useCurrentChain() const { chainId } = chain || {} diff --git a/src/components/settings/SpendingLimits/NewSpendingLimit/steps/SpendingLimitForm.tsx b/src/components/settings/SpendingLimits/NewSpendingLimit/steps/SpendingLimitForm.tsx index 9dc173f5da..083752cf35 100644 --- a/src/components/settings/SpendingLimits/NewSpendingLimit/steps/SpendingLimitForm.tsx +++ b/src/components/settings/SpendingLimits/NewSpendingLimit/steps/SpendingLimitForm.tsx @@ -16,13 +16,13 @@ import { } from '@mui/material' import AddressBookInput from '@/components/common/AddressBookInput' import { validateAmount } from '@/utils/validation' -import useBalances from '@/hooks/useBalances' import { AutocompleteItem } from '@/components/tx/modals/TokenTransferModal/SendAssetsForm' import useChainId from '@/hooks/useChainId' import { getResetTimeOptions } from '@/components/transactions/TxDetails/TxData/SpendingLimits' import { defaultAbiCoder } from '@ethersproject/abi' import { parseUnits } from 'ethers/lib/utils' import NumberField from '@/components/common/NumberField' +import { useVisibleBalances } from '@/hooks/useVisibleBalances' export type NewSpendingLimitData = { beneficiary: string @@ -49,7 +49,7 @@ export const _validateSpendingLimit = (val: string, decimals?: number) => { export const SpendingLimitForm = ({ data, onSubmit }: Props) => { const chainId = useChainId() const [showResetTime, setShowResetTime] = useState(false) - const { balances } = useBalances() + const { balances } = useVisibleBalances() const resetTimeOptions = useMemo(() => getResetTimeOptions(chainId), [chainId]) diff --git a/src/components/settings/SpendingLimits/SpendingLimitsTable.tsx b/src/components/settings/SpendingLimits/SpendingLimitsTable.tsx index c68373e42e..18cdb19477 100644 --- a/src/components/settings/SpendingLimits/SpendingLimitsTable.tsx +++ b/src/components/settings/SpendingLimits/SpendingLimitsTable.tsx @@ -58,41 +58,43 @@ export const SpendingLimitsTable = ({ spendingLimits }: { spendingLimits: Spendi const formattedSpent = safeFormatUnits(spent, token?.tokenInfo.decimals) return { - beneficiary: { - rawValue: spendingLimit.beneficiary, - content: ( - - ), - }, - spent: { - rawValue: spendingLimit.spent, - content: ( - - - {`${formattedSpent} of ${formattedAmount} ${token?.tokenInfo.symbol}`} - - ), - }, - resetTime: { - rawValue: spendingLimit.resetTimeMin, - content: ( - - ), - }, - actions: { - rawValue: '', - sticky: true, - hide: shouldHideactions, - content: ( - - onRemove(spendingLimit)} color="error" size="small"> - - - - ), + cells: { + beneficiary: { + rawValue: spendingLimit.beneficiary, + content: ( + + ), + }, + spent: { + rawValue: spendingLimit.spent, + content: ( + + + {`${formattedSpent} of ${formattedAmount} ${token?.tokenInfo.symbol}`} + + ), + }, + resetTime: { + rawValue: spendingLimit.resetTimeMin, + content: ( + + ), + }, + actions: { + rawValue: '', + sticky: true, + hide: shouldHideactions, + content: ( + + onRemove(spendingLimit)} color="error" size="small"> + + + + ), + }, }, } }), diff --git a/src/components/settings/owner/OwnerList/index.tsx b/src/components/settings/owner/OwnerList/index.tsx index 3e6dcf07d4..85b7080842 100644 --- a/src/components/settings/owner/OwnerList/index.tsx +++ b/src/components/settings/owner/OwnerList/index.tsx @@ -26,20 +26,22 @@ export const OwnerList = ({ isGranted }: { isGranted: boolean }) => { const name = addressBook[address] return { - owner: { - rawValue: address, - content: , - }, - actions: { - rawValue: '', - sticky: true, - content: ( -
- {isGranted && } - - {isGranted && } -
- ), + cells: { + owner: { + rawValue: address, + content: , + }, + actions: { + rawValue: '', + sticky: true, + content: ( +
+ {isGranted && } + + {isGranted && } +
+ ), + }, }, } }) diff --git a/src/components/sidebar/SidebarHeader/index.tsx b/src/components/sidebar/SidebarHeader/index.tsx index a84952d881..e31b1898eb 100644 --- a/src/components/sidebar/SidebarHeader/index.tsx +++ b/src/components/sidebar/SidebarHeader/index.tsx @@ -9,7 +9,6 @@ import { formatCurrency } from '@/utils/formatNumber' import useSafeInfo from '@/hooks/useSafeInfo' import SafeIcon from '@/components/common/SafeIcon' import NewTxButton from '@/components/sidebar/NewTxButton' -import useBalances from '@/hooks/useBalances' import { useAppSelector } from '@/store' import { selectCurrency } from '@/store/settingsSlice' @@ -27,10 +26,11 @@ import QrCodeButton from '../QrCodeButton' import Track from '@/components/common/Track' import { OVERVIEW_EVENTS } from '@/services/analytics/events/overview' import { SvgIcon } from '@mui/material' +import { useVisibleBalances } from '@/hooks/useVisibleBalances' const SafeHeader = (): ReactElement => { const currency = useAppSelector(selectCurrency) - const { balances, loading: balancesLoading } = useBalances() + const { balances, loading: balancesLoading } = useVisibleBalances() const { safe, safeAddress, safeLoading } = useSafeInfo() const { threshold, owners } = safe const chain = useCurrentChain() diff --git a/src/components/tx/modals/TokenTransferModal/SendAssetsForm.tsx b/src/components/tx/modals/TokenTransferModal/SendAssetsForm.tsx index 21e9eb8358..866334f1be 100644 --- a/src/components/tx/modals/TokenTransferModal/SendAssetsForm.tsx +++ b/src/components/tx/modals/TokenTransferModal/SendAssetsForm.tsx @@ -18,7 +18,6 @@ import { BigNumber } from '@ethersproject/bignumber' import TokenIcon from '@/components/common/TokenIcon' import { formatVisualAmount, safeFormatUnits } from '@/utils/formatters' import { validateDecimalLength, validateLimitedAmount } from '@/utils/validation' -import useBalances from '@/hooks/useBalances' import AddressBookInput from '@/components/common/AddressBookInput' import InputValueHelper from '@/components/common/InputValueHelper' import SendFromBlock from '../../SendFromBlock' @@ -32,6 +31,7 @@ import { sameAddress } from '@/utils/addresses' import InfoIcon from '@/public/images/notifications/info.svg' import useIsSafeTokenPaused from '@/components/tx/modals/TokenTransferModal/useIsSafeTokenPaused' import NumberField from '@/components/common/NumberField' +import { useVisibleBalances } from '@/hooks/useVisibleBalances' export const AutocompleteItem = (item: { tokenInfo: TokenInfo; balance: string }): ReactElement => ( @@ -73,7 +73,7 @@ type SendAssetsFormProps = { } const SendAssetsForm = ({ onSubmit, formData, disableSpendingLimit = false }: SendAssetsFormProps): ReactElement => { - const { balances } = useBalances() + const { balances } = useVisibleBalances() const addressBook = useAddressBook() const chainId = useChainId() const safeTokenAddress = getSafeTokenAddress(chainId) diff --git a/src/hooks/__tests__/useBalances.test.ts b/src/hooks/__tests__/useBalances.test.ts new file mode 100644 index 0000000000..8a591e2873 --- /dev/null +++ b/src/hooks/__tests__/useBalances.test.ts @@ -0,0 +1,70 @@ +import { type SafeBalanceResponse, TokenType } from '@safe-global/safe-gateway-typescript-sdk' +import * as store from '@/store' +import { renderHook } from '@/tests/test-utils' +import useBalances from '../useBalances' +import { hexZeroPad } from 'ethers/lib/utils' + +describe('useBalances', () => { + test('empty balance', () => { + const balance: SafeBalanceResponse = { + fiatTotal: '0', + items: [], + } + jest.spyOn(store, 'useAppSelector').mockImplementation((selector) => + selector({ + balances: { data: balance, error: undefined, loading: false }, + } as store.RootState), + ) + + const { result } = renderHook(() => useBalances()) + + expect(result.current.balances.fiatTotal).toEqual('0') + expect(result.current.balances.items).toHaveLength(0) + }) + + test('return all balances', () => { + const tokenAddress = hexZeroPad('0x2', 20) + const balance: SafeBalanceResponse = { + fiatTotal: '100', + items: [ + { + balance: '40', + fiatBalance: '40', + fiatConversion: '1', + tokenInfo: { + address: tokenAddress, + decimals: 18, + logoUri: '', + name: 'Hidden Token', + symbol: 'HT', + type: TokenType.ERC20, + }, + }, + { + balance: '60', + fiatBalance: '60', + fiatConversion: '1', + tokenInfo: { + address: tokenAddress, + decimals: 18, + logoUri: '', + name: 'Visible Token', + symbol: 'VT', + type: TokenType.ERC20, + }, + }, + ], + } + + jest.spyOn(store, 'useAppSelector').mockImplementation((selector) => + selector({ + balances: { data: balance, error: undefined, loading: false }, + } as store.RootState), + ) + + const { result } = renderHook(() => useBalances()) + + expect(result.current.balances.fiatTotal).toEqual('100') + expect(result.current.balances.items).toHaveLength(2) + }) +}) diff --git a/src/hooks/__tests__/useVisibleBalances.test.ts b/src/hooks/__tests__/useVisibleBalances.test.ts new file mode 100644 index 0000000000..5da95c24df --- /dev/null +++ b/src/hooks/__tests__/useVisibleBalances.test.ts @@ -0,0 +1,224 @@ +import { type SafeBalanceResponse, TokenType } from '@safe-global/safe-gateway-typescript-sdk' +import * as store from '@/store' +import { renderHook } from '@/tests/test-utils' +import { hexZeroPad } from 'ethers/lib/utils' +import { useVisibleBalances } from '../useVisibleBalances' + +describe('useVisibleBalances', () => { + const hiddenTokenAddress = hexZeroPad('0x2', 20) + const visibleTokenAddress = hexZeroPad('0x3', 20) + + test('empty balance', () => { + const balance: SafeBalanceResponse = { + fiatTotal: '0', + items: [], + } + jest.spyOn(store, 'useAppSelector').mockImplementation((selector) => + selector({ + balances: { data: balance, error: undefined, loading: false }, + settings: { + currency: 'USD', + shortName: { + copy: true, + qr: true, + show: true, + }, + theme: { + darkMode: false, + }, + hiddenTokens: { ['4']: [hiddenTokenAddress] }, + }, + } as unknown as store.RootState), + ) + + const { result } = renderHook(() => useVisibleBalances()) + + expect(result.current.balances.fiatTotal).toEqual('0') + expect(result.current.balances.items).toHaveLength(0) + }) + + test('return only visible balance', () => { + const balance: SafeBalanceResponse = { + fiatTotal: '100', + items: [ + { + balance: '40', + fiatBalance: '40', + fiatConversion: '1', + tokenInfo: { + address: hiddenTokenAddress, + decimals: 18, + logoUri: '', + name: 'Hidden Token', + symbol: 'HT', + type: TokenType.ERC20, + }, + }, + { + balance: '60', + fiatBalance: '60', + fiatConversion: '1', + tokenInfo: { + address: visibleTokenAddress, + decimals: 18, + logoUri: '', + name: 'Visible Token', + symbol: 'VT', + type: TokenType.ERC20, + }, + }, + ], + } + + jest.spyOn(store, 'useAppSelector').mockImplementation((selector) => + selector({ + balances: { data: balance, error: undefined, loading: false }, + settings: { + currency: 'USD', + shortName: { + copy: true, + qr: true, + show: true, + }, + theme: { + darkMode: false, + }, + hiddenTokens: { ['4']: [hiddenTokenAddress] }, + }, + } as unknown as store.RootState), + ) + + const { result } = renderHook(() => useVisibleBalances()) + + expect(result.current.balances.fiatTotal).toEqual('60') + expect(result.current.balances.items).toHaveLength(1) + }) + + test('computation works for high precision numbers', () => { + const balance: SafeBalanceResponse = { + fiatTotal: '200.01234567890123456789', + items: [ + { + balance: '100', + fiatBalance: '100', + fiatConversion: '1', + tokenInfo: { + address: hiddenTokenAddress, + decimals: 18, + logoUri: '', + name: 'Hidden Token', + symbol: 'HT', + type: TokenType.ERC20, + }, + }, + { + balance: '60.0123456789', + fiatBalance: '60.0123456789', + fiatConversion: '1', + tokenInfo: { + address: visibleTokenAddress, + decimals: 18, + logoUri: '', + name: 'Visible Token', + symbol: 'VT', + type: TokenType.ERC20, + }, + }, + { + balance: '40.00000000000123456789', + fiatBalance: '40.00000000000123456789', + fiatConversion: '1', + tokenInfo: { + address: visibleTokenAddress, + decimals: 18, + logoUri: '', + name: 'Visible Token', + symbol: 'VT', + type: TokenType.ERC20, + }, + }, + ], + } + + jest.spyOn(store, 'useAppSelector').mockImplementation((selector) => + selector({ + balances: { data: balance, error: undefined, loading: false }, + settings: { + currency: 'USD', + shortName: { + copy: true, + qr: true, + show: true, + }, + theme: { + darkMode: false, + }, + hiddenTokens: { ['4']: [hiddenTokenAddress] }, + }, + } as unknown as store.RootState), + ) + + const { result } = renderHook(() => useVisibleBalances()) + + expect(result.current.balances.fiatTotal).toEqual('100.012345678901234567') + expect(result.current.balances.items).toHaveLength(2) + }) + + test('computation works for high USD values', () => { + const balance: SafeBalanceResponse = { + // Current total USD value of all Safes on mainnet * 1 million + fiatTotal: '28303710905000100.0123456789', + items: [ + { + balance: '100', + fiatBalance: '100', + fiatConversion: '1', + tokenInfo: { + address: hiddenTokenAddress, + decimals: 18, + logoUri: '', + name: 'Hidden Token', + symbol: 'HT', + type: TokenType.ERC20, + }, + }, + { + balance: '28303710905000000.0123456789', + fiatBalance: '28303710905000000.0123456789', + fiatConversion: '1', + tokenInfo: { + address: visibleTokenAddress, + decimals: 18, + logoUri: '', + name: 'USDC', + symbol: 'USDC', + type: TokenType.ERC20, + }, + }, + ], + } + + jest.spyOn(store, 'useAppSelector').mockImplementation((selector) => + selector({ + balances: { data: balance, error: undefined, loading: false }, + settings: { + currency: 'USD', + shortName: { + copy: true, + qr: true, + show: true, + }, + theme: { + darkMode: false, + }, + hiddenTokens: { ['4']: [hiddenTokenAddress] }, + }, + } as unknown as store.RootState), + ) + + const { result } = renderHook(() => useVisibleBalances()) + + expect(result.current.balances.fiatTotal).toEqual('28303710905000000.0123456789') + expect(result.current.balances.items).toHaveLength(1) + }) +}) diff --git a/src/hooks/useHiddenTokens.ts b/src/hooks/useHiddenTokens.ts new file mode 100644 index 0000000000..16ce3ac15c --- /dev/null +++ b/src/hooks/useHiddenTokens.ts @@ -0,0 +1,10 @@ +import { useAppSelector } from '@/store' +import { selectHiddenTokensPerChain } from '@/store/settingsSlice' +import useChainId from './useChainId' + +const useHiddenTokens = () => { + const chainId = useChainId() + return useAppSelector((state) => selectHiddenTokensPerChain(state, chainId)) +} + +export default useHiddenTokens diff --git a/src/hooks/useVisibleBalances.ts b/src/hooks/useVisibleBalances.ts new file mode 100644 index 0000000000..2cdba42cd4 --- /dev/null +++ b/src/hooks/useVisibleBalances.ts @@ -0,0 +1,59 @@ +import { safeFormatUnits, safeParseUnits } from '@/utils/formatters' +import type { SafeBalanceResponse } from '@safe-global/safe-gateway-typescript-sdk' +import { BigNumber } from 'ethers' +import { useMemo } from 'react' +import useBalances from './useBalances' +import useHiddenTokens from './useHiddenTokens' + +const PRECISION = 18 + +/** + * We have to avoid underflows for too high precisions. + * We only display very few floating points anyway so a precision of 18 should be more than enough. + */ +const truncateNumber = (balance: string): string => { + const floatingPointPosition = balance.indexOf('.') + if (floatingPointPosition < 0) { + return balance + } + + const currentPrecision = balance.length - floatingPointPosition - 1 + return currentPrecision < PRECISION ? balance : balance.slice(0, floatingPointPosition + PRECISION + 1) +} + +const filterHiddenTokens = (items: SafeBalanceResponse['items'], hiddenAssets: string[]) => + items.filter((balanceItem) => !hiddenAssets.includes(balanceItem.tokenInfo.address)) + +const getVisibleFiatTotal = (balances: SafeBalanceResponse, hiddenAssets: string[]): string => { + return safeFormatUnits( + balances.items + .reduce((acc, balanceItem) => { + if (hiddenAssets.includes(balanceItem.tokenInfo.address)) { + return acc.sub(safeParseUnits(truncateNumber(balanceItem.fiatBalance), PRECISION) || 0) + } + return acc + }, BigNumber.from(balances.fiatTotal === '' ? 0 : safeParseUnits(truncateNumber(balances.fiatTotal), PRECISION))) + .toString(), + PRECISION, + ) +} + +export const useVisibleBalances = (): { + balances: SafeBalanceResponse + loading: boolean + error?: string +} => { + const balances = useBalances() + const hiddenTokens = useHiddenTokens() + + return useMemo( + () => ({ + ...balances, + balances: { + items: filterHiddenTokens(balances.balances.items, hiddenTokens), + fiatTotal: getVisibleFiatTotal(balances.balances, hiddenTokens), + }, + }), + [balances, hiddenTokens], + ) +} diff --git a/src/pages/balances/index.tsx b/src/pages/balances/index.tsx index 85ca2e632b..b2db31492d 100644 --- a/src/pages/balances/index.tsx +++ b/src/pages/balances/index.tsx @@ -1,15 +1,23 @@ import type { NextPage } from 'next' import Head from 'next/head' -import { CircularProgress } from '@mui/material' +import { Box, CircularProgress } from '@mui/material' import AssetsTable from '@/components/balances/AssetsTable' import AssetsHeader from '@/components/balances/AssetsHeader' import useBalances from '@/hooks/useBalances' +import { useState } from 'react' + import PagePlaceholder from '@/components/common/PagePlaceholder' import NoAssetsIcon from '@/public/images/balances/no-assets.svg' +import useHiddenTokens from '@/hooks/useHiddenTokens' +import HiddenTokenButton from '@/components/balances/HiddenTokenButton' +import CurrencySelect from '@/components/balances/CurrencySelect' const Balances: NextPage = () => { const { balances, loading, error } = useBalances() + const hiddenAssets = useHiddenTokens() + const [showHiddenAssets, setShowHiddenAssets] = useState(false) + const toggleShowHiddenAssets = () => setShowHiddenAssets((prev) => !prev) return ( <> @@ -17,13 +25,20 @@ const Balances: NextPage = () => { Safe – Assets - + + + {hiddenAssets && ( + + )} + + +
{loading && } {!error ? ( - + ) : ( } text="There was an error loading your assets" /> )} diff --git a/src/services/analytics/events/assets.ts b/src/services/analytics/events/assets.ts index 5622cbd7b7..e6ff4c3231 100644 --- a/src/services/analytics/events/assets.ts +++ b/src/services/analytics/events/assets.ts @@ -7,6 +7,10 @@ export const ASSETS_EVENTS = { action: 'Currency menu', category: ASSETS_CATEGORY, }, + TOKEN_LIST_MENU: { + action: 'Token list menu', + category: ASSETS_CATEGORY, + }, CHANGE_CURRENCY: { event: EventType.META, action: 'Change currency', @@ -17,8 +21,33 @@ export const ASSETS_EVENTS = { action: 'Tokens', category: ASSETS_CATEGORY, }, + HIDDEN_TOKENS: { + event: EventType.META, + action: 'Hidden tokens', + category: ASSETS_CATEGORY, + }, + SHOW_HIDDEN_ASSETS: { + action: 'Show hidden assets', + category: ASSETS_CATEGORY, + }, SEND: { action: 'Send', category: ASSETS_CATEGORY, }, + HIDE_TOKEN: { + action: 'Hide single token', + category: ASSETS_CATEGORY, + }, + CANCEL_HIDE_DIALOG: { + action: 'Cancel hide dialog', + category: ASSETS_CATEGORY, + }, + SAVE_HIDE_DIALOG: { + action: 'Save hide dialog', + category: ASSETS_CATEGORY, + }, + DESELECT_ALL_HIDE_DIALOG: { + action: 'Deselect all hide dialog', + category: ASSETS_CATEGORY, + }, } diff --git a/src/services/analytics/useMetaEvents.ts b/src/services/analytics/useMetaEvents.ts index b5746f24cf..42d98fea87 100644 --- a/src/services/analytics/useMetaEvents.ts +++ b/src/services/analytics/useMetaEvents.ts @@ -7,6 +7,7 @@ import { useAppSelector } from '@/store' import useChainId from '@/hooks/useChainId' import useBalances from '@/hooks/useBalances' import useSafeInfo from '@/hooks/useSafeInfo' +import useHiddenTokens from '@/hooks/useHiddenTokens' // Track meta events on app load const useMetaEvents = (isAnalyticsEnabled: boolean) => { @@ -45,6 +46,16 @@ const useMetaEvents = (isAnalyticsEnabled: boolean) => { gtmTrack({ ...ASSETS_EVENTS.DIFFERING_TOKENS, label: totalTokens }) }, [isAnalyticsEnabled, totalTokens, safeAddress, chainId]) + + // Manually hidden tokens + const hiddenTokens = useHiddenTokens() + const totalHiddenFromBalance = + balances?.items.filter((item) => hiddenTokens.includes(item.tokenInfo.address)).length || 0 + useEffect(() => { + if (!isAnalyticsEnabled || !safeAddress || totalTokens <= 0) return + + gtmTrack({ ...ASSETS_EVENTS.HIDDEN_TOKENS, label: totalHiddenFromBalance }) + }, [isAnalyticsEnabled, safeAddress, totalHiddenFromBalance, totalTokens]) } export default useMetaEvents diff --git a/src/store/settingsSlice.ts b/src/store/settingsSlice.ts index 6328b8781f..05cbaa582e 100644 --- a/src/store/settingsSlice.ts +++ b/src/store/settingsSlice.ts @@ -6,6 +6,12 @@ import type { RootState } from '@/store' export type SettingsState = { currency: string + hiddenTokens: + | { + [chainId: string]: string[] + } + | undefined /* This was added to the slice later, so hydration will set it to undefined initially */ + shortName: { show: boolean copy: boolean @@ -19,6 +25,8 @@ export type SettingsState = { const initialState: SettingsState = { currency: 'usd', + hiddenTokens: {}, + shortName: { show: true, copy: true, @@ -46,13 +54,23 @@ export const settingsSlice = createSlice({ setDarkMode: (state, { payload }: PayloadAction) => { state.theme.darkMode = payload }, + setHiddenTokensForChain: (state, { payload }: PayloadAction<{ chainId: string; assets: string[] }>) => { + const { chainId, assets } = payload + state.hiddenTokens = {} + state.hiddenTokens[chainId] ??= assets + }, }, }) -export const { setCurrency, setShowShortName, setCopyShortName, setQrShortName, setDarkMode } = settingsSlice.actions +export const { setCurrency, setShowShortName, setCopyShortName, setQrShortName, setDarkMode, setHiddenTokensForChain } = + settingsSlice.actions export const selectSettings = (state: RootState): SettingsState => state[settingsSlice.name] export const selectCurrency = (state: RootState): SettingsState['currency'] => { return state[settingsSlice.name].currency || initialState.currency } + +export const selectHiddenTokensPerChain = (state: RootState, chainId: string): string[] => { + return state[settingsSlice.name].hiddenTokens?.[chainId] || [] +} diff --git a/src/styles/theme.ts b/src/styles/theme.ts index c03c29d3f5..3f78e6a5bc 100644 --- a/src/styles/theme.ts +++ b/src/styles/theme.ts @@ -299,6 +299,13 @@ const initTheme = (darkMode: boolean) => { }, }, }, + MuiToggleButton: { + styleOverrides: { + root: { + textTransform: 'none', + }, + }, + }, MuiAlert: { styleOverrides: { standardError: ({ theme }) => ({ @@ -401,6 +408,9 @@ const initTheme = (darkMode: boolean) => { '& .MuiTableRow-root:hover': { backgroundColor: theme.palette.background.light, }, + '& .MuiTableRow-root.Mui-selected': { + backgroundColor: theme.palette.background.light, + }, }), }, }, From 7348998bd9f5da25a1c69a98dc51d223e0db983e Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Mon, 9 Jan 2023 15:41:57 +0100 Subject: [PATCH 020/422] fix: Create safe e2e test (#1500) * fix: Create safe e2e test * move local storage setter into test * revert package install * fix: Add create safe form test * move setting local storage * fix: Pass mnemonic during ci build * fix: Remove env var from cypress config * fix: Pass e2e mnemonic to composite action * fix: Remove env var from cypress config * fix: Pass e2e mnemonic with safe apps e2e workflow --- .github/workflows/build/action.yml | 5 ++ .github/workflows/e2e.yml | 2 +- .github/workflows/safe-apps-e2e.yml | 2 +- cypress.config.js | 4 -- cypress/e2e/create_safe.cy.js | 14 ++---- cypress/e2e/smoke/create_safe_form.cy.js | 60 ++++++++++++++++++++++++ 6 files changed, 70 insertions(+), 17 deletions(-) create mode 100644 cypress/e2e/smoke/create_safe_form.cy.js diff --git a/.github/workflows/build/action.yml b/.github/workflows/build/action.yml index c6b59983a1..99b2a3472f 100644 --- a/.github/workflows/build/action.yml +++ b/.github/workflows/build/action.yml @@ -10,6 +10,10 @@ inputs: description: 'Production build flag' required: false + e2e_mnemonic: + description: 'Mnemonic for the E2E tests' + required: false + runs: using: 'composite' steps: @@ -30,3 +34,4 @@ runs: NEXT_PUBLIC_TENDERLY_PROJECT_NAME: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_TENDERLY_PROJECT_NAME }} NEXT_PUBLIC_TENDERLY_SIMULATE_ENDPOINT_URL: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_TENDERLY_SIMULATE_ENDPOINT_URL }} NEXT_PUBLIC_WC_BRIDGE: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_WC_BRIDGE }} + NEXT_PUBLIC_CYPRESS_MNEMONIC: ${{ inputs.e2e_mnemonic }} diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index e05f34acab..9ac7334dfd 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -24,6 +24,7 @@ jobs: - uses: ./.github/workflows/build with: secrets: ${{ toJSON(secrets) }} + e2e_mnemonic: ${{ secrets.NEXT_PUBLIC_CYPRESS_MNEMONIC }} - name: Serve run: yarn serve & @@ -36,4 +37,3 @@ jobs: config: baseUrl=http://localhost:8080 env: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - CYPRESS_MNEMONIC: ${{ secrets.NEXT_PUBLIC_CYPRESS_MNEMONIC }} diff --git a/.github/workflows/safe-apps-e2e.yml b/.github/workflows/safe-apps-e2e.yml index 7132b67665..c4806f5933 100644 --- a/.github/workflows/safe-apps-e2e.yml +++ b/.github/workflows/safe-apps-e2e.yml @@ -25,6 +25,7 @@ jobs: - uses: ./.github/workflows/build with: secrets: ${{ toJSON(secrets) }} + e2e_mnemonic: ${{ secrets.NEXT_PUBLIC_CYPRESS_MNEMONIC }} - name: Serve run: yarn serve & @@ -38,4 +39,3 @@ jobs: env: CYPRESS_PROJECT_ID: okn21k CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_SAFE_APPS_RECORD_KEY }} - CYPRESS_MNEMONIC: ${{ secrets.NEXT_PUBLIC_CYPRESS_MNEMONIC }} diff --git a/cypress.config.js b/cypress.config.js index c9b4ca0c65..99f648738f 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -4,10 +4,6 @@ export default defineConfig({ projectId: 'exhdra', trashAssetsBeforeRuns: true, - env: { - CYPRESS_MNEMONIC: process.env.CYPRESS_MNEMONIC, - }, - retries: { runMode: 2, openMode: 0, diff --git a/cypress/e2e/create_safe.cy.js b/cypress/e2e/create_safe.cy.js index 6af277060d..cf0d83f4b7 100644 --- a/cypress/e2e/create_safe.cy.js +++ b/cypress/e2e/create_safe.cy.js @@ -8,24 +8,16 @@ describe('Create Safe', () => { cy.contains('button', 'Accept all').click() // Ensure wallet is connected to correct chain via header - cy.contains('E2E Wallet @ Rinkeby') + cy.contains('E2E Wallet @ Görli') cy.contains('Create new Safe').click() - // Connect wallet & select network - cy.contains('Continue').click() - // Name cy.wait(1000) // Wait for form default values to populate - cy.contains('button', 'Continue').click() + cy.contains('button', 'Next').click() // Owners and confirmations cy.wait(1000) // Wait for form default values to populate - cy.contains('button', 'Continue').click() - - // Review - cy.wait(1000) // Not sure why without this ends with "Transaction underpriced" - cy.contains('button', 'Create').click() - cy.contains('Your Safe was successfully created!', { timeout: 60000 }) + cy.contains('button', 'Next').click() }) }) diff --git a/cypress/e2e/smoke/create_safe_form.cy.js b/cypress/e2e/smoke/create_safe_form.cy.js new file mode 100644 index 0000000000..650abe49dc --- /dev/null +++ b/cypress/e2e/smoke/create_safe_form.cy.js @@ -0,0 +1,60 @@ +const DEFAULT_OWNER_ADDRESS = '0xC16Db0251654C0a72E91B190d81eAD367d2C6fED' +const OWNER_ADDRESS = '0xE297437d6b53890cbf004e401F3acc67c8b39665' + +describe('Create Safe form', () => { + before(() => { + localStorage.setItem('SAFE_v2__lastWallet', JSON.stringify('E2E Wallet')) + }) + it('should navigate to the form', () => { + //cy.connectE2EWallet() + + cy.visit('/welcome') + + // Close cookie banner + cy.contains('button', 'Accept all').click() + + // Ensure wallet is connected to correct chain via header + cy.contains('E2E Wallet @ Görli') + + cy.contains('Create new Safe').click() + }) + + it('should allow setting a name', () => { + // Name input should have a placeholder ending in 'goerli-safe' + cy.get('input[name="name"]') + .should('have.attr', 'placeholder') + .should('match', /g(ö|oe)rli-safe/) + + // Input a custom name + cy.get('input[name="name"]').type('Test safe name').should('have.value', 'Test safe name') + + cy.contains('button', 'Next').click() + }) + + it('should display a default owner and threshold', () => { + // Default owner + cy.get('input[name="owners.0.address"]').should('have.value', DEFAULT_OWNER_ADDRESS) + cy.get('input[name="owners.0.name"]').type('Test Owner Name').should('have.value', 'Test Owner Name') + + // Default threshold + cy.get('input[name="threshold"]').should('have.value', 1) + + // Add new owner + cy.contains('button', 'Add new owner').click() + cy.get('input[name="owners.1.address"]').should('exist') + cy.get('input[name="owners.1.address"]').type(OWNER_ADDRESS) + + // Update threshold + cy.get('input[name="threshold"]').parent().click() + cy.contains('li', '2').click() + + cy.contains('button', 'Next').click() + }) + + it('should display summary on review page', () => { + cy.contains('Test safe name') + cy.contains(OWNER_ADDRESS) + cy.contains(DEFAULT_OWNER_ADDRESS) + cy.contains('2 out of 2') + }) +}) From 0c6cc502897ad15f2b493bfcae9d85bc49a68ce9 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Mon, 9 Jan 2023 17:31:27 +0100 Subject: [PATCH 021/422] refactor: Remove old safe creation code (#1495) * refactor: Remove old safe creation components * refactor: Remove ab test related code * refactor: Rename create safe step components * Restore ab test related code * fix: Remove safe-creation abTest enum entry * fix: Increase bottom margin for owner row if there is a helper text --- src/components/create-safe/index.tsx | 63 ------- .../status/ComputedSafeAddress.tsx | 17 -- .../create-safe/status/CreationStatus.tsx | 111 ----------- .../create-safe/status/StatusMessage.tsx | 102 ---------- .../status/__tests__/CreationStatus.test.tsx | 148 --------------- .../create-safe/status/styles.module.css | 10 - .../create-safe/status/useSafeCreation.ts | 103 ---------- .../status/useSafeCreationEffects.ts | 114 ----------- .../create-safe/status/useStatus.ts | 10 - .../steps/ConnectWalletStep.test.tsx | 45 ----- .../create-safe/steps/ConnectWalletStep.tsx | 93 --------- .../create-safe/steps/OwnerPolicyStep.tsx | 178 ------------------ src/components/create-safe/steps/OwnerRow.tsx | 105 ----------- .../create-safe/steps/ReviewStep.tsx | 135 ------------- .../create-safe/steps/SetNameStep.tsx | 109 ----------- .../create-safe/steps/styles.module.css | 51 ----- src/components/create-safe/styles.module.css | 16 -- .../create-safe/usePendingCreation.ts | 10 - .../create-safe/useSetCreationStep.ts | 24 --- src/components/new-safe/OwnerRow/index.tsx | 16 +- .../new-safe/OwnerRow/styles.module.css | 6 + .../new-safe/create/CreateSafeInfos/index.tsx | 2 +- .../create}/InfoWidget/index.tsx | 2 +- .../create}/InfoWidget/styles.module.css | 0 .../useEstimateSafeCreationGas.test.ts | 4 +- src/components/new-safe/create/index.tsx | 20 +- .../create}/logic/address-book.ts | 2 +- .../create/logic}/index.test.ts | 14 +- .../create}/logic/index.ts | 94 +++++++-- .../{Step0 => ConnectWalletStep}/index.tsx | 6 +- .../{Step2 => OwnerPolicyStep}/index.tsx | 40 ++-- .../styles.module.css | 0 .../useSafeSetupHints.ts | 0 .../steps/{Step3 => ReviewStep}/index.tsx | 12 +- .../{Step3 => ReviewStep}/styles.module.css | 0 .../steps/{Step1 => SetNameStep}/index.tsx | 22 +-- .../{Step1 => SetNameStep}/styles.module.css | 0 .../LoadingSpinner/index.tsx | 4 +- .../LoadingSpinner/styles.module.css | 0 .../{Step4 => StatusStep}/StatusMessage.tsx | 4 +- .../{Step4 => StatusStep}/StatusStep.tsx | 2 +- .../{Step4 => StatusStep}/StatusStepper.tsx | 8 +- .../__tests__/useSafeCreation.test.ts | 5 +- .../__tests__/useSafeCreationEffects.test.ts | 50 +---- .../steps/{Step4 => StatusStep}/index.tsx | 12 +- .../{Step4 => StatusStep}/styles.module.css | 0 .../{Step4 => StatusStep}/useSafeCreation.ts | 9 +- .../useSafeCreationEffects.ts | 8 +- .../create/steps/Step4/logic/index.ts | 146 -------------- .../create}/types.d.ts | 0 .../create}/useEstimateSafeCreationGas.ts | 2 +- .../create/useSyncSafeCreationStep.ts | 4 +- src/components/new-safe/load/index.tsx | 2 +- .../load/steps/SafeOwnerStep/index.tsx | 2 +- .../load/steps/SafeReviewStep/index.tsx | 2 +- .../load/steps/SetAddressStep/index.tsx | 2 +- src/pages/_app.tsx | 3 - src/services/tracking/abTesting.ts | 8 +- .../{useABTesting.ts => useAbTesting.ts} | 0 src/utils/transaction-guards.ts | 2 +- 60 files changed, 205 insertions(+), 1754 deletions(-) delete mode 100644 src/components/create-safe/index.tsx delete mode 100644 src/components/create-safe/status/ComputedSafeAddress.tsx delete mode 100644 src/components/create-safe/status/CreationStatus.tsx delete mode 100644 src/components/create-safe/status/StatusMessage.tsx delete mode 100644 src/components/create-safe/status/__tests__/CreationStatus.test.tsx delete mode 100644 src/components/create-safe/status/styles.module.css delete mode 100644 src/components/create-safe/status/useSafeCreation.ts delete mode 100644 src/components/create-safe/status/useSafeCreationEffects.ts delete mode 100644 src/components/create-safe/status/useStatus.ts delete mode 100644 src/components/create-safe/steps/ConnectWalletStep.test.tsx delete mode 100644 src/components/create-safe/steps/ConnectWalletStep.tsx delete mode 100644 src/components/create-safe/steps/OwnerPolicyStep.tsx delete mode 100644 src/components/create-safe/steps/OwnerRow.tsx delete mode 100644 src/components/create-safe/steps/ReviewStep.tsx delete mode 100644 src/components/create-safe/steps/SetNameStep.tsx delete mode 100644 src/components/create-safe/steps/styles.module.css delete mode 100644 src/components/create-safe/styles.module.css delete mode 100644 src/components/create-safe/usePendingCreation.ts delete mode 100644 src/components/create-safe/useSetCreationStep.ts rename src/components/{create-safe => new-safe/create}/InfoWidget/index.tsx (96%) rename src/components/{create-safe => new-safe/create}/InfoWidget/styles.module.css (100%) rename src/components/{create-safe => new-safe/create}/__tests__/useEstimateSafeCreationGas.test.ts (95%) rename src/components/{create-safe => new-safe/create}/logic/address-book.ts (94%) rename src/components/{create-safe/logic/__tests__ => new-safe/create/logic}/index.test.ts (95%) rename src/components/{create-safe => new-safe/create}/logic/index.ts (67%) rename src/components/new-safe/create/steps/{Step0 => ConnectWalletStep}/index.tsx (93%) rename src/components/new-safe/create/steps/{Step2 => OwnerPolicyStep}/index.tsx (84%) rename src/components/new-safe/create/steps/{Step2 => OwnerPolicyStep}/styles.module.css (100%) rename src/components/new-safe/create/steps/{Step2 => OwnerPolicyStep}/useSafeSetupHints.ts (100%) rename src/components/new-safe/create/steps/{Step3 => ReviewStep}/index.tsx (92%) rename src/components/new-safe/create/steps/{Step3 => ReviewStep}/styles.module.css (100%) rename src/components/new-safe/create/steps/{Step1 => SetNameStep}/index.tsx (86%) rename src/components/new-safe/create/steps/{Step1 => SetNameStep}/styles.module.css (100%) rename src/components/new-safe/create/steps/{Step4 => StatusStep}/LoadingSpinner/index.tsx (95%) rename src/components/new-safe/create/steps/{Step4 => StatusStep}/LoadingSpinner/styles.module.css (100%) rename src/components/new-safe/create/steps/{Step4 => StatusStep}/StatusMessage.tsx (97%) rename src/components/new-safe/create/steps/{Step4 => StatusStep}/StatusStep.tsx (93%) rename src/components/new-safe/create/steps/{Step4 => StatusStep}/StatusStepper.tsx (90%) rename src/components/{create-safe/status => new-safe/create/steps/StatusStep}/__tests__/useSafeCreation.test.ts (97%) rename src/components/{create-safe/status => new-safe/create/steps/StatusStep}/__tests__/useSafeCreationEffects.test.ts (60%) rename src/components/new-safe/create/steps/{Step4 => StatusStep}/index.tsx (94%) rename src/components/new-safe/create/steps/{Step4 => StatusStep}/styles.module.css (100%) rename src/components/new-safe/create/steps/{Step4 => StatusStep}/useSafeCreation.ts (93%) rename src/components/new-safe/create/steps/{Step4 => StatusStep}/useSafeCreationEffects.ts (90%) delete mode 100644 src/components/new-safe/create/steps/Step4/logic/index.ts rename src/components/{create-safe => new-safe/create}/types.d.ts (100%) rename src/components/{create-safe => new-safe/create}/useEstimateSafeCreationGas.ts (96%) rename src/services/tracking/{useABTesting.ts => useAbTesting.ts} (100%) diff --git a/src/components/create-safe/index.tsx b/src/components/create-safe/index.tsx deleted file mode 100644 index bd61cd99e8..0000000000 --- a/src/components/create-safe/index.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react' - -import ConnectWalletStep from '@/components/create-safe/steps/ConnectWalletStep' -import SetNameStep from '@/components/create-safe/steps/SetNameStep' -import OwnerPolicyStep from '@/components/create-safe/steps/OwnerPolicyStep' -import ReviewStep from '@/components/create-safe/steps/ReviewStep' -import { useRouter } from 'next/router' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import VerticalTxStepper from '@/components/tx/TxStepper/vertical' -import { AppRoutes } from '@/config/routes' -import { CreationStatus } from '@/components/create-safe/status/CreationStatus' -import type { PendingSafeData, SafeFormData } from '@/components/create-safe/types.d' -import { CREATE_SAFE_CATEGORY } from '@/services/analytics' -import css from './styles.module.css' - -export const CreateSafeSteps: TxStepperProps['steps'] = [ - { - label: 'Connect wallet & select network', - render: (_, onSubmit, onBack, setStep) => ( - - ), - }, - { - label: 'Name', - render: (data, onSubmit, onBack, setStep) => ( - - ), - }, - { - label: 'Owners and confirmations', - render: (data, onSubmit, onBack, setStep) => ( - - ), - }, - { - label: 'Review', - render: (data, onSubmit, onBack, setStep) => ( - - ), - }, - { - label: 'Status', - render: (data, onSubmit, onBack, setStep) => ( - - ), - }, -] - -const CreateSafe = () => { - const router = useRouter() - - const onClose = () => { - router.push(AppRoutes.welcome) - } - - return ( -
- -
- ) -} - -export default CreateSafe diff --git a/src/components/create-safe/status/ComputedSafeAddress.tsx b/src/components/create-safe/status/ComputedSafeAddress.tsx deleted file mode 100644 index 8d4b1ffb62..0000000000 --- a/src/components/create-safe/status/ComputedSafeAddress.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { Box, Skeleton, Typography } from '@mui/material' -import EthHashInfo from '@/components/common/EthHashInfo' - -const ComputedSafeAddress = ({ safeAddress }: { safeAddress?: string }) => { - return ( - - Your safe will have the following address after creation: - {safeAddress ? ( - - ) : ( - - )} - - ) -} - -export default ComputedSafeAddress diff --git a/src/components/create-safe/status/CreationStatus.tsx b/src/components/create-safe/status/CreationStatus.tsx deleted file mode 100644 index 86734be037..0000000000 --- a/src/components/create-safe/status/CreationStatus.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import { Box, Button, Divider, Grid, Paper, Typography, Tooltip } from '@mui/material' -import { SafeCreationStatus } from '@/components/create-safe/status/useSafeCreation' -import EthHashInfo from '@/components/common/EthHashInfo' -import Link from 'next/link' -import { AppRoutes } from '@/config/routes' - -import Track from '@/components/common/Track' -import { CREATE_SAFE_EVENTS } from '@/services/analytics/events/createLoadSafe' -import ComputedSafeAddress from '@/components/create-safe/status/ComputedSafeAddress' -import useSafeCreationEffects from '@/components/create-safe/status/useSafeCreationEffects' -import { useCallback } from 'react' -import { useSafeCreation } from '@/components/create-safe/status/useSafeCreation' -import type { StepRenderProps } from '@/components/tx/TxStepper/useTxStepper' -import type { PendingSafeData } from '@/components/create-safe/types.d' -import StatusMessage from '@/components/create-safe/status/StatusMessage' -import useWallet from '@/hooks/wallets/useWallet' -import useIsWrongChain from '@/hooks/useIsWrongChain' -import useStatus from '@/components/create-safe/status/useStatus' -import usePendingCreation from '@/components/create-safe/usePendingCreation' - -type Props = { - params: PendingSafeData - onSubmit: StepRenderProps['onSubmit'] - onBack: StepRenderProps['onBack'] - setStep: StepRenderProps['setStep'] -} - -export const CreationStatus = ({ params, setStep }: Props) => { - const [status, setStatus] = useStatus() - const [pendingSafe = params, setPendingSafe] = usePendingCreation() - const wallet = useWallet() - const isWrongChain = useIsWrongChain() - const isConnected = wallet && !isWrongChain - - const { createSafe, txHash } = useSafeCreation(pendingSafe, setPendingSafe, status, setStatus) - - useSafeCreationEffects({ - pendingSafe, - setPendingSafe, - status, - setStatus, - }) - - const onClose = useCallback(() => { - setPendingSafe(undefined) - setStep(0) - }, [setPendingSafe, setStep]) - - const onCreate = useCallback(() => { - setStatus(SafeCreationStatus.AWAITING) - void createSafe() - }, [createSafe, setStatus]) - - const displaySafeLink = status === SafeCreationStatus.INDEX_FAILED - - const displayActions = - status === SafeCreationStatus.ERROR || - status === SafeCreationStatus.REVERTED || - status === SafeCreationStatus.TIMEOUT || - status === SafeCreationStatus.WALLET_REJECTED - - return ( - - - - {txHash && ( - - Your Safe creation transaction: - - - - - )} - - {pendingSafe?.safeAddress && } - - {displaySafeLink && ( - - - - - - - - )} - - - - {displayActions && ( - - - - - - - - - - - - - )} - - ) -} diff --git a/src/components/create-safe/status/StatusMessage.tsx b/src/components/create-safe/status/StatusMessage.tsx deleted file mode 100644 index 83935f0f18..0000000000 --- a/src/components/create-safe/status/StatusMessage.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import { Box, Typography } from '@mui/material' -import { SafeCreationStatus } from '@/components/create-safe/status/useSafeCreation' -import css from '@/components/create-safe/status/styles.module.css' -import classNames from 'classnames' - -const getStep = (status: SafeCreationStatus) => { - const loading = ( - Image of a vault that is loading - ) - const indexed = Image of a vault - const error = ( - Image of a vault with a red error sign - ) - - switch (status) { - case SafeCreationStatus.AWAITING: - return { - image: loading, - description: 'Step 1/2: Waiting for transaction confirmation.', - instruction: 'Please confirm the transaction with your connected wallet.', - } - case SafeCreationStatus.WALLET_REJECTED: - return { - image: error, - description: 'Transaction was rejected.', - instruction: 'You can cancel or retry the Safe creation process.', - } - case SafeCreationStatus.PROCESSING: - return { - image: loading, - description: 'Step 2/2: Transaction is being executed.', - instruction: 'Please do not leave the page.', - } - case SafeCreationStatus.ERROR: - return { - image: error, - description: 'There was an error.', - instruction: 'You can cancel or retry the Safe creation process.', - } - case SafeCreationStatus.REVERTED: - return { - image: error, - description: 'Transaction was reverted.', - instruction: 'You can cancel or retry the Safe creation process.', - } - case SafeCreationStatus.TIMEOUT: - return { - image: error, - description: 'Transaction was not found. Be aware that it might still be processed.', - instruction: 'You can cancel or retry the Safe creation process.', - } - case SafeCreationStatus.SUCCESS: - return { - image: loading, - description: 'Your Safe was successfully created!', - instruction: 'It is now being indexed. Please do not leave the page.', - } - case SafeCreationStatus.INDEXED: - return { - image: indexed, - description: 'Your Safe was successfully indexed!', - instruction: 'Taking you to your dashboard...', - } - case SafeCreationStatus.INDEX_FAILED: - return { - image: error, - description: 'Your Safe is created and will be indexed by our services shortly.', - instruction: - 'You can already open your Safe. It might take a moment until it becomes fully usable in the interface.', - } - } -} - -const StatusMessage = ({ status }: { status: SafeCreationStatus }) => { - const stepInfo = getStep(status) - - return ( - <> - - {stepInfo.image} - - {stepInfo.description} - - - ({ backgroundColor: palette.primary.main })} padding={3} mb={3}> - - {stepInfo.instruction} - - - - ) -} - -export default StatusMessage diff --git a/src/components/create-safe/status/__tests__/CreationStatus.test.tsx b/src/components/create-safe/status/__tests__/CreationStatus.test.tsx deleted file mode 100644 index dc408e02e6..0000000000 --- a/src/components/create-safe/status/__tests__/CreationStatus.test.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import { CreationStatus } from '@/components/create-safe/status/CreationStatus' -import { act, fireEvent, render } from '@/tests/test-utils' -import type { PendingSafeData } from '@/components/create-safe/types.d' -import * as hooks from '@/components/create-safe/status/useSafeCreation' -import * as status from '@/components/create-safe/status/useStatus' -import * as localStorage from '@/services/local-storage/useLocalStorage' -import * as wrongChain from '@/hooks/useIsWrongChain' -import * as wallet from '@/hooks/wallets/useWallet' -import { SafeCreationStatus } from '@/components/create-safe/status/useSafeCreation' -import { waitFor } from '@testing-library/react' -import type { ConnectedWallet } from '@/hooks/wallets/useOnboard' - -describe('CreationStatus', () => { - const mockParams: PendingSafeData = { - address: '', - name: '', - owners: [], - saltNonce: 0, - threshold: 0, - safeAddress: '0x10', - } - - it('should display an AWAITING message by default', () => { - const { getByText } = render( - , - ) - - expect(getByText('Step 1/2: Waiting for transaction confirmation.')).toBeInTheDocument() - }) - - it('should display the txHash if it exists', () => { - jest.spyOn(hooks, 'useSafeCreation').mockReturnValue({ - txHash: '0x123', - createSafe: jest.fn(), - }) - - const { getByText } = render( - , - ) - - expect(getByText('Your Safe creation transaction:')).toBeInTheDocument() - expect(getByText('0x123')).toBeInTheDocument() // We render the address twice for desktop/mobile - }) - - it('should display the safe address if it exists', () => { - const { getByText } = render( - , - ) - - expect(getByText('0x10')).toBeInTheDocument() - }) - - it('should display a link to the safe on INDEX_FAILED', () => { - jest.spyOn(status, 'default').mockReturnValue([SafeCreationStatus.INDEX_FAILED, jest.fn()]) - - const { getByText } = render( - , - ) - - expect(getByText('Open your Safe')).toBeInTheDocument() - }) - - it('should display a retry button on ERROR', () => { - jest.spyOn(status, 'default').mockReturnValue([SafeCreationStatus.ERROR, jest.fn()]) - - const { getByText } = render( - , - ) - - expect(getByText('Retry')).toBeInTheDocument() - }) - - it('should display a retry button on REVERTED', () => { - jest.spyOn(status, 'default').mockReturnValue([SafeCreationStatus.REVERTED, jest.fn()]) - - const { getByText } = render( - , - ) - - expect(getByText('Retry')).toBeInTheDocument() - }) - - it('should display a retry button on TIMEOUT', () => { - jest.spyOn(status, 'default').mockReturnValue([SafeCreationStatus.TIMEOUT, jest.fn()]) - - const { getByText } = render( - , - ) - - expect(getByText('Retry')).toBeInTheDocument() - }) - - it('should display a retry button on WALLET_REJECTED', () => { - jest.spyOn(status, 'default').mockReturnValue([SafeCreationStatus.WALLET_REJECTED, jest.fn()]) - - const { getByText } = render( - , - ) - - expect(getByText('Retry')).toBeInTheDocument() - }) - - it('should create a safe tx on Retry', async () => { - jest.spyOn(wallet, 'default').mockReturnValue({} as ConnectedWallet) - jest.spyOn(wrongChain, 'default').mockReturnValue(false) - - const setStatusMock = jest.fn() - const createSafeMock = jest.fn() - jest.spyOn(status, 'default').mockReturnValue([SafeCreationStatus.ERROR, setStatusMock]) - jest.spyOn(hooks, 'useSafeCreation').mockReturnValue({ - txHash: '0x123', - createSafe: createSafeMock, - }) - - const { getByText } = render( - , - ) - - const button = getByText('Retry') - - await act(() => { - fireEvent.click(button) - }) - - await waitFor(() => { - expect(setStatusMock).toHaveBeenCalledWith(SafeCreationStatus.AWAITING) - expect(createSafeMock).toHaveBeenCalledTimes(1) - }) - }) - - it('should go back to first step and clear cache on Cancel', () => { - jest.spyOn(status, 'default').mockReturnValue([SafeCreationStatus.ERROR, jest.fn()]) - - const setPendingSafeMock = jest.fn() - jest.spyOn(localStorage, 'default').mockReturnValue([{}, setPendingSafeMock]) - - const setStepMock = jest.fn() - const { getByText } = render( - , - ) - - const button = getByText('Cancel') - - fireEvent.click(button) - expect(setStepMock).toHaveBeenCalledWith(0) - expect(setPendingSafeMock).toHaveBeenCalledWith(undefined) - }) -}) diff --git a/src/components/create-safe/status/styles.module.css b/src/components/create-safe/status/styles.module.css deleted file mode 100644 index d69155a569..0000000000 --- a/src/components/create-safe/status/styles.module.css +++ /dev/null @@ -1,10 +0,0 @@ -.image { - width: 138px; - height: 94px; -} - -.loading { - padding: 1px 12px; - border-radius: 4px; - background-color: #fff; -} diff --git a/src/components/create-safe/status/useSafeCreation.ts b/src/components/create-safe/status/useSafeCreation.ts deleted file mode 100644 index e7f18ab750..0000000000 --- a/src/components/create-safe/status/useSafeCreation.ts +++ /dev/null @@ -1,103 +0,0 @@ -import type { Dispatch, SetStateAction } from 'react' -import { useCallback, useEffect, useState } from 'react' -import { - createNewSafe, - getSafeCreationTxInfo, - getSafeDeployProps, - checkSafeCreationTx, - handleSafeCreationError, -} from '@/components/create-safe/logic' -import { useWeb3, useWeb3ReadOnly } from '@/hooks/wallets/web3' -import { useCurrentChain } from '@/hooks/useChains' -import useWallet from '@/hooks/wallets/useWallet' -import type { PendingSafeData, PendingSafeTx } from '@/components/create-safe/types.d' -import type { EthersError } from '@/utils/ethers-utils' -import { CREATE_SAFE_EVENTS, trackEvent } from '@/services/analytics' - -export enum SafeCreationStatus { - AWAITING = 'AWAITING', - PROCESSING = 'PROCESSING', - WALLET_REJECTED = 'WALLET_REJECTED', - ERROR = 'ERROR', - REVERTED = 'REVERTED', - TIMEOUT = 'TIMEOUT', - SUCCESS = 'SUCCESS', - INDEXED = 'INDEXED', - INDEX_FAILED = 'INDEX_FAILED', -} - -export const useSafeCreation = ( - pendingSafe: PendingSafeData | undefined, - setPendingSafe: Dispatch>, - status: SafeCreationStatus, - setStatus: Dispatch>, -) => { - const [isCreating, setIsCreating] = useState(false) - const [isWatching, setIsWatching] = useState(false) - - const wallet = useWallet() - const provider = useWeb3() - const web3ReadOnly = useWeb3ReadOnly() - const chain = useCurrentChain() - - const createSafeCallback = useCallback( - async (txHash: string, tx: PendingSafeTx) => { - trackEvent(CREATE_SAFE_EVENTS.SUBMIT_CREATE_SAFE) - setPendingSafe((prev) => (prev ? { ...prev, txHash, tx } : undefined)) - }, - [setPendingSafe], - ) - - const createSafe = useCallback(async () => { - if (!pendingSafe || !provider || !chain || !wallet || isCreating) return - - setIsCreating(true) - - try { - const tx = await getSafeCreationTxInfo(provider, pendingSafe, chain, pendingSafe.saltNonce, wallet) - - const safeParams = getSafeDeployProps( - { - threshold: pendingSafe.threshold, - owners: pendingSafe.owners.map((owner) => owner.address), - saltNonce: pendingSafe.saltNonce, - }, - (txHash) => createSafeCallback(txHash, tx), - chain.chainId, - ) - - await createNewSafe(provider, safeParams) - } catch (err) { - setStatus(handleSafeCreationError(err as EthersError)) - } - - setIsCreating(false) - }, [chain, createSafeCallback, isCreating, pendingSafe, provider, setStatus, wallet]) - - const watchSafeTx = useCallback(async () => { - if (!pendingSafe?.tx || !pendingSafe?.txHash || !web3ReadOnly || isWatching) return - - setStatus(SafeCreationStatus.PROCESSING) - setIsWatching(true) - - const txStatus = await checkSafeCreationTx(web3ReadOnly, pendingSafe.tx, pendingSafe.txHash) - setStatus(txStatus) - setIsWatching(false) - }, [isWatching, pendingSafe, web3ReadOnly, setStatus]) - - useEffect(() => { - if (status !== SafeCreationStatus.AWAITING) return - - if (pendingSafe?.txHash) { - void watchSafeTx() - return - } - - void createSafe() - }, [createSafe, watchSafeTx, pendingSafe?.txHash, status]) - - return { - createSafe, - txHash: pendingSafe?.txHash, - } -} diff --git a/src/components/create-safe/status/useSafeCreationEffects.ts b/src/components/create-safe/status/useSafeCreationEffects.ts deleted file mode 100644 index 167ae8963d..0000000000 --- a/src/components/create-safe/status/useSafeCreationEffects.ts +++ /dev/null @@ -1,114 +0,0 @@ -import type { Dispatch, SetStateAction } from 'react' -import { useEffect } from 'react' -import { useRouter } from 'next/router' -import { type UrlObject } from 'url' -import { pollSafeInfo } from '@/components/create-safe/logic' -import { AppRoutes } from '@/config/routes' -import { SafeCreationStatus } from '@/components/create-safe/status/useSafeCreation' -import { CREATE_SAFE_EVENTS, SAFE_APPS_EVENTS, trackEvent, trackSafeAppEvent } from '@/services/analytics' -import chains from '@/config/chains' -import { updateAddressBook } from '../logic/address-book' -import { useAppDispatch } from '@/store' -import type { PendingSafeData } from '@/components/create-safe/types.d' -import useChainId from '@/hooks/useChainId' - -const getRedirect = (chainId: string, safeAddress: string, redirectQuery?: string | string[]): UrlObject | string => { - const redirectUrl = Array.isArray(redirectQuery) ? redirectQuery[0] : redirectQuery - const chainPrefix = Object.keys(chains).find((prefix) => chains[prefix] === chainId) - const address = `${chainPrefix}:${safeAddress}` - - // Should never happen in practice - if (!chainPrefix) return AppRoutes.index - - // Go to the dashboard if no specific redirect is provided - if (!redirectUrl) { - return { pathname: AppRoutes.home, query: { safe: address } } - } - - // Otherwise, redirect to the provided URL (e.g. from a Safe App) - - // Track the redirect to Safe App - // TODO: Narrow this down to /apps only - if (redirectUrl.includes('apps')) { - trackSafeAppEvent({ ...SAFE_APPS_EVENTS.SHARED_APP_OPEN_AFTER_SAFE_CREATION, label: redirectUrl }) - } - - // We're prepending the safe address directly here because the `router.push` doesn't parse - // The URL for already existing query params - // TODO: Check if we can accomplish this with URLSearchParams or URL instead - const hasQueryParams = redirectUrl.includes('?') - const appendChar = hasQueryParams ? '&' : '?' - return redirectUrl + `${appendChar}safe=${address}` -} - -const useSafeCreationEffects = ({ - pendingSafe, - setPendingSafe, - status, - setStatus, -}: { - pendingSafe: PendingSafeData | undefined - setPendingSafe: Dispatch> - status: SafeCreationStatus - setStatus: Dispatch> -}) => { - const router = useRouter() - const dispatch = useAppDispatch() - const chainId = useChainId() - - useEffect(() => { - if (status === SafeCreationStatus.INDEXED) { - trackEvent(CREATE_SAFE_EVENTS.GET_STARTED) - - const { safeAddress } = pendingSafe || {} - setPendingSafe(undefined) - - if (safeAddress) { - router.push(getRedirect(chainId, safeAddress, router.query?.safeViewRedirectURL)) - } - return - } - - if (status === SafeCreationStatus.SUCCESS) { - trackEvent(CREATE_SAFE_EVENTS.CREATED_SAFE) - - // Add the Safe and add names to the address book - if (pendingSafe && pendingSafe.safeAddress) { - dispatch( - updateAddressBook( - chainId, - pendingSafe.safeAddress, - pendingSafe.name, - pendingSafe.owners, - pendingSafe.threshold, - ), - ) - } - - // Asynchronously wait for Safe creation - if (pendingSafe?.safeAddress) { - pollSafeInfo(chainId, pendingSafe.safeAddress) - .then(() => setStatus(SafeCreationStatus.INDEXED)) - .catch(() => setStatus(SafeCreationStatus.INDEX_FAILED)) - } - return - } - - if (status === SafeCreationStatus.WALLET_REJECTED) { - trackEvent(CREATE_SAFE_EVENTS.REJECT_CREATE_SAFE) - } - - if ( - status === SafeCreationStatus.WALLET_REJECTED || - status === SafeCreationStatus.ERROR || - status === SafeCreationStatus.REVERTED - ) { - if (pendingSafe?.txHash) { - setPendingSafe((prev) => (prev ? { ...prev, txHash: undefined, tx: undefined } : undefined)) - } - return - } - }, [router, dispatch, setPendingSafe, status, pendingSafe, setStatus, chainId]) -} - -export default useSafeCreationEffects diff --git a/src/components/create-safe/status/useStatus.ts b/src/components/create-safe/status/useStatus.ts deleted file mode 100644 index 80105b128d..0000000000 --- a/src/components/create-safe/status/useStatus.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { type Dispatch, type SetStateAction, useState } from 'react' -import { SafeCreationStatus } from '@/components/create-safe/status/useSafeCreation' - -const useStatus = (): [SafeCreationStatus, Dispatch>] => { - const [status, setStatus] = useState(SafeCreationStatus.AWAITING) - - return [status, setStatus] -} - -export default useStatus diff --git a/src/components/create-safe/steps/ConnectWalletStep.test.tsx b/src/components/create-safe/steps/ConnectWalletStep.test.tsx deleted file mode 100644 index 5c046f754b..0000000000 --- a/src/components/create-safe/steps/ConnectWalletStep.test.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { render } from '@/tests/test-utils' -import { ConnectWalletContent } from '@/components/create-safe/steps/ConnectWalletStep' -import { type ConnectedWallet } from '@/hooks/wallets/useOnboard' -import { type EIP1193Provider } from '@web3-onboard/core' - -describe('ConnectWalletContent', () => { - describe('Wallet is not connected', () => { - it('displays a button to connect the wallet', () => { - const { getByText } = render() - - expect(getByText('Connect a wallet')).toBeInTheDocument() - }) - }) - - describe('Wallet is connected', () => { - let mockWallet: ConnectedWallet - - beforeAll(() => { - mockWallet = { - address: '', - chainId: '', - label: '', - provider: null as unknown as EIP1193Provider, - } - }) - - it('displays a chain indicator', () => { - const { getByText } = render() - - expect(getByText('Creating a Safe on')).toBeInTheDocument() - }) - - it('displays a wallet connected message if on the correct chain', () => { - const { getByText } = render() - - expect(getByText('Wallet connected')).toBeInTheDocument() - }) - - it('displays a message if on the wrong chain', () => { - const { getByText } = render() - - expect(getByText('Your wallet connection must match the selected network.')).toBeInTheDocument() - }) - }) -}) diff --git a/src/components/create-safe/steps/ConnectWalletStep.tsx b/src/components/create-safe/steps/ConnectWalletStep.tsx deleted file mode 100644 index 539729dd36..0000000000 --- a/src/components/create-safe/steps/ConnectWalletStep.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import { Box, Button, Divider, Grid, Paper, Typography } from '@mui/material' -import type { StepRenderProps } from '@/components/tx/TxStepper/useTxStepper' -import useWallet from '@/hooks/wallets/useWallet' -import ChainSwitcher from '@/components/common/ChainSwitcher' -import WalletDetails from '@/components/common/ConnectWallet/WalletDetails' -import PairingDetails from '@/components/common/PairingDetails' -import { type ConnectedWallet } from '@/hooks/wallets/useOnboard' -import NetworkSelector from '@/components/common/NetworkSelector' -import useIsWrongChain from '@/hooks/useIsWrongChain' -import { useCurrentChain } from '@/hooks/useChains' -import { isPairingSupported } from '@/services/pairing/utils' - -import css from '@/components/create-safe/steps/styles.module.css' -import useSetCreationStep from '@/components/create-safe/useSetCreationStep' - -export const ConnectWalletContent = ({ - wallet, - isWrongChain, -}: { - wallet: ConnectedWallet | null - isWrongChain: boolean -}) => { - const chain = useCurrentChain() - const isSupported = isPairingSupported(chain?.disabledWallets) - - return ( - <> - {wallet && !isWrongChain && Wallet connected} - {wallet ? ( - - Creating a Safe on - - ) : ( - <> - In order to create a Safe you need to connect a wallet -
-
- -
- - {isSupported && ( -
- -
- )} -
- - )} - {isWrongChain && ( - - Your wallet connection must match the selected network. - - )} - - ) -} - -type Props = { - onSubmit: StepRenderProps['onSubmit'] - onBack: StepRenderProps['onBack'] - setStep: StepRenderProps['setStep'] -} - -const ConnectWalletStep = ({ onSubmit, onBack, setStep }: Props) => { - useSetCreationStep(setStep) - const isWrongChain = useIsWrongChain() - const wallet = useWallet() - - const isDisabled = !wallet || isWrongChain - - return ( - - - - - - - - - - - - - - - - - ) -} - -export default ConnectWalletStep diff --git a/src/components/create-safe/steps/OwnerPolicyStep.tsx b/src/components/create-safe/steps/OwnerPolicyStep.tsx deleted file mode 100644 index 8d122ce3a1..0000000000 --- a/src/components/create-safe/steps/OwnerPolicyStep.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import { Box, Button, Divider, FormControl, Grid, MenuItem, Paper, Select, Typography, SvgIcon } from '@mui/material' -import type { ReactElement } from 'react' -import { FormProvider, useFieldArray, useForm } from 'react-hook-form' - -import ChainIndicator from '@/components/common/ChainIndicator' -import useSetCreationStep from '@/components/create-safe/useSetCreationStep' -import type { StepRenderProps } from '@/components/tx/TxStepper/useTxStepper' -import useAddressBook from '@/hooks/useAddressBook' -import useWallet from '@/hooks/wallets/useWallet' -import { OwnerRow } from '@/components/create-safe/steps/OwnerRow' -import type { NamedAddress, SafeFormData } from '@/components/create-safe/types' -import { trackEvent, CREATE_SAFE_EVENTS } from '@/services/analytics' -import AddIcon from '@/public/images/common/add.svg' - -type Props = { - params: SafeFormData - onSubmit: StepRenderProps['onSubmit'] - onBack: StepRenderProps['onBack'] - setStep: StepRenderProps['setStep'] -} - -enum FieldName { - owners = 'owners', - threshold = 'threshold', -} - -const OwnerPolicyStep = ({ params, onSubmit, setStep, onBack }: Props): ReactElement => { - useSetCreationStep(setStep) - const wallet = useWallet() - const addressBook = useAddressBook() - - const defaultOwnerAddressBookName = wallet?.address ? addressBook[wallet.address] : undefined - - const defaultOwner: NamedAddress = { - name: defaultOwnerAddressBookName || wallet?.ens || '', - address: wallet?.address || '', - } - - const defaultThreshold = params.threshold || 1 - - const formMethods = useForm({ - mode: 'onChange', - defaultValues: { - name: params.name, - owners: params.owners ?? [defaultOwner], - threshold: defaultThreshold, - }, - }) - const { register, handleSubmit, control, formState, watch, setValue, getValues } = formMethods - const currentThreshold = watch(FieldName.threshold) - const isValid = Object.keys(formState.errors).length === 0 // do not use formState.isValid because names can be empty - - const { - fields: ownerFields, - append, - remove, - } = useFieldArray({ - control, - name: FieldName.owners, - }) - const ownerLength = ownerFields.length - - const addOwner = () => { - append({ name: '', address: '' }) - } - - const removeOwner = (index: number) => { - remove(index) - - // Make sure the threshold is not higher than the number of owners - if (currentThreshold >= ownerLength) { - setValue<'threshold'>(FieldName.threshold, ownerLength - 1) - } - } - - const onFormSubmit = handleSubmit((data: SafeFormData) => { - onSubmit(data) - - trackEvent({ - ...CREATE_SAFE_EVENTS.OWNERS, - label: data.owners.length, - }) - - trackEvent({ - ...CREATE_SAFE_EVENTS.THRESHOLD, - label: data.threshold, - }) - }) - - const onFormBack = () => { - onBack(getValues()) - } - - return ( - - -
- - - Your Safe will have one or more owners. We have prefilled the first owner with your connected wallet - details, but you are free to change this to a different owner. - - - - Add additional owners (e.g. wallets of your teammates) and specify how many of them have to confirm a - transaction before it gets executed. In general, the more confirmations required, the more secure your - Safe is. Learn about which Safe setup to use. The new Safe will ONLY be available on{' '} - - - - - - - - - Name - - - - Address - - - - - - - - - {ownerFields.map((field, index) => ( - - ))} - - - - - Any transaction requires the confirmation of: - - - - - - - - out of {ownerLength} owner{ownerLength > 1 && 's'} - - - - - - - - - - - - - - -
-
- ) -} - -export default OwnerPolicyStep diff --git a/src/components/create-safe/steps/OwnerRow.tsx b/src/components/create-safe/steps/OwnerRow.tsx deleted file mode 100644 index a7f96ae1b4..0000000000 --- a/src/components/create-safe/steps/OwnerRow.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { useCallback, useEffect, useMemo } from 'react' -import { CircularProgress, FormControl, Grid, IconButton, SvgIcon } from '@mui/material' -import NameInput from '@/components/common/NameInput' -import InputAdornment from '@mui/material/InputAdornment' -import AddressBookInput from '@/components/common/AddressBookInput' -import DeleteIcon from '@/public/images/common/delete.svg' -import { useFormContext, useWatch } from 'react-hook-form' -import { useAddressResolver } from '@/hooks/useAddressResolver' -import EthHashInfo from '@/components/common/EthHashInfo' -import type { NamedAddress } from '@/components/create-safe/types' - -export const OwnerRow = ({ - index, - groupName, - remove, - readOnly = false, -}: { - index: number - groupName: string - remove?: (index: number) => void - readOnly?: boolean -}) => { - const fieldName = `${groupName}.${index}` - const { control, getValues, setValue } = useFormContext() - const owners = useWatch({ - control, - name: groupName, - }) - const owner = useWatch({ - control, - name: fieldName, - }) - - const deps = useMemo(() => { - return Array.from({ length: owners.length }, (_, i) => `${groupName}.${i}`) - }, [owners, groupName]) - - const validateSafeAddress = useCallback( - async (address: string) => { - if (owners.filter((owner: NamedAddress) => owner.address === address).length > 1) { - return 'Owner is already added' - } - }, - [owners], - ) - - const { ens, name, resolving } = useAddressResolver(owner.address) - - useEffect(() => { - if (ens) { - setValue(`${fieldName}.ens`, ens) - } - - if (name && !getValues(`${fieldName}.name`)) { - setValue(`${fieldName}.name`, name) - } - }, [ens, setValue, getValues, name, fieldName]) - - return ( - - - - - - - ) : null, - }} - /> - - - - {readOnly ? ( - - ) : ( - - - - )} - - {!readOnly && ( - - {index > 0 && ( - <> - remove?.(index)} size="small"> - - - - )} - - )} - - ) -} diff --git a/src/components/create-safe/steps/ReviewStep.tsx b/src/components/create-safe/steps/ReviewStep.tsx deleted file mode 100644 index 83a8047cdf..0000000000 --- a/src/components/create-safe/steps/ReviewStep.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import ChainIndicator from '@/components/common/ChainIndicator' -import EthHashInfo from '@/components/common/EthHashInfo' -import useSetCreationStep from '@/components/create-safe/useSetCreationStep' -import type { StepRenderProps } from '@/components/tx/TxStepper/useTxStepper' -import useGasPrice from '@/hooks/useGasPrice' -import { formatVisualAmount } from '@/utils/formatters' -import { Box, Button, Divider, Grid, Paper, Typography } from '@mui/material' -import { useMemo } from 'react' -import { useEstimateSafeCreationGas } from '../useEstimateSafeCreationGas' -import { useCurrentChain } from '@/hooks/useChains' -import type { SafeFormData } from '@/components/create-safe/types' -import { getFallbackHandlerContractInstance } from '@/services/contracts/safeContracts' -import { computeNewSafeAddress } from '@/components/create-safe/logic' -import { useWeb3 } from '@/hooks/wallets/web3' -import useWallet from '@/hooks/wallets/useWallet' -import usePendingCreation from '../usePendingCreation' - -type Props = { - params: SafeFormData - onSubmit: StepRenderProps['onSubmit'] - onBack: StepRenderProps['onBack'] - setStep: StepRenderProps['setStep'] -} - -const ReviewStep = ({ params, onSubmit, setStep, onBack }: Props) => { - useSetCreationStep(setStep) - const wallet = useWallet() - const provider = useWeb3() - const chain = useCurrentChain() - const saltNonce = useMemo(() => Date.now(), []) - const [_, setPendingSafe] = usePendingCreation() - - const { maxFeePerGas, maxPriorityFeePerGas } = useGasPrice() - - const safeParams = useMemo(() => { - return { - owners: params.owners.map((owner) => owner.address), - threshold: params.threshold, - saltNonce, - } - }, [params.owners, params.threshold, saltNonce]) - - const { gasLimit } = useEstimateSafeCreationGas(safeParams) - - const totalFee = - gasLimit && maxFeePerGas && maxPriorityFeePerGas - ? formatVisualAmount(maxFeePerGas.add(maxPriorityFeePerGas).mul(gasLimit), chain?.nativeCurrency.decimals) - : '> 0.001' - - const createSafe = async () => { - if (!wallet || !provider || !chain) return - - const fallbackHandler = getFallbackHandlerContractInstance(chain.chainId) - - const props = { - safeAccountConfig: { - threshold: params.threshold, - owners: params.owners.map((owner) => owner.address), - fallbackHandler: fallbackHandler.getAddress(), - }, - safeDeploymentConfig: { - saltNonce: saltNonce.toString(), - }, - } - - const safeAddress = await computeNewSafeAddress(provider, props) - - setPendingSafe({ ...params, saltNonce, safeAddress }) - onSubmit({ ...params, saltNonce, safeAddress }) - } - - return ( - - - - - Details - - Name of the new Safe - - {params.name} - - Any transaction requires the confirmation of: - - - {params.threshold} out of {params.owners.length} - - - - [undefined, undefined, `1px solid ${palette.border.light}`]} - borderTop={({ palette }) => [`1px solid ${palette.border.light}`, undefined, 'none']} - > - {params.owners.length} Safe owners - - - {params.owners.map((owner) => { - return ( - - - - ) - })} - - - - - theme.palette.background.main}> - - You are about to create a new Safe on and will have to confirm a transaction with - your currently connected wallet. The creation will cost approximately {totalFee}{' '} - {chain?.nativeCurrency.symbol}. The exact amount will be determined by your wallet. - - - - - - - - - - - - - - - ) -} - -export default ReviewStep diff --git a/src/components/create-safe/steps/SetNameStep.tsx b/src/components/create-safe/steps/SetNameStep.tsx deleted file mode 100644 index d79b122403..0000000000 --- a/src/components/create-safe/steps/SetNameStep.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import ChainIndicator from '@/components/common/ChainIndicator' -import NameInput from '@/components/common/NameInput' -import useSetCreationStep from '@/components/create-safe/useSetCreationStep' -import type { StepRenderProps } from '@/components/tx/TxStepper/useTxStepper' -import { useMnemonicSafeName } from '@/hooks/useMnemonicName' -import { Box, Button, Divider, FormControl, Grid, Paper, Typography } from '@mui/material' -import { FormProvider, useForm } from 'react-hook-form' -import type { SafeFormData } from '@/components/create-safe/types' -import { trackEvent, CREATE_SAFE_EVENTS } from '@/services/analytics' -import ExternalLink from '@/components/common/ExternalLink' - -type Props = { - params: SafeFormData - onSubmit: StepRenderProps['onSubmit'] - onBack: StepRenderProps['onBack'] - setStep: StepRenderProps['setStep'] -} - -enum FormField { - address = 'address', - name = 'name', -} - -const SetNameStep = ({ params, onSubmit, onBack, setStep }: Props) => { - useSetCreationStep(setStep) - const fallbackName = useMnemonicSafeName() - - const formMethods = useForm({ - defaultValues: { - name: params?.name, - }, - mode: 'onChange', - }) - - const { handleSubmit, getValues } = formMethods - - const onFormSubmit = handleSubmit((data: SafeFormData) => { - onSubmit({ - ...data, - name: data.name || fallbackName, - }) - - if (data.name) { - trackEvent(CREATE_SAFE_EVENTS.NAME_SAFE) - } - }) - - const onFormBack = () => { - onBack({ - ...getValues(), - name: getValues([FormField.name]) || fallbackName, - }) - } - - return ( - - -
- - - You are about to create a new Safe wallet with one or more owners. First, let's give your new wallet - a name. This name is only stored locally and will never be shared with us or any third parties. The new - Safe will ONLY be available on - - - - - - - - By continuing you consent to the{' '} - - terms of use - {' '} - and{' '} - - privacy policy - - . - - - - - - - - - - - - - - - - - -
-
- ) -} - -export default SetNameStep diff --git a/src/components/create-safe/steps/styles.module.css b/src/components/create-safe/steps/styles.module.css deleted file mode 100644 index 350996a9f4..0000000000 --- a/src/components/create-safe/steps/styles.module.css +++ /dev/null @@ -1,51 +0,0 @@ -.connectionOptions { - display: flex; - flex-direction: row; - align-items: flex-start; - gap: var(--space-12); - padding: var(--space-2) var(--space-6); -} - -.wallet { - display: flex; - flex-direction: column; - align-items: center; - gap: var(--space-3); -} - -.pairing { - display: flex; - flex-direction: row; - align-items: center; - gap: var(--space-2); -} - -.pairing > svg { - padding-top: 20px; -} - -.pairing > div { - display: flex; - flex-direction: column; - align-items: flex-start; - max-width: 240px; - gap: var(--space-1); -} - -.pairing > div:first-child { - align-items: center; -} - -.pairing :global .MuiTypography-alignCenter { - text-align: unset; -} - -@media (max-width: 600px) { - .pairing { - display: none; - } - - .connectionOptions { - justify-content: center; - } -} diff --git a/src/components/create-safe/styles.module.css b/src/components/create-safe/styles.module.css deleted file mode 100644 index adce2f249f..0000000000 --- a/src/components/create-safe/styles.module.css +++ /dev/null @@ -1,16 +0,0 @@ -.stepper :global .active-4 > div { - display: none; -} - -.stepper :global .active-4 > div:last-child { - display: block; -} - -.stepper :global .active-4 > div:last-child > span { - display: none; -} - -.stepper :global .active-4 > div:last-child > div { - padding-left: var(--space-1); - margin-left: 0; -} diff --git a/src/components/create-safe/usePendingCreation.ts b/src/components/create-safe/usePendingCreation.ts deleted file mode 100644 index 759d5e872c..0000000000 --- a/src/components/create-safe/usePendingCreation.ts +++ /dev/null @@ -1,10 +0,0 @@ -import useLocalStorage from '@/services/local-storage/useLocalStorage' -import type { PendingSafeData } from './types' - -const SAFE_PENDING_CREATION_STORAGE_KEY = 'pendingSafe' - -const usePendingCreation = () => { - return useLocalStorage(SAFE_PENDING_CREATION_STORAGE_KEY) -} - -export default usePendingCreation diff --git a/src/components/create-safe/useSetCreationStep.ts b/src/components/create-safe/useSetCreationStep.ts deleted file mode 100644 index f8ed889052..0000000000 --- a/src/components/create-safe/useSetCreationStep.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { useEffect } from 'react' -import type { StepRenderProps } from '@/components/tx/TxStepper/useTxStepper' -import useIsWrongChain from '@/hooks/useIsWrongChain' -import useWallet from '@/hooks/wallets/useWallet' -import usePendingCreation from './usePendingCreation' - -const useSetCreationStep = (setStep: StepRenderProps['setStep']) => { - const [pendingSafe] = usePendingCreation() - const wallet = useWallet() - const isWrongChain = useIsWrongChain() - - useEffect(() => { - if (isWrongChain || !wallet) { - setStep(0) - } - - // Jump to the status screen if there is already a tx submitted - if (pendingSafe) { - setStep(4) - } - }, [setStep, isWrongChain, wallet, pendingSafe]) -} - -export default useSetCreationStep diff --git a/src/components/new-safe/OwnerRow/index.tsx b/src/components/new-safe/OwnerRow/index.tsx index f9f4ae34cf..103dc5895f 100644 --- a/src/components/new-safe/OwnerRow/index.tsx +++ b/src/components/new-safe/OwnerRow/index.tsx @@ -7,10 +7,11 @@ import DeleteIcon from '@/public/images/common/delete.svg' import { useFormContext, useWatch } from 'react-hook-form' import { useAddressResolver } from '@/hooks/useAddressResolver' import EthHashInfo from '@/components/common/EthHashInfo' -import type { NamedAddress } from '@/components/create-safe/types' +import type { NamedAddress } from '@/components/new-safe/create/types' import useWallet from '@/hooks/wallets/useWallet' import { sameAddress } from '@/utils/addresses' import css from './styles.module.css' +import classNames from 'classnames' export const OwnerRow = ({ index, @@ -63,8 +64,17 @@ export const OwnerRow = ({ } }, [ens, setValue, getValues, name, fieldName]) + const walletIsOwner = owner.address === wallet?.address + return ( - + diff --git a/src/components/new-safe/OwnerRow/styles.module.css b/src/components/new-safe/OwnerRow/styles.module.css index 434db87c10..3369f41056 100644 --- a/src/components/new-safe/OwnerRow/styles.module.css +++ b/src/components/new-safe/OwnerRow/styles.module.css @@ -9,3 +9,9 @@ bottom: 0; } } + +@media (min-width: 900px) { + .helper { + margin-bottom: var(--space-5); + } +} diff --git a/src/components/new-safe/create/CreateSafeInfos/index.tsx b/src/components/new-safe/create/CreateSafeInfos/index.tsx index 821d03fab1..1f5211f6dd 100644 --- a/src/components/new-safe/create/CreateSafeInfos/index.tsx +++ b/src/components/new-safe/create/CreateSafeInfos/index.tsx @@ -1,4 +1,4 @@ -import InfoWidget from '@/components/create-safe/InfoWidget' +import InfoWidget from '@/components/new-safe/create/InfoWidget' import { Grid } from '@mui/material' import type { AlertColor } from '@mui/material' import { type ReactElement } from 'react' diff --git a/src/components/create-safe/InfoWidget/index.tsx b/src/components/new-safe/create/InfoWidget/index.tsx similarity index 96% rename from src/components/create-safe/InfoWidget/index.tsx rename to src/components/new-safe/create/InfoWidget/index.tsx index 1dfdbf9293..8e3e41004a 100644 --- a/src/components/create-safe/InfoWidget/index.tsx +++ b/src/components/new-safe/create/InfoWidget/index.tsx @@ -14,7 +14,7 @@ import type { AlertColor } from '@mui/material' import type { ReactElement } from 'react' import LightbulbIcon from '@/public/images/common/lightbulb.svg' import ExpandMoreIcon from '@mui/icons-material/ExpandMore' -import css from './styles.module.css' +import css from 'src/components/new-safe/create/InfoWidget/styles.module.css' import { CREATE_SAFE_EVENTS, trackEvent } from '@/services/analytics' type InfoWidgetProps = { diff --git a/src/components/create-safe/InfoWidget/styles.module.css b/src/components/new-safe/create/InfoWidget/styles.module.css similarity index 100% rename from src/components/create-safe/InfoWidget/styles.module.css rename to src/components/new-safe/create/InfoWidget/styles.module.css diff --git a/src/components/create-safe/__tests__/useEstimateSafeCreationGas.test.ts b/src/components/new-safe/create/__tests__/useEstimateSafeCreationGas.test.ts similarity index 95% rename from src/components/create-safe/__tests__/useEstimateSafeCreationGas.test.ts rename to src/components/new-safe/create/__tests__/useEstimateSafeCreationGas.test.ts index eebd69bba2..18f6ae4fb0 100644 --- a/src/components/create-safe/__tests__/useEstimateSafeCreationGas.test.ts +++ b/src/components/new-safe/create/__tests__/useEstimateSafeCreationGas.test.ts @@ -1,5 +1,5 @@ -import * as sender from '@/components/create-safe/logic' -import { useEstimateSafeCreationGas } from '@/components/create-safe/useEstimateSafeCreationGas' +import * as sender from '@/components/new-safe/create/logic' +import { useEstimateSafeCreationGas } from '@/components/new-safe/create/useEstimateSafeCreationGas' import * as chainIdModule from '@/hooks/useChainId' import { type ConnectedWallet } from '@/hooks/wallets/useOnboard' import * as wallet from '@/hooks/wallets/useWallet' diff --git a/src/components/new-safe/create/index.tsx b/src/components/new-safe/create/index.tsx index e554a3d51c..00248d32e5 100644 --- a/src/components/new-safe/create/index.tsx +++ b/src/components/new-safe/create/index.tsx @@ -3,13 +3,13 @@ import { useRouter } from 'next/router' import useWallet from '@/hooks/wallets/useWallet' import OverviewWidget from '@/components/new-safe/create/OverviewWidget' -import type { NamedAddress } from '@/components/create-safe/types' +import type { NamedAddress } from '@/components/new-safe/create/types' import type { TxStepperProps } from '@/components/new-safe/CardStepper/useCardStepper' -import CreateSafeStep0 from '@/components/new-safe/create/steps/Step0' -import CreateSafeStep1 from '@/components/new-safe/create/steps/Step1' -import CreateSafeStep2 from '@/components/new-safe/create/steps/Step2' -import CreateSafeStep3 from '@/components/new-safe/create/steps/Step3' -import { CreateSafeStatus } from '@/components/new-safe/create/steps/Step4' +import ConnectWalletStep from '@/components/new-safe/create/steps/ConnectWalletStep' +import SetNameStep from '@/components/new-safe/create/steps/SetNameStep' +import OwnerPolicyStep from '@/components/new-safe/create/steps/OwnerPolicyStep' +import ReviewStep from '@/components/new-safe/create/steps/ReviewStep' +import { CreateSafeStatus } from '@/components/new-safe/create/steps/StatusStep' import useAddressBook from '@/hooks/useAddressBook' import { CardStepper } from '@/components/new-safe/CardStepper' import { AppRoutes } from '@/config/routes' @@ -116,21 +116,21 @@ const CreateSafe = () => { title: 'Connect wallet', subtitle: 'The connected wallet will pay the network fees for the Safe creation.', render: (data, onSubmit, onBack, setStep) => ( - + ), }, { title: 'Select network and name your Safe', subtitle: 'Select the network on which to create your Safe', render: (data, onSubmit, onBack, setStep) => ( - + ), }, { title: 'Owners and confirmations', subtitle: 'Set the owner wallets of your Safe and how many need to confirm to execute a valid transaction.', render: (data, onSubmit, onBack, setStep) => ( - { subtitle: "You're about to create a new Safe and will have to confirm the transaction with your connected wallet.", render: (data, onSubmit, onBack, setStep) => ( - + ), }, { diff --git a/src/components/create-safe/logic/address-book.ts b/src/components/new-safe/create/logic/address-book.ts similarity index 94% rename from src/components/create-safe/logic/address-book.ts rename to src/components/new-safe/create/logic/address-book.ts index b99c43787f..d35c9bfce4 100644 --- a/src/components/create-safe/logic/address-book.ts +++ b/src/components/new-safe/create/logic/address-book.ts @@ -2,7 +2,7 @@ import type { AppThunk } from '@/store' import { addOrUpdateSafe } from '@/store/addedSafesSlice' import { upsertAddressBookEntry } from '@/store/addressBookSlice' import { defaultSafeInfo } from '@/store/safeInfoSlice' -import type { NamedAddress } from '../types' +import type { NamedAddress } from '@/components/new-safe/create/types' export const updateAddressBook = ( chainId: string, diff --git a/src/components/create-safe/logic/__tests__/index.test.ts b/src/components/new-safe/create/logic/index.test.ts similarity index 95% rename from src/components/create-safe/logic/__tests__/index.test.ts rename to src/components/new-safe/create/logic/index.test.ts index 4ef3e478b1..443c935e22 100644 --- a/src/components/create-safe/logic/__tests__/index.test.ts +++ b/src/components/new-safe/create/logic/index.test.ts @@ -3,10 +3,10 @@ import { BigNumber } from '@ethersproject/bignumber' import { EMPTY_DATA, ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' import * as web3 from '@/hooks/wallets/web3' import type { TransactionReceipt } from '@ethersproject/abstract-provider' -import { checkSafeCreationTx, handleSafeCreationError } from '@/components/create-safe/logic' -import { SafeCreationStatus } from '@/components/create-safe/status/useSafeCreation' +import { checkSafeCreationTx, handleSafeCreationError } from '@/components/new-safe/create/logic/index' import { ErrorCode } from '@ethersproject/logger' import { EthersTxReplacedReason } from '@/utils/ethers-utils' +import { SafeCreationStatus } from '@/components/new-safe/create/steps/StatusStep/useSafeCreation' const provider = new JsonRpcProvider(undefined, { name: 'rinkeby', chainId: 4 }) @@ -47,7 +47,7 @@ describe('checkSafeCreationTx', () => { waitForTxSpy.mockImplementationOnce(() => Promise.resolve(receipt)) - const result = await checkSafeCreationTx(provider, mockPendingTx, '0x0') + const result = await checkSafeCreationTx(provider, mockPendingTx, '0x0', jest.fn()) expect(result).toBe(SafeCreationStatus.SUCCESS) }) @@ -59,7 +59,7 @@ describe('checkSafeCreationTx', () => { waitForTxSpy.mockImplementationOnce(() => Promise.resolve(receipt)) - const result = await checkSafeCreationTx(provider, mockPendingTx, '0x0') + const result = await checkSafeCreationTx(provider, mockPendingTx, '0x0', jest.fn()) expect(result).toBe(SafeCreationStatus.REVERTED) }) @@ -74,7 +74,7 @@ describe('checkSafeCreationTx', () => { waitForTxSpy.mockImplementationOnce(() => Promise.reject(mockEthersError)) - const result = await checkSafeCreationTx(provider, mockPendingTx, '0x0') + const result = await checkSafeCreationTx(provider, mockPendingTx, '0x0', jest.fn()) expect(result).toBe(SafeCreationStatus.TIMEOUT) }) @@ -87,7 +87,7 @@ describe('checkSafeCreationTx', () => { } waitForTxSpy.mockImplementationOnce(() => Promise.reject(mockEthersError)) - const result = await checkSafeCreationTx(provider, mockPendingTx, '0x0') + const result = await checkSafeCreationTx(provider, mockPendingTx, '0x0', jest.fn()) expect(result).toBe(SafeCreationStatus.SUCCESS) }) @@ -100,7 +100,7 @@ describe('checkSafeCreationTx', () => { } waitForTxSpy.mockImplementationOnce(() => Promise.reject(mockEthersError)) - const result = await checkSafeCreationTx(provider, mockPendingTx, '0x0') + const result = await checkSafeCreationTx(provider, mockPendingTx, '0x0', jest.fn()) expect(result).toBe(SafeCreationStatus.ERROR) }) diff --git a/src/components/create-safe/logic/index.ts b/src/components/new-safe/create/logic/index.ts similarity index 67% rename from src/components/create-safe/logic/index.ts rename to src/components/new-safe/create/logic/index.ts index 3aa7b95cfa..aec298b490 100644 --- a/src/components/create-safe/logic/index.ts +++ b/src/components/new-safe/create/logic/index.ts @@ -1,26 +1,35 @@ import type { Web3Provider, JsonRpcProvider } from '@ethersproject/providers' -import type Safe from '@safe-global/safe-core-sdk' -import { SafeFactory, type DeploySafeProps } from '@safe-global/safe-core-sdk' -import { createEthersAdapter } from '@/hooks/coreSDK/safeCoreSDK' -import type { ChainInfo, SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' -import { EMPTY_DATA, ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' +import type { ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' import { getFallbackHandlerContractInstance, getGnosisSafeContractInstance, getProxyFactoryContractInstance, } from '@/services/contracts/safeContracts' -import { LATEST_SAFE_VERSION } from '@/config/constants' -import type { PredictSafeProps } from '@safe-global/safe-core-sdk/dist/src/safeFactory' -import type { SafeFormData, PendingSafeTx } from '@/components/create-safe/types.d' import type { ConnectedWallet } from '@/services/onboard' import { BigNumber } from '@ethersproject/bignumber' -import { getSafeInfo } from '@safe-global/safe-gateway-typescript-sdk' -import { backOff } from 'exponential-backoff' -import { SafeCreationStatus } from '@/components/create-safe/status/useSafeCreation' +import { SafeCreationStatus } from '@/components/new-safe/create/steps/StatusStep/useSafeCreation' import { didRevert, type EthersError } from '@/utils/ethers-utils' import { Errors, logError } from '@/services/exceptions' import { ErrorCode } from '@ethersproject/logger' import { isWalletRejection } from '@/utils/wallets' +import type { PendingSafeTx } from '@/components/new-safe/create/types' +import type { NewSafeFormData } from '@/components/new-safe/create' +import type { UrlObject } from 'url' +import chains from '@/config/chains' +import { AppRoutes } from '@/config/routes' +import { SAFE_APPS_EVENTS, trackEvent } from '@/services/analytics' +import type { AppDispatch, AppThunk } from '@/store' +import { showNotification } from '@/store/notificationsSlice' +import { formatError } from '@/hooks/useTxNotifications' +import { SafeFactory } from '@safe-global/safe-core-sdk' +import type Safe from '@safe-global/safe-core-sdk' +import type { DeploySafeProps } from '@safe-global/safe-core-sdk' +import { createEthersAdapter } from '@/hooks/coreSDK/safeCoreSDK' +import type { PredictSafeProps } from '@safe-global/safe-core-sdk/dist/src/safeFactory' +import { getSafeInfo, type SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' +import { backOff } from 'exponential-backoff' +import { LATEST_SAFE_VERSION } from '@/config/constants' +import { EMPTY_DATA, ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' export type SafeCreationProps = { owners: string[] @@ -104,9 +113,8 @@ export const encodeSafeCreationTx = ({ */ export const getSafeCreationTxInfo = async ( provider: Web3Provider, - params: SafeFormData, + params: NewSafeFormData, chain: ChainInfo, - saltNonce: number, wallet: ConnectedWallet, ): Promise => { const proxyContract = getProxyFactoryContractInstance(chain.chainId) @@ -114,7 +122,7 @@ export const getSafeCreationTxInfo = async ( const data = encodeSafeCreationTx({ owners: params.owners.map((owner) => owner.address), threshold: params.threshold, - saltNonce, + saltNonce: params.saltNonce, chain, }) @@ -179,10 +187,25 @@ export const handleSafeCreationError = (error: EthersError) => { return SafeCreationStatus.TIMEOUT } +export const SAFE_CREATION_ERROR_KEY = 'create-safe-error' +export const showSafeCreationError = (error: EthersError): AppThunk => { + return (dispatch) => { + dispatch( + showNotification({ + message: `Your transaction was unsuccessful. Reason: ${formatError(error)}`, + detailedMessage: error.message, + groupKey: SAFE_CREATION_ERROR_KEY, + variant: 'error', + }), + ) + } +} + export const checkSafeCreationTx = async ( provider: JsonRpcProvider, pendingTx: PendingSafeTx, txHash: string, + dispatch: AppDispatch, ): Promise => { const TIMEOUT_TIME = 6.5 * 60 * 1000 // 6.5 minutes @@ -195,6 +218,47 @@ export const checkSafeCreationTx = async ( return SafeCreationStatus.SUCCESS } catch (err) { - return handleSafeCreationError(err as EthersError) + const _err = err as EthersError + + const status = handleSafeCreationError(_err) + + if (status !== SafeCreationStatus.SUCCESS) { + dispatch(showSafeCreationError(_err)) + } + + return status + } +} + +export const getRedirect = ( + chainId: string, + safeAddress: string, + redirectQuery?: string | string[], +): UrlObject | string => { + const redirectUrl = Array.isArray(redirectQuery) ? redirectQuery[0] : redirectQuery + const chainPrefix = Object.keys(chains).find((prefix) => chains[prefix] === chainId) + const address = `${chainPrefix}:${safeAddress}` + + // Should never happen in practice + if (!chainPrefix) return AppRoutes.index + + // Go to the dashboard if no specific redirect is provided + if (!redirectUrl) { + return { pathname: AppRoutes.home, query: { safe: address, showCreationModal: true } } } + + // Otherwise, redirect to the provided URL (e.g. from a Safe App) + + // Track the redirect to Safe App + // TODO: Narrow this down to /apps only + if (redirectUrl.includes('apps')) { + trackEvent(SAFE_APPS_EVENTS.SHARED_APP_OPEN_AFTER_SAFE_CREATION) + } + + // We're prepending the safe address directly here because the `router.push` doesn't parse + // The URL for already existing query params + // TODO: Check if we can accomplish this with URLSearchParams or URL instead + const hasQueryParams = redirectUrl.includes('?') + const appendChar = hasQueryParams ? '&' : '?' + return redirectUrl + `${appendChar}safe=${address}` } diff --git a/src/components/new-safe/create/steps/Step0/index.tsx b/src/components/new-safe/create/steps/ConnectWalletStep/index.tsx similarity index 93% rename from src/components/new-safe/create/steps/Step0/index.tsx rename to src/components/new-safe/create/steps/ConnectWalletStep/index.tsx index 48e5c17291..d3639430ee 100644 --- a/src/components/new-safe/create/steps/Step0/index.tsx +++ b/src/components/new-safe/create/steps/ConnectWalletStep/index.tsx @@ -9,13 +9,13 @@ import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardS import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCreationStep' import layoutCss from '@/components/new-safe/create/styles.module.css' import useLocalStorage from '@/services/local-storage/useLocalStorage' -import { type PendingSafeData, SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/create/steps/Step4' +import { type PendingSafeData, SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/create/steps/StatusStep' import useConnectWallet from '@/components/common/ConnectWallet/useConnectWallet' import KeyholeIcon from '@/components/common/icons/KeyholeIcon' import PairingDescription from '@/components/common/PairingDetails/PairingDescription' import PairingQRCode from '@/components/common/PairingDetails/PairingQRCode' -const CreateSafeStep0 = ({ onSubmit, setStep }: StepRenderProps) => { +const ConnectWalletStep = ({ onSubmit, setStep }: StepRenderProps) => { const [pendingSafe] = useLocalStorage(SAFE_PENDING_CREATION_STORAGE_KEY) const wallet = useWallet() const chain = useCurrentChain() @@ -58,4 +58,4 @@ const CreateSafeStep0 = ({ onSubmit, setStep }: StepRenderProps ) } -export default CreateSafeStep0 +export default ConnectWalletStep diff --git a/src/components/new-safe/create/steps/Step2/index.tsx b/src/components/new-safe/create/steps/OwnerPolicyStep/index.tsx similarity index 84% rename from src/components/new-safe/create/steps/Step2/index.tsx rename to src/components/new-safe/create/steps/OwnerPolicyStep/index.tsx index 0ae9e27092..545574ed90 100644 --- a/src/components/new-safe/create/steps/Step2/index.tsx +++ b/src/components/new-safe/create/steps/OwnerPolicyStep/index.tsx @@ -4,33 +4,33 @@ import type { ReactElement } from 'react' import AddIcon from '@/public/images/common/add.svg' import InfoIcon from '@/public/images/notifications/info.svg' -import type { NamedAddress } from '@/components/create-safe/types' +import type { NamedAddress } from '@/components/new-safe/create/types' import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' import type { NewSafeFormData } from '@/components/new-safe/create' import type { CreateSafeInfoItem } from '@/components/new-safe/create/CreateSafeInfos' -import { useSafeSetupHints } from '@/components/new-safe/create/steps/Step2/useSafeSetupHints' +import { useSafeSetupHints } from '@/components/new-safe/create/steps/OwnerPolicyStep/useSafeSetupHints' import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCreationStep' import ArrowBackIcon from '@mui/icons-material/ArrowBack' -import css from '@/components/new-safe/create/steps/Step2/styles.module.css' +import css from '@/components/new-safe/create/steps/OwnerPolicyStep/styles.module.css' import layoutCss from '@/components/new-safe/create/styles.module.css' import NetworkWarning from '@/components/new-safe/create/NetworkWarning' import useIsWrongChain from '@/hooks/useIsWrongChain' import { CREATE_SAFE_EVENTS, trackEvent } from '@/services/analytics' import OwnerRow from '@/components/new-safe/OwnerRow' -enum CreateSafeStep2Fields { +enum OwnerPolicyStepFields { owners = 'owners', threshold = 'threshold', } -export type CreateSafeStep2Form = { - [CreateSafeStep2Fields.owners]: NamedAddress[] - [CreateSafeStep2Fields.threshold]: number +export type OwnerPolicyStepForm = { + [OwnerPolicyStepFields.owners]: NamedAddress[] + [OwnerPolicyStepFields.threshold]: number } -const STEP_2_FORM_ID = 'create-safe-step-2-form' +const OWNER_POLICY_STEP_FORM_ID = 'create-safe-owner-policy-step-form' -const CreateSafeStep2 = ({ +const OwnerPolicyStep = ({ onSubmit, onBack, data, @@ -42,29 +42,29 @@ const CreateSafeStep2 = ({ const isWrongChain = useIsWrongChain() useSyncSafeCreationStep(setStep) - const formMethods = useForm({ + const formMethods = useForm({ mode: 'onChange', defaultValues: { - [CreateSafeStep2Fields.owners]: data.owners, - [CreateSafeStep2Fields.threshold]: data.threshold, + [OwnerPolicyStepFields.owners]: data.owners, + [OwnerPolicyStepFields.threshold]: data.threshold, }, }) const { handleSubmit, control, watch, formState, getValues, setValue, trigger } = formMethods - const threshold = watch(CreateSafeStep2Fields.threshold) + const threshold = watch(OwnerPolicyStepFields.threshold) const { fields: ownerFields, append: appendOwner, remove, - } = useFieldArray({ control, name: CreateSafeStep2Fields.owners }) + } = useFieldArray({ control, name: OwnerPolicyStepFields.owners }) const removeOwner = (index: number): void => { // Set threshold if it's greater than the number of owners - setValue(CreateSafeStep2Fields.threshold, Math.min(threshold, ownerFields.length - 1)) + setValue(OwnerPolicyStepFields.threshold, Math.min(threshold, ownerFields.length - 1)) remove(index) - trigger(CreateSafeStep2Fields.owners) + trigger(OwnerPolicyStepFields.owners) } const isDisabled = isWrongChain || !formState.isValid @@ -91,7 +91,7 @@ const CreateSafeStep2 = ({ }) return ( -
+ {ownerFields.map((field, i) => ( @@ -99,7 +99,7 @@ const CreateSafeStep2 = ({ key={field.id} index={i} removable={i > 0} - groupName={CreateSafeStep2Fields.owners} + groupName={OwnerPolicyStepFields.owners} remove={removeOwner} /> ))} @@ -147,7 +147,7 @@ const CreateSafeStep2 = ({ ( ({ width: '311px', minHeight: '56px', @@ -139,7 +139,7 @@ const AppActions = ({ wallet, onConnectWallet, chain, appUrl, app }: Props): Rea height={CTA_HEIGHT} > - Use the App with your Safe Account + Use the App with your Safe {body} {button} diff --git a/src/components/safe-apps/SafeAppsHeader/index.tsx b/src/components/safe-apps/SafeAppsHeader/index.tsx index 6e3459a1fe..f9e0f16a91 100644 --- a/src/components/safe-apps/SafeAppsHeader/index.tsx +++ b/src/components/safe-apps/SafeAppsHeader/index.tsx @@ -17,7 +17,7 @@ const SafeAppsHeader = (): ReactElement => { {/* Safe Apps Subtitle */} - Connect to your favourite web3 applications with your Safe Account, securely and efficiently. + Connect to your favourite web3 applications with your Safe, securely and efficiently. diff --git a/src/components/safe-apps/SafeAppsInfoModal/constants.ts b/src/components/safe-apps/SafeAppsInfoModal/constants.ts index 6fc808ce08..195ad0e9e7 100644 --- a/src/components/safe-apps/SafeAppsInfoModal/constants.ts +++ b/src/components/safe-apps/SafeAppsInfoModal/constants.ts @@ -11,7 +11,7 @@ export const SECURITY_PRACTICES = [ }, { id: '3', - title: 'Always check transaction information while creating it, before proposing it to the Safe Account.', + title: 'Always check transaction information while creating it, before proposing it to the Safe.', imageSrc: './safe-apps-security-practices/2.png', }, { diff --git a/src/components/safe-apps/SafeAppsSDKLink/index.tsx b/src/components/safe-apps/SafeAppsSDKLink/index.tsx index 68fbc4e113..9393b7a71a 100644 --- a/src/components/safe-apps/SafeAppsSDKLink/index.tsx +++ b/src/components/safe-apps/SafeAppsSDKLink/index.tsx @@ -29,7 +29,7 @@ const SafeAppsSDKLink = () => { - How to build on Safe? + How to build on Safe? diff --git a/src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx b/src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx index ed53a1311e..ab7ffddb0c 100644 --- a/src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx +++ b/src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx @@ -118,9 +118,7 @@ const ReviewSafeAppsSignMessage = ({ - - Signing a message with your Safe Account requires a transaction on the blockchain - + Signing a message with your Safe requires a transaction on the blockchain diff --git a/src/components/safe-apps/SafeAppsZeroResultsPlaceholder/index.tsx b/src/components/safe-apps/SafeAppsZeroResultsPlaceholder/index.tsx index c5c6b7e951..bc7f5a6ba1 100644 --- a/src/components/safe-apps/SafeAppsZeroResultsPlaceholder/index.tsx +++ b/src/components/safe-apps/SafeAppsZeroResultsPlaceholder/index.tsx @@ -33,7 +33,7 @@ const SafeAppsZeroResultsPlaceholder = ({ searchQuery }: { searchQuery: string } text={ No Safe Apps found matching {searchQuery}. Connect to dApps that haven't yet been - integrated with the {'Safe{Wallet}'} using the WalletConnect Safe App. + integrated with the {'Safe'} using the WalletConnect Safe App. } > diff --git a/src/components/safe-messages/MsgModal/index.test.tsx b/src/components/safe-messages/MsgModal/index.test.tsx index 257ca6814e..56a4cb6d49 100644 --- a/src/components/safe-messages/MsgModal/index.test.tsx +++ b/src/components/safe-messages/MsgModal/index.test.tsx @@ -407,7 +407,7 @@ describe('MsgModal', () => { ) expect( - getByText("You are currently not an owner of this Safe Account and won't be able to confirm this message."), + getByText("You are currently not an owner of this Safe and won't be able to confirm this message."), ).toBeInTheDocument() expect(getByText('Sign')).toBeDisabled() diff --git a/src/components/safe-messages/MsgModal/index.tsx b/src/components/safe-messages/MsgModal/index.tsx index bcd3117b6a..0ac1e7cae7 100644 --- a/src/components/safe-messages/MsgModal/index.tsx +++ b/src/components/safe-messages/MsgModal/index.tsx @@ -212,7 +212,7 @@ const MsgModal = ({ Confirm message - To sign this message, you need to collect {safe.threshold} owner signatures of your Safe Account. + To sign this message, you need to collect {safe.threshold} owner signatures of your Safe. Message:{' '} @@ -272,7 +272,7 @@ const MsgModal = ({ No wallet is connected. ) : !isOwner ? ( - You are currently not an owner of this Safe Account and won't be able to confirm this message. + You are currently not an owner of this Safe and won't be able to confirm this message. ) : submitError ? ( Error confirming the message. Please try again. diff --git a/src/components/safe-messages/PaginatedMsgs/index.tsx b/src/components/safe-messages/PaginatedMsgs/index.tsx index 590f9fd4d5..c70b52f22e 100644 --- a/src/components/safe-messages/PaginatedMsgs/index.tsx +++ b/src/components/safe-messages/PaginatedMsgs/index.tsx @@ -20,7 +20,7 @@ const NoMessages = (): ReactElement => { text={ Some applications allow you to interact with them via off-chain contract signatures (“messages“) - that you can generate with your Safe Account. + that you can generate with your Safe. } > diff --git a/src/components/settings/ContractVersion/UpdateSafeDialog.tsx b/src/components/settings/ContractVersion/UpdateSafeDialog.tsx index b424aaf16b..049f840328 100644 --- a/src/components/settings/ContractVersion/UpdateSafeDialog.tsx +++ b/src/components/settings/ContractVersion/UpdateSafeDialog.tsx @@ -20,7 +20,7 @@ import CheckWallet from '@/components/common/CheckWallet' const UpdateSafeSteps: TxStepperProps['steps'] = [ { - label: 'Update Safe Account version', + label: 'Update Safe version', render: (_, onSubmit) => , }, ] @@ -64,13 +64,13 @@ const ReviewUpdateSafeStep = ({ onSubmit }: { onSubmit: () => void }) => { To check details about updates added by this smart contract version please visit{' '} - latest Safe Account contracts changelog + latest Safe contracts changelog You will need to confirm this update just like any other transaction. This means other owners will have to - confirm the update in case more than one confirmation is required for this Safe Account. + confirm the update in case more than one confirmation is required for this Safe. diff --git a/src/components/settings/DataManagement/FileListCard.tsx b/src/components/settings/DataManagement/FileListCard.tsx index 89fc12e584..28c4282380 100644 --- a/src/components/settings/DataManagement/FileListCard.tsx +++ b/src/components/settings/DataManagement/FileListCard.tsx @@ -82,7 +82,7 @@ const getItems = ({ const addedSafesPreview: ListItemTextProps = { primary: ( <> - Added Safes Accounts on {addedSafeChainAmount} {addedSafeChainAmount === 1 ? 'chain' : 'chains'} + Added Safes on {addedSafeChainAmount} {addedSafeChainAmount === 1 ? 'chain' : 'chains'} ), secondary: showPreview ? getItemSecondaryText(chains, addedSafes, 'Safe', 'Safes') : undefined, diff --git a/src/components/settings/DataManagement/ImportDialog.tsx b/src/components/settings/DataManagement/ImportDialog.tsx index d9dea29bf9..c15f720b3c 100644 --- a/src/components/settings/DataManagement/ImportDialog.tsx +++ b/src/components/settings/DataManagement/ImportDialog.tsx @@ -110,8 +110,8 @@ export const ImportDialog = ({ {!isDisabled && ( Overwrite your current data? - This action will overwrite your currently added Safe Accounts, address book and settings with those from - the imported file. + This action will overwrite your currently added Safes, address book and settings with those from the + imported file. )} diff --git a/src/components/settings/DataManagement/ImportFileUpload.tsx b/src/components/settings/DataManagement/ImportFileUpload.tsx index c8840b4279..1cf5c7a3ff 100644 --- a/src/components/settings/DataManagement/ImportFileUpload.tsx +++ b/src/components/settings/DataManagement/ImportFileUpload.tsx @@ -52,7 +52,7 @@ export const ImportFileUpload = ({ return ( <> - Import {'Safe{Wallet}'} data by clicking or dragging a file below. + Import {'Safe'} data by clicking or dragging a file below. - Only JSON files exported from a {'Safe{Wallet}'} can be imported. + Only JSON files exported from a {'Safe'} can be imported. ) diff --git a/src/components/settings/DataManagement/index.tsx b/src/components/settings/DataManagement/index.tsx index 2547c5e8d0..0cf0331307 100644 --- a/src/components/settings/DataManagement/index.tsx +++ b/src/components/settings/DataManagement/index.tsx @@ -79,7 +79,7 @@ const DataManagement = () => { - Download your local data with your added Safe Accounts, address book and settings. + Download your local data with your added Safes, address book and settings. { await waitFor(() => { expect( - fbHandler.queryByText( - new RegExp('The Safe{Wallet} may not work correctly as no fallback handler is currently set.'), - ), + fbHandler.queryByText(new RegExp('The Safe may not work correctly as no fallback handler is currently set.')), ).toBeInTheDocument() expect(fbHandler.queryByText('Transaction Builder')).toBeInTheDocument() }) @@ -133,9 +131,7 @@ describe('FallbackHandler', () => { await waitFor(() => { expect( - fbHandler.queryByText( - new RegExp('The Safe{Wallet} may not work correctly as no fallback handler is currently set.'), - ), + fbHandler.queryByText(new RegExp('The Safe may not work correctly as no fallback handler is currently set.')), ).toBeInTheDocument() expect(fbHandler.queryByText('Transaction Builder')).not.toBeInTheDocument() }) @@ -162,7 +158,7 @@ describe('FallbackHandler', () => { await waitFor(() => { expect( fbHandler.queryByText( - 'The fallback handler adds fallback logic for funtionality that may not be present in the Safe Account contract. Learn more about the fallback handler', + 'The fallback handler adds fallback logic for funtionality that may not be present in the Safe contract. Learn more about the fallback handler', ), ).toBeDefined() @@ -222,7 +218,7 @@ describe('FallbackHandler', () => { }) }) - it('should render nothing if the Safe Account version does not support Fallback Handlers', () => { + it('should render nothing if the Safe version does not support Fallback Handlers', () => { jest.spyOn(useSafeInfoHook, 'default').mockImplementation( () => ({ diff --git a/src/components/settings/FallbackHandler/index.tsx b/src/components/settings/FallbackHandler/index.tsx index 19ab5348e1..515fc44fea 100644 --- a/src/components/settings/FallbackHandler/index.tsx +++ b/src/components/settings/FallbackHandler/index.tsx @@ -37,7 +37,7 @@ export const FallbackHandler = (): ReactElement | null => { const tooltip = !safe.fallbackHandler ? ( <> - The {'Safe{Wallet}'} may not work correctly as no fallback handler is currently set. + The {'Safe'} may not work correctly as no fallback handler is currently set. {txBuilder && ( <> {' '} @@ -91,8 +91,8 @@ export const FallbackHandler = (): ReactElement | null => { - The fallback handler adds fallback logic for funtionality that may not be present in the Safe Account - contract. Learn more about the fallback handler{' '} + The fallback handler adds fallback logic for funtionality that may not be present in the Safe contract. + Learn more about the fallback handler{' '} here {safe.fallbackHandler ? ( diff --git a/src/components/settings/SafeAppsSigningMethod/index.tsx b/src/components/settings/SafeAppsSigningMethod/index.tsx index db7cb0f0ae..727bd91c76 100644 --- a/src/components/settings/SafeAppsSigningMethod/index.tsx +++ b/src/components/settings/SafeAppsSigningMethod/index.tsx @@ -25,8 +25,8 @@ export const SafeAppsSigningMethod = () => { - This setting determines how the {'Safe{Wallet}'} will sign message requests from Safe Apps. Gasless, - off-chain signing is used by default. Learn more about message signing{' '} + This setting determines how the {'Safe'} will sign message requests from Safe Apps. Gasless, off-chain + signing is used by default. Learn more about message signing{' '} here diff --git a/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx b/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx index cef844ad24..cf33af0e06 100644 --- a/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx +++ b/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx @@ -30,8 +30,8 @@ export const ReviewRemoveModule = ({ data, onSubmit }: { data: RemoveModuleData; - After removing this module, any feature or app that uses this module might no longer work. If this Safe Account - requires more then one signature, the module removal will have to be confirmed by other owners as well. + After removing this module, any feature or app that uses this module might no longer work. If this Safe requires + more then one signature, the module removal will have to be confirmed by other owners as well. ) diff --git a/src/components/settings/SafeModules/index.tsx b/src/components/settings/SafeModules/index.tsx index 26695c9ec1..cb867ccaf8 100644 --- a/src/components/settings/SafeModules/index.tsx +++ b/src/components/settings/SafeModules/index.tsx @@ -39,15 +39,15 @@ const SafeModules = () => { - Safe Account modules + Safe modules - Modules allow you to customize the access-control logic of your Safe Account. Modules are potentially - risky, so make sure to only use modules from trusted sources. Learn more about modules{' '} + Modules allow you to customize the access-control logic of your Safe. Modules are potentially risky, so + make sure to only use modules from trusted sources. Learn more about modules{' '} here {safeModules.length === 0 ? ( diff --git a/src/components/settings/SpendingLimits/NoSpendingLimits.tsx b/src/components/settings/SpendingLimits/NoSpendingLimits.tsx index 53700831bd..05cf939207 100644 --- a/src/components/settings/SpendingLimits/NoSpendingLimits.tsx +++ b/src/components/settings/SpendingLimits/NoSpendingLimits.tsx @@ -16,7 +16,7 @@ export const NoSpendingLimits = () => { Choose an account that will benefit from this allowance. The beneficiary does not have to be an owner of this - Safe Account + Safe @@ -27,7 +27,7 @@ export const NoSpendingLimits = () => { Select asset and amount - You can set allowances for any asset stored in your Safe Account + You can set allowances for any asset stored in your Safe diff --git a/src/components/settings/SpendingLimits/index.tsx b/src/components/settings/SpendingLimits/index.tsx index 6962c8e7f3..441a98b7e0 100644 --- a/src/components/settings/SpendingLimits/index.tsx +++ b/src/components/settings/SpendingLimits/index.tsx @@ -26,8 +26,8 @@ const SpendingLimits = () => { {isEnabled ? ( - You can set rules for specific beneficiaries to access funds from this Safe Account without having to - collect all signatures. + You can set rules for specific beneficiaries to access funds from this Safe without having to collect + all signatures. diff --git a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx b/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx index a89bb63a91..8fd1452f22 100644 --- a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx +++ b/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx @@ -60,8 +60,8 @@ export const ChooseOwnerStep = ({ {isReplace - ? 'Review the owner you want to replace in the active Safe Account, then specify the new owner you want to replace it with:' - : 'Add a new owner to the active Safe Account.'} + ? 'Review the owner you want to replace in the active Safe, then specify the new owner you want to replace it with:' + : 'Add a new owner to the active Safe.'} {removedOwner && ( diff --git a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx b/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx index 835fc7986e..dc911ef752 100644 --- a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx +++ b/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx @@ -67,7 +67,7 @@ export const ReviewOwnerTxStep = ({ data, onSubmit }: { data: ChangeOwnerData; o Details - Name of the Safe Account: + Name of the Safe: {addressBook[safeAddress] || 'No name'} @@ -85,7 +85,7 @@ export const ReviewOwnerTxStep = ({ data, onSubmit }: { data: ChangeOwnerData; o borderLeft={({ palette }) => [undefined, undefined, `1px solid ${palette.border.light}`]} borderTop={({ palette }) => [`1px solid ${palette.border.light}`, undefined, 'none']} > - {safe.owners.length} Safe Account owner(s) + {safe.owners.length} Safe owner(s) {safe.owners diff --git a/src/components/settings/owner/OwnerList/index.tsx b/src/components/settings/owner/OwnerList/index.tsx index 512b084e0d..db859bcbe9 100644 --- a/src/components/settings/owner/OwnerList/index.tsx +++ b/src/components/settings/owner/OwnerList/index.tsx @@ -52,7 +52,7 @@ export const OwnerList = () => { - Manage Safe Account owners + Manage Safe owners diff --git a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx index b152ff6fef..a89a4c515d 100644 --- a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx +++ b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx @@ -43,7 +43,7 @@ export const ReviewRemoveOwnerTxStep = ({ data, onSubmit }: { data: RemoveOwnerD Details - Name of the Safe Account: + Name of the Safe: {addressBook[safeAddress] || 'No name'} @@ -61,7 +61,7 @@ export const ReviewRemoveOwnerTxStep = ({ data, onSubmit }: { data: RemoveOwnerD borderLeft={({ palette }) => [undefined, undefined, `1px solid ${palette.border.light}`]} borderTop={({ palette }) => [`1px solid ${palette.border.light}`, undefined, 'none']} > - {newOwnerLength} Safe Account owner(s) + {newOwnerLength} Safe owner(s) {safe.owners .filter((owner) => !sameAddress(owner.value, removedOwner.address)) diff --git a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx index 2fed2df8db..371e211cf7 100644 --- a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx +++ b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx @@ -12,7 +12,7 @@ export const ReviewSelectedOwnerStep = ({ return ( onSubmit(data)}> - Review the owner you want to remove from the active Safe Account: + Review the owner you want to remove from the active Safe: void }): ReactElement => { - {chainName} network — only send {chainName} assets to this Safe Account. + {chainName} network — only send {chainName} assets to this Safe. - This is the address of your Safe Account. Deposit funds by scanning the QR code or copying the address below. - Only send {nativeToken} and tokens (e.g. ERC20, ERC721) to this address. + This is the address of your Safe. Deposit funds by scanning the QR code or copying the address below. Only + send {nativeToken} and tokens (e.g. ERC20, ERC721) to this address. diff --git a/src/components/sidebar/SafeList/index.tsx b/src/components/sidebar/SafeList/index.tsx index 89f77e992f..b01ff02004 100644 --- a/src/components/sidebar/SafeList/index.tsx +++ b/src/components/sidebar/SafeList/index.tsx @@ -61,8 +61,8 @@ export const _shouldExpandSafeList = ({ } const MAX_EXPANDED_SAFES = 3 -const NO_WALLET_MESSAGE = 'Connect a wallet to view your Safe Accounts\n or to create a new one' -const NO_SAFE_MESSAGE = 'Create a new Safe Account or add' +const NO_WALLET_MESSAGE = 'Connect a wallet to view your Safe\n or to create a new one' +const NO_SAFE_MESSAGE = 'Create a new Safe or add' const SafeList = ({ closeDrawer }: { closeDrawer?: () => void }): ReactElement => { const router = useRouter() @@ -103,7 +103,7 @@ const SafeList = ({ closeDrawer }: { closeDrawer?: () => void }): ReactElement =
- My Safe Accounts + My Safes {!isWelcomePage && ( @@ -239,7 +239,7 @@ const SafeList = ({ closeDrawer }: { closeDrawer?: () => void }): ReactElement = <>
toggleOpen(chain.chainId, !isOpen)} className={css.ownedLabelWrapper}> - Safe Accounts owned on {chain.chainName} ({ownedSafesOnChain.length}) + Safes owned on {chain.chainName} ({ownedSafesOnChain.length}) {isOpen ? : }
diff --git a/src/components/sidebar/SafeListRemoveDialog/index.tsx b/src/components/sidebar/SafeListRemoveDialog/index.tsx index 0125509d0e..a3d7061f37 100644 --- a/src/components/sidebar/SafeListRemoveDialog/index.tsx +++ b/src/components/sidebar/SafeListRemoveDialog/index.tsx @@ -32,7 +32,7 @@ const SafeListRemoveDialog = ({ - Are you sure you want to remove {safe} from your list of added Safe Accounts? + Are you sure you want to remove {safe} from your list of added Safes? diff --git a/src/components/terms/index.tsx b/src/components/terms/index.tsx index da31fac15f..feaa57ec7b 100644 --- a/src/components/terms/index.tsx +++ b/src/components/terms/index.tsx @@ -80,15 +80,15 @@ const SafeTerms = () => {

3. What are the Services offered?

- Our services (“Services”) primarily consist of enabling users to create their Safe Accounts and - ongoing interaction with it on the Blockchain. + Our services (“Services”) primarily consist of enabling users to create their Safes and ongoing + interaction with it on the Blockchain.

    -
  1. “Safe Account”
  2. +
  3. “Safe”

- The Safe Account (“Safe”) is a modular, self-custodial (i.e. not supervised by us) smart - contract-based wallet not provided by CC. Safe Accounts are{' '} + The Safe (“Safe”) is a modular, self-custodial (i.e. not supervised by us) smart contract-based + wallet not provided by CC. Safes are{' '} open-source @@ -110,16 +110,16 @@ const SafeTerms = () => {

  • “Safe App”
  • - You may access the Safe Account using the {'Safe{Wallet}'} web app, mobile app for iOS and android, or the - browser extension (each a “Safe App”). The Safe App may be used to manage your personal digital - assets on Ethereum and other common EVM chains when you connect the Safe Account with third-party services - (as defined below). The Safe App provides certain features that may be amended from time to time.{' '} + You may access the Safe using the {'Safe'} web app, mobile app for iOS and android, or the browser + extension (each a “Safe App”). The Safe App may be used to manage your personal digital assets + on Ethereum and other common EVM chains when you connect the Safe with third-party services (as defined + below). The Safe App provides certain features that may be amended from time to time.{' '}

    1. “Third-Party Safe Apps”

    - The Safe App allows you to connect the Safe Account to third-party decentralized applications + The Safe App allows you to connect the Safe to third-party decentralized applications (“Third-Party Safe Apps”) and use third-party services such as from the decentralized finance sector, DAO Tools or services related to NFTs (“Third-Party Services"). The Third-Party Safe Apps are integrated in the user interface of the Safe App via inline framing. The provider @@ -143,12 +143,12 @@ const SafeTerms = () => {

  • coverage underwritten by any regulatory agency’s compensation scheme;
  • custody of your Recovery Phrase, Private Keys, Tokens or the ability to remove or freeze your Tokens, i.e. - Safe Account is a self-custodial wallet; + Safe is a self-custodial wallet;
  • the storage or transmission of fiat currencies;
  • back-up services to recover your Recovery Phrase or Private Keys, for whose safekeeping you are solely - responsible; CC has no means to recover your access to your Tokens, when you lose access to your Safe Account; + responsible; CC has no means to recover your access to your Tokens, when you lose access to your Safe;
  • any form of legal, financial, investment, accounting, tax or other professional advice regarding Transactions @@ -162,10 +162,10 @@ const SafeTerms = () => {

    5. What do you need to know about Third-Party Services?

    1. - We provide you the possibility to interact with your Safe Account through Third-Party Services. Any - activities you engage in with, or services you receive from a third party is between you and that third party - directly. The conditions of service provisions, if any, shall be governed by the applicable contractual - provisions between you and the respective provider of the Third-Party Service.{' '} + We provide you the possibility to interact with your Safe through Third-Party Services. Any activities + you engage in with, or services you receive from a third party is between you and that third party directly. + The conditions of service provisions, if any, shall be governed by the applicable contractual provisions + between you and the respective provider of the Third-Party Service.{' '}
    2. The Services rely in part on third-party and open-source software, including the Blockchain, and the continued @@ -264,9 +264,9 @@ const SafeTerms = () => {
    3. We may terminate the Agreement and refuse access to the Safe Apps at any time giving 30 days’ prior notice. The right of the parties to terminate the Agreement for cause remains unaffected. In case of our - termination of the Agreement, you may no longer access your Safe Account via our Services. However, you may - continue to access your Safe Account and any Tokens via a third-party wallet provider using your Recovery - Phrase and Private Keys. + termination of the Agreement, you may no longer access your Safe via our Services. However, you may continue + to access your Safe and any Tokens via a third-party wallet provider using your Recovery Phrase and Private + Keys.
    4. We reserve the right to limit the use of the Safe Apps to a specified number of Users if necessary to @@ -279,10 +279,10 @@ const SafeTerms = () => {

      10. What licenses and access do we grant to you?

      1. - All intellectual property rights in the Safe Account and the Services throughout the world belong to us as - owner or our licensors. Nothing in these Terms gives you any rights in respect of any intellectual property - owned by us or our licensors and you acknowledge that you do not acquire any ownership rights by downloading - the Safe App or any content from the Safe App. + All intellectual property rights in the Safe and the Services throughout the world belong to us as owner or + our licensors. Nothing in these Terms gives you any rights in respect of any intellectual property owned by us + or our licensors and you acknowledge that you do not acquire any ownership rights by downloading the Safe App + or any content from the Safe App.
      2. If you are a consumer we grant you a simple, limited license, but do not sell, to you the Services you @@ -339,11 +339,11 @@ const SafeTerms = () => {
      3. You understand the functionality, usage, storage, transmission mechanisms and intricacies associated with - Tokens as well as wallet (including Safe Account) and Blockchains. + Tokens as well as wallet (including Safe) and Blockchains.
      4. You understand that Transactions on the Blockchain are irreversible and may not be erased and that your Safe - Account address and Transactions are displayed permanently and publicly. + address and Transactions are displayed permanently and publicly.
      5. You will comply with any applicable tax obligations in your jurisdiction arising from your use of the @@ -524,10 +524,10 @@ const SafeTerms = () => { is domiciled shall also apply, provided that these are more advantageous for the consumer than the provisions of the German law.

        -

        24. How can you get support for the Safe Account and tell us about any problems?

        +

        24. How can you get support for the Safe and tell us about any problems?

        - If you want to learn more about the Safe Account or the Service or have any problems using them or have any - complaints please get in touch via any of the following channels: + If you want to learn more about the Safe or the Service or have any problems using them or have any complaints + please get in touch via any of the following channels:

        1. diff --git a/src/components/transactions/BatchExecuteButton/index.tsx b/src/components/transactions/BatchExecuteButton/index.tsx index 4cb0a891a0..ffdbe796c7 100644 --- a/src/components/transactions/BatchExecuteButton/index.tsx +++ b/src/components/transactions/BatchExecuteButton/index.tsx @@ -46,7 +46,7 @@ const BatchExecuteButton = () => { arrow title={ isDisabled - ? 'Batch execution is only available for transactions that have been fully signed and are strictly sequential in Safe Account nonce.' + ? 'Batch execution is only available for transactions that have been fully signed and are strictly sequential in Safe nonce.' : 'All transactions highlighted in light green will be included in the batch execution.' } > diff --git a/src/components/transactions/SingleTx/SingleTx.test.tsx b/src/components/transactions/SingleTx/SingleTx.test.tsx index 0c775c02eb..040cbfceaf 100644 --- a/src/components/transactions/SingleTx/SingleTx.test.tsx +++ b/src/components/transactions/SingleTx/SingleTx.test.tsx @@ -97,6 +97,6 @@ describe('SingleTx', () => { const button = screen.getByText('Details') fireEvent.click(button!) - expect(screen.getByText('Transaction with this id was not found in this Safe Account')).toBeInTheDocument() + expect(screen.getByText('Transaction with this id was not found in this Safe')).toBeInTheDocument() }) }) diff --git a/src/components/transactions/SingleTx/index.tsx b/src/components/transactions/SingleTx/index.tsx index f8e8d7fce4..4c94a531a1 100644 --- a/src/components/transactions/SingleTx/index.tsx +++ b/src/components/transactions/SingleTx/index.tsx @@ -47,7 +47,7 @@ const SingleTx = () => { return getTransactionDetails(safe.chainId, transactionId).then((details) => { // If the transaction is not related to the current safe, throw an error if (!sameAddress(details.safeAddress, safeAddress)) { - return Promise.reject(new Error('Transaction with this id was not found in this Safe Account')) + return Promise.reject(new Error('Transaction with this id was not found in this Safe')) } return details }) diff --git a/src/components/transactions/TxInfo/index.tsx b/src/components/transactions/TxInfo/index.tsx index e4534bb564..ac63ffcc02 100644 --- a/src/components/transactions/TxInfo/index.tsx +++ b/src/components/transactions/TxInfo/index.tsx @@ -75,7 +75,7 @@ const CustomTx = ({ info }: { info: Custom }): ReactElement => { } const CreationTx = ({ info }: { info: Creation }): ReactElement => { - return <>Safe Account created by {shortenAddress(info.creator.value)} + return <>Safe created by {shortenAddress(info.creator.value)} } const MultiSendTx = ({ info }: { info: MultiSend }): ReactElement => { diff --git a/src/components/transactions/Warning/index.tsx b/src/components/transactions/Warning/index.tsx index 46f6b636e9..4cee3b231e 100644 --- a/src/components/transactions/Warning/index.tsx +++ b/src/components/transactions/Warning/index.tsx @@ -36,7 +36,7 @@ export const DelegateCallWarning = ({ showWarning }: { showWarning: boolean }): - This transaction calls a smart contract that will be able to modify your Safe Account. + This transaction calls a smart contract that will be able to modify your Safe. {showWarning && ( <>
          diff --git a/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx b/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx index 27de329299..1d0f89f689 100644 --- a/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx +++ b/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx @@ -87,7 +87,7 @@ const AdvancedParamsForm = ({ params, ...props }: AdvancedParamsFormProps) => { {(params.nonce !== undefined || !!params.safeTxGas) && ( - Safe Account transaction + Safe transaction )} diff --git a/src/components/tx/GasParams/GasParams.test.tsx b/src/components/tx/GasParams/GasParams.test.tsx index 44ba47bcc3..b587ff3ff0 100644 --- a/src/components/tx/GasParams/GasParams.test.tsx +++ b/src/components/tx/GasParams/GasParams.test.tsx @@ -84,7 +84,7 @@ describe('GasParams', () => { const { getByText } = render() - expect(getByText('Safe Account transaction nonce')).toBeInTheDocument() + expect(getByText('Safe transaction nonce')).toBeInTheDocument() expect(getByText('123')).toBeInTheDocument() }) diff --git a/src/components/tx/GasParams/index.tsx b/src/components/tx/GasParams/index.tsx index 265bc72449..80e58b9de7 100644 --- a/src/components/tx/GasParams/index.tsx +++ b/src/components/tx/GasParams/index.tsx @@ -93,9 +93,7 @@ const GasParams = ({ - {nonce !== undefined && ( - - )} + {nonce !== undefined && } {!!safeTxGas && } diff --git a/src/components/tx/NonceForm/index.tsx b/src/components/tx/NonceForm/index.tsx index 67421f21c8..72140f9e3d 100644 --- a/src/components/tx/NonceForm/index.tsx +++ b/src/components/tx/NonceForm/index.tsx @@ -91,7 +91,7 @@ const NonceForm = ({ name, nonce, recommendedNonce, readonly }: NonceFormProps): const editableNonce = useWatch({ name, control, exact: true }) const nonceWarning = recommendedNonce != null && editableNonce > recommendedNonce ? `Recommended nonce is ${recommendedNonce}` : '' - const label = fieldState.error?.message || nonceWarning || 'Safe Account transaction nonce' + const label = fieldState.error?.message || nonceWarning || 'Safe transaction nonce' const onResetNonce = () => { if (recommendedNonce != null) { diff --git a/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx b/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx index 4d8864345e..05329644ad 100644 --- a/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx +++ b/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx @@ -245,9 +245,7 @@ describe('SignOrExecuteForm', () => { const result = render() expect( - result.getByText( - "You are currently not an owner of this Safe Account and won't be able to submit this transaction.", - ), + result.getByText("You are currently not an owner of this Safe and won't be able to submit this transaction."), ).toBeInTheDocument() expect(result.getByText('Submit')).toBeDisabled() }) @@ -278,9 +276,7 @@ describe('SignOrExecuteForm', () => { const result = render() expect( - result.getByText( - 'Cannot execute a transaction from the Safe Account itself, please connect a different account.', - ), + result.getByText('Cannot execute a transaction from the Safe itself, please connect a different account.'), ).toBeInTheDocument() expect(result.getByText('Submit')).toBeDisabled() }) @@ -344,9 +340,7 @@ describe('SignOrExecuteForm', () => { const result = render() expect( - result.queryByText( - "You are currently not an owner of this Safe Account and won't be able to submit this transaction.", - ), + result.queryByText("You are currently not an owner of this Safe and won't be able to submit this transaction."), ).not.toBeInTheDocument() expect(result.getByText('Submit')).not.toBeDisabled() }) diff --git a/src/components/tx/SignOrExecuteForm/UnknownContractError.tsx b/src/components/tx/SignOrExecuteForm/UnknownContractError.tsx index 931a7dd378..5d87ed22b7 100644 --- a/src/components/tx/SignOrExecuteForm/UnknownContractError.tsx +++ b/src/components/tx/SignOrExecuteForm/UnknownContractError.tsx @@ -17,7 +17,7 @@ const UnknownContractError = (): ReactElement | null => { return ( - This Safe Account was created with an unsupported base contract. It should ONLY be used for fund recovery. + This Safe was created with an unsupported base contract. It should ONLY be used for fund recovery. Transactions will execute but the transaction list may not immediately update. Transaction success can be verified on the{' '} diff --git a/src/components/tx/SignOrExecuteForm/index.tsx b/src/components/tx/SignOrExecuteForm/index.tsx index 0e13af5d62..310c714f6a 100644 --- a/src/components/tx/SignOrExecuteForm/index.tsx +++ b/src/components/tx/SignOrExecuteForm/index.tsx @@ -212,11 +212,11 @@ const SignOrExecuteForm = ({ {/* Error messages */} {isSubmittable && cannotPropose ? ( - You are currently not an owner of this Safe Account and won't be able to submit this transaction. + You are currently not an owner of this Safe and won't be able to submit this transaction. ) : willExecute && isExecutionLoop ? ( - Cannot execute a transaction from the Safe Account itself, please connect a different account. + Cannot execute a transaction from the Safe itself, please connect a different account. ) : error ? ( diff --git a/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx b/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx index b38e0603d9..ccb01d1323 100644 --- a/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx +++ b/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx @@ -138,7 +138,7 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm setExecutionMethod={setExecutionMethod} relays={relays} tooltip="You can only relay multisend transactions containing -executions from the same Safe Account." +executions from the same Safe." /> ) : null} diff --git a/src/components/welcome/DataWidget.tsx b/src/components/welcome/DataWidget.tsx index 4bb3159a01..b5301c61f8 100644 --- a/src/components/welcome/DataWidget.tsx +++ b/src/components/welcome/DataWidget.tsx @@ -44,7 +44,7 @@ export const DataWidget = (): ReactElement => { } - title={{hasData ? 'Work with your data' : 'Already have a Safe Account?'}} + title={{hasData ? 'Work with your data' : 'Already have a Safe?'}} subheader={hasData ? 'Export or import your data' : 'Import your data'} /> diff --git a/src/components/welcome/NewSafe.tsx b/src/components/welcome/NewSafe.tsx index 0e32f9ef15..7c6131d403 100644 --- a/src/components/welcome/NewSafe.tsx +++ b/src/components/welcome/NewSafe.tsx @@ -47,7 +47,7 @@ const NewSafe = () => { }> - My Safe Accounts + My Safes @@ -73,7 +73,7 @@ const NewSafe = () => { color="static.main" mb={1} > - Welcome to {'Safe{Wallet}'} + Welcome to {'Safe'} @@ -85,11 +85,11 @@ const NewSafe = () => { - Create Safe Account + Create Safe - A new Account that is controlled by one or multiple owners. + A new Safe that is controlled by one or multiple owners. @@ -98,7 +98,7 @@ const NewSafe = () => { variant={wallet ? 'contained' : 'outlined'} onClick={() => router.push(AppRoutes.newSafe.create)} > - + Create new Account + + Create new Safe @@ -108,17 +108,17 @@ const NewSafe = () => { - Add existing Account + Add existing Safe - Already have a Safe Account? Add it via its address. + Already have a Safe? Add it via its address. diff --git a/src/hooks/__tests__/useSafeNotifications.test.ts b/src/hooks/__tests__/useSafeNotifications.test.ts index e361781943..cd9d5f7ea7 100644 --- a/src/hooks/__tests__/useSafeNotifications.test.ts +++ b/src/hooks/__tests__/useSafeNotifications.test.ts @@ -56,14 +56,14 @@ describe('useSafeNotifications', () => { expect(result.current).toBeUndefined() expect(showNotification).toHaveBeenCalledWith({ variant: 'warning', - message: `Your Safe Account version 1.1.1 is out of date. Please update it.`, + message: `Your Safe version 1.1.1 is out of date. Please update it.`, groupKey: 'safe-outdated-version', link: { href: { pathname: '/settings/setup', query: { safe: 'eth:0x123' }, }, - title: 'Update Safe Account', + title: 'Update Safe', }, onClose: expect.anything(), }) @@ -91,7 +91,7 @@ describe('useSafeNotifications', () => { expect(result.current).toBeUndefined() expect(showNotification).toHaveBeenCalledWith({ variant: 'warning', - message: `Safe Account version 0.0.1 is not supported by this web app anymore. You can update your Safe Account via the CLI.`, + message: `Safe version 0.0.1 is not supported by this web app anymore. You can update your Safe via the CLI.`, groupKey: 'safe-outdated-version', link: { href: 'https://github.com/5afe/safe-cli', @@ -144,7 +144,7 @@ describe('useSafeNotifications', () => { expect(result.current).toBeUndefined() expect(showNotification).toHaveBeenCalledWith({ variant: 'warning', - message: `This Safe Account was created with an unsupported base contract. + message: `This Safe was created with an unsupported base contract. The web interface might not work correctly. We recommend using the command line interface instead.`, groupKey: 'invalid-mastercopy', diff --git a/src/hooks/coreSDK/safeCoreSDK.ts b/src/hooks/coreSDK/safeCoreSDK.ts index 155166b3eb..43be3c01ca 100644 --- a/src/hooks/coreSDK/safeCoreSDK.ts +++ b/src/hooks/coreSDK/safeCoreSDK.ts @@ -25,7 +25,7 @@ export const isValidSafeVersion = (safeVersion?: SafeInfo['version']): safeVersi // `assert` does not work with arrow functions export function assertValidSafeVersion(safeVersion?: T): asserts safeVersion { - return invariant(isValidSafeVersion(safeVersion), `${safeVersion} is not a valid Safe Account version`) + return invariant(isValidSafeVersion(safeVersion), `${safeVersion} is not a valid Safe version`) } export const createEthersAdapter = (provider: Web3Provider) => { diff --git a/src/hooks/useSafeNotifications.ts b/src/hooks/useSafeNotifications.ts index 2afd14b56e..6525b9c63f 100644 --- a/src/hooks/useSafeNotifications.ts +++ b/src/hooks/useSafeNotifications.ts @@ -94,8 +94,8 @@ const useSafeNotifications = (): void => { groupKey: OUTDATED_VERSION_KEY, message: isUnsupported - ? `Safe Account version ${version} is not supported by this web app anymore. You can update your Safe Account via the CLI.` - : `Your Safe Account version ${version} is out of date. Please update it.`, + ? `Safe version ${version} is not supported by this web app anymore. You can update your Safe via the CLI.` + : `Your Safe version ${version} is out of date. Please update it.`, link: isUnsupported ? CLI_LINK @@ -104,7 +104,7 @@ const useSafeNotifications = (): void => { pathname: AppRoutes.settings.setup, query: { safe: query.safe }, }, - title: 'Update Safe Account', + title: 'Update Safe', }, onClose: () => dismissUpdateNotification(OUTDATED_VERSION_KEY), @@ -138,7 +138,7 @@ const useSafeNotifications = (): void => { const id = dispatch( showNotification({ variant: 'warning', - message: `This Safe Account was created with an unsupported base contract. + message: `This Safe was created with an unsupported base contract. The web interface might not work correctly. We recommend using the command line interface instead.`, groupKey: 'invalid-mastercopy', diff --git a/src/hooks/useTransactionType.ts b/src/hooks/useTransactionType.ts index f2e1e51d48..2cbac068de 100644 --- a/src/hooks/useTransactionType.ts +++ b/src/hooks/useTransactionType.ts @@ -41,7 +41,7 @@ export const getTransactionType = (tx: TransactionSummary, addressBook: AddressB case TransactionInfoType.CREATION: { return { icon: toAddress?.logoUri || '/images/transactions/settings.svg', - text: 'Safe Account created', + text: 'Safe created', } } case TransactionInfoType.TRANSFER: { diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index a7176c8591..7f4edb359e 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -99,7 +99,7 @@ const WebCoreApp = ({ return ( - {'Safe{Wallet}'} + {'Safe'} diff --git a/src/pages/_offline.tsx b/src/pages/_offline.tsx index a36fda8e98..af54e46f62 100644 --- a/src/pages/_offline.tsx +++ b/src/pages/_offline.tsx @@ -7,7 +7,7 @@ const Offline: NextPage = () => { return ( <> - {'Safe{Wallet} – Offline'} + {'Safe – Offline'}
          diff --git a/src/pages/address-book.tsx b/src/pages/address-book.tsx index d1eefe0dfa..1db86dc0bf 100644 --- a/src/pages/address-book.tsx +++ b/src/pages/address-book.tsx @@ -6,7 +6,7 @@ const AddressBook: NextPage = () => { return ( <> - {'Safe{Wallet} – Address book'} + {'Safe – Address book'} diff --git a/src/pages/apps/index.tsx b/src/pages/apps/index.tsx index 0e76f298e7..4b4e33e37c 100644 --- a/src/pages/apps/index.tsx +++ b/src/pages/apps/index.tsx @@ -30,7 +30,7 @@ const SafeApps: NextPage = () => { return ( <> - {'Safe{Wallet} – Safe Apps'} + {'Safe – Safe Apps'} diff --git a/src/pages/balances/index.tsx b/src/pages/balances/index.tsx index e42868d988..7abf990b0a 100644 --- a/src/pages/balances/index.tsx +++ b/src/pages/balances/index.tsx @@ -20,7 +20,7 @@ const Balances: NextPage = () => { return ( <> - {'Safe{Wallet} – Assets'} + {'Safe – Assets'} diff --git a/src/pages/balances/nfts.tsx b/src/pages/balances/nfts.tsx index 35a4d27fa7..5cd3a00be6 100644 --- a/src/pages/balances/nfts.tsx +++ b/src/pages/balances/nfts.tsx @@ -43,7 +43,7 @@ const NFTs: NextPage = () => { return ( <> - {'Safe{Wallet} – NFTs'} + {'Safe – NFTs'} diff --git a/src/pages/cookie.tsx b/src/pages/cookie.tsx index 9fe14fc43e..057e28d966 100644 --- a/src/pages/cookie.tsx +++ b/src/pages/cookie.tsx @@ -6,7 +6,7 @@ const CookiePolicy: NextPage = () => { return ( <> - {'Safe{Wallet} – Cookie policy'} + {'Safe – Cookie policy'}
          diff --git a/src/pages/environment-variables.tsx b/src/pages/environment-variables.tsx index 26e54fd33d..1f94c0d136 100644 --- a/src/pages/environment-variables.tsx +++ b/src/pages/environment-variables.tsx @@ -6,7 +6,7 @@ const EnvironmentVariablesPage: NextPage = () => { return ( <> - {'Safe{Wallet} – Environment variables'} + {'Safe – Environment variables'}
          diff --git a/src/pages/home.tsx b/src/pages/home.tsx index 62590cca4c..249eb038f5 100644 --- a/src/pages/home.tsx +++ b/src/pages/home.tsx @@ -7,7 +7,7 @@ const Home: NextPage = () => { return ( <> - {'Safe{Wallet} – Dashboard'} + {'Safe – Dashboard'}
          diff --git a/src/pages/imprint.tsx b/src/pages/imprint.tsx index 61182d1a74..50fa4b5c0b 100644 --- a/src/pages/imprint.tsx +++ b/src/pages/imprint.tsx @@ -7,7 +7,7 @@ const Imprint: NextPage = () => { return ( <> - {'Safe{Wallet} – Imprint'} + {'Safe – Imprint'}
          {IS_OFFICIAL_HOST && }
          diff --git a/src/pages/licenses.tsx b/src/pages/licenses.tsx index 56c7e2f20a..6e89a55892 100644 --- a/src/pages/licenses.tsx +++ b/src/pages/licenses.tsx @@ -7,7 +7,7 @@ const Imprint: NextPage = () => { return ( <> - {'Safe{Wallet} – Licenses'} + {'Safe – Licenses'}
          {IS_OFFICIAL_HOST && }
          diff --git a/src/pages/new-safe/create.tsx b/src/pages/new-safe/create.tsx index d8f53e2c55..81583b86e4 100644 --- a/src/pages/new-safe/create.tsx +++ b/src/pages/new-safe/create.tsx @@ -7,7 +7,7 @@ const Open: NextPage = () => { return (
          - {'Safe{Wallet} – Create Safe Account'} + {'Safe – Create Safe'} diff --git a/src/pages/new-safe/load.tsx b/src/pages/new-safe/load.tsx index 427436f417..c7bc49936f 100644 --- a/src/pages/new-safe/load.tsx +++ b/src/pages/new-safe/load.tsx @@ -11,7 +11,7 @@ const Load: NextPage = () => { return (
          - {'Safe{Wallet} – Add Safe Account'} + {'Safe – Add Safe'} {safeAddress ? ( diff --git a/src/pages/privacy.tsx b/src/pages/privacy.tsx index 941876bbf8..b6cf372ed9 100644 --- a/src/pages/privacy.tsx +++ b/src/pages/privacy.tsx @@ -7,7 +7,7 @@ const PrivacyPolicy: NextPage = () => { return ( <> - {'Safe{Wallet} – Privacy policy'} + {'Safe – Privacy policy'}
          {IS_OFFICIAL_HOST && }
          diff --git a/src/pages/settings/appearance.tsx b/src/pages/settings/appearance.tsx index 17013c63af..90fd873c90 100644 --- a/src/pages/settings/appearance.tsx +++ b/src/pages/settings/appearance.tsx @@ -35,7 +35,7 @@ const Appearance: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Appearance'} + {'Safe – Settings – Appearance'} @@ -53,7 +53,7 @@ const Appearance: NextPage = () => { Choose whether to prepend{' '} EIP-3770 address prefixes - across all Safe Accounts. + across all Safes. { return ( <> - {'Safe{Wallet} – Settings – Data'} + {'Safe – Settings – Data'} diff --git a/src/pages/settings/environment-variables.tsx b/src/pages/settings/environment-variables.tsx index 1e46bfa953..daf4a52ad0 100644 --- a/src/pages/settings/environment-variables.tsx +++ b/src/pages/settings/environment-variables.tsx @@ -7,7 +7,7 @@ const EnvironmentVariablesPage: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Environment variables'} + {'Safe – Settings – Environment variables'} diff --git a/src/pages/settings/modules.tsx b/src/pages/settings/modules.tsx index a25bbada52..fc446dc9fa 100644 --- a/src/pages/settings/modules.tsx +++ b/src/pages/settings/modules.tsx @@ -10,7 +10,7 @@ const Modules: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Modules'} + {'Safe – Settings – Modules'} diff --git a/src/pages/settings/safe-apps/index.tsx b/src/pages/settings/safe-apps/index.tsx index 3cb576210a..a84501c4a3 100644 --- a/src/pages/settings/safe-apps/index.tsx +++ b/src/pages/settings/safe-apps/index.tsx @@ -9,7 +9,7 @@ const SafeAppsPermissionsPage: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Safe Apps'} + {'Safe – Settings – Safe Apps'} diff --git a/src/pages/settings/setup.tsx b/src/pages/settings/setup.tsx index 5c341cc76f..345fdd1a94 100644 --- a/src/pages/settings/setup.tsx +++ b/src/pages/settings/setup.tsx @@ -17,7 +17,7 @@ const Setup: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Setup'} + {'Safe – Settings – Setup'} @@ -27,10 +27,10 @@ const Setup: NextPage = () => { - Safe Account nonce + Safe nonce { return ( <> - {'Safe{Wallet} – Settings – Spending limit'} + {'Safe – Settings – Spending limit'} diff --git a/src/pages/terms.tsx b/src/pages/terms.tsx index 369d05aad3..8e6325e665 100644 --- a/src/pages/terms.tsx +++ b/src/pages/terms.tsx @@ -7,7 +7,7 @@ const Imprint: NextPage = () => { return ( <> - {'Safe{Wallet} – Terms'} + {'Safe – Terms'}
          {IS_OFFICIAL_HOST && }
          diff --git a/src/pages/transactions/history.tsx b/src/pages/transactions/history.tsx index bfa605e209..af511d49f7 100644 --- a/src/pages/transactions/history.tsx +++ b/src/pages/transactions/history.tsx @@ -24,7 +24,7 @@ const History: NextPage = () => { return ( <> - {'Safe{Wallet} – Transaction history'} + {'Safe – Transaction history'} diff --git a/src/pages/transactions/messages.tsx b/src/pages/transactions/messages.tsx index 952ad618f8..7594853ed8 100644 --- a/src/pages/transactions/messages.tsx +++ b/src/pages/transactions/messages.tsx @@ -26,7 +26,7 @@ const Messages: NextPage = () => { return ( <> - {'Safe{Wallet} – Messages'} + {'Safe – Messages'} diff --git a/src/pages/transactions/queue.tsx b/src/pages/transactions/queue.tsx index 25a2098c0f..0a8827bbd7 100644 --- a/src/pages/transactions/queue.tsx +++ b/src/pages/transactions/queue.tsx @@ -14,7 +14,7 @@ const Queue: NextPage = () => { return ( <> - {'Safe{Wallet} – Transaction queue'} + {'Safe – Transaction queue'} diff --git a/src/pages/transactions/tx.tsx b/src/pages/transactions/tx.tsx index cc89616eea..6b97a13a03 100644 --- a/src/pages/transactions/tx.tsx +++ b/src/pages/transactions/tx.tsx @@ -8,7 +8,7 @@ const SingleTransaction: NextPage = () => { return ( <> - {'Safe{Wallet} – Transaction details'} + {'Safe – Transaction details'}
          diff --git a/src/pages/welcome.tsx b/src/pages/welcome.tsx index 6a6506b4d6..7259e685b3 100644 --- a/src/pages/welcome.tsx +++ b/src/pages/welcome.tsx @@ -6,7 +6,7 @@ const Welcome: NextPage = () => { return ( <> - {'Safe{Wallet} – Welcome'} + {'Safe – Welcome'} diff --git a/src/services/__tests__/safeContracts.test.ts b/src/services/__tests__/safeContracts.test.ts index dbf1683595..fe8627f353 100644 --- a/src/services/__tests__/safeContracts.test.ts +++ b/src/services/__tests__/safeContracts.test.ts @@ -44,13 +44,13 @@ describe('safeContracts', () => { }) }) it('should throw if the Safe version is invalid', () => { - expect(() => _getValidatedGetContractProps('1', '1.3.1')).toThrow('1.3.1 is not a valid Safe Account version') + expect(() => _getValidatedGetContractProps('1', '1.3.1')).toThrow('1.3.1 is not a valid Safe version') - expect(() => _getValidatedGetContractProps('1', '1.4.0')).toThrow('1.4.0 is not a valid Safe Account version') + expect(() => _getValidatedGetContractProps('1', '1.4.0')).toThrow('1.4.0 is not a valid Safe version') - expect(() => _getValidatedGetContractProps('1', '0.0.1')).toThrow('0.0.1 is not a valid Safe Account version') + expect(() => _getValidatedGetContractProps('1', '0.0.1')).toThrow('0.0.1 is not a valid Safe version') - expect(() => _getValidatedGetContractProps('1', '')).toThrow(' is not a valid Safe Account version') + expect(() => _getValidatedGetContractProps('1', '')).toThrow(' is not a valid Safe version') }) }) }) diff --git a/src/services/ls-migration/addedSafes.ts b/src/services/ls-migration/addedSafes.ts index 2889c288cb..5371dce54c 100644 --- a/src/services/ls-migration/addedSafes.ts +++ b/src/services/ls-migration/addedSafes.ts @@ -61,7 +61,7 @@ export const migrateAddedSafes = (lsData: LOCAL_STORAGE_DATA): AddedSafesState | const legacyAddedSafes = parseLsValue(lsData[IMMORTAL_PREFIX + chainPrefix + OLD_LS_KEY]) if (legacyAddedSafes && Object.keys(legacyAddedSafes).length > 0) { - console.log('Migrating added Safe Accounts on chain', chainId) + console.log('Migrating added Safes on chain', chainId) const safesPerChain = Object.values(legacyAddedSafes).reduce((acc, oldItem) => { const migratedOwners = migrateAddedSafesOwners(oldItem.owners) diff --git a/src/services/onboard.ts b/src/services/onboard.ts index 082270ca9b..ac1cec4e04 100644 --- a/src/services/onboard.ts +++ b/src/services/onboard.ts @@ -42,9 +42,9 @@ export const createOnboard = (chainConfigs: ChainInfo[], rpcConfig: EnvState['rp }, appMetadata: { - name: 'Safe{Wallet}', + name: 'Safe', icon: '/images/safe-logo-green.png', - description: 'Please select a wallet to connect to Safe{Wallet}', + description: 'Please select a wallet to connect to Safe', recommendedInjectedWallets: getRecommendedInjectedWallets(), }, }) diff --git a/src/services/pairing/connector.ts b/src/services/pairing/connector.ts index c60436f48a..0e6b49414a 100644 --- a/src/services/pairing/connector.ts +++ b/src/services/pairing/connector.ts @@ -12,7 +12,7 @@ export const getClientMeta = () => { const host = location.origin const APP_META = { - name: `Safe{Wallet} web v${packageJson.version}`, + name: `Safe web v${packageJson.version}`, url: host, icons: [`${host}${PairingIcon.src}`], } diff --git a/src/services/pairing/module.ts b/src/services/pairing/module.ts index d4187c8644..e73b67e7e4 100644 --- a/src/services/pairing/module.ts +++ b/src/services/pairing/module.ts @@ -28,7 +28,7 @@ enum ProviderMethods { WALLET_SWITCH_ETHEREUM_CHAIN = 'wallet_switchEthereumChain', } -export const PAIRING_MODULE_LABEL = 'Safe{Wallet}' +export const PAIRING_MODULE_LABEL = 'Safe' // Modified version of: https://github.com/blocknative/web3-onboard/blob/v2-web3-onboard-develop/packages/walletconnect/src/index.ts const pairingModule = (): WalletInit => { @@ -210,7 +210,7 @@ const pairingModule = (): WalletInit => { case ProviderMethods.ETH_SELECT_ACCOUNTS: { throw new ProviderRpcError({ code: ProviderRpcErrorCode.UNSUPPORTED_METHOD, - message: `Safe{Wallet} mobile does not support the requested method: ${method}`, + message: `Safe mobile does not support the requested method: ${method}`, }) } diff --git a/src/services/tx/tx-sender/sdk.ts b/src/services/tx/tx-sender/sdk.ts index 52df75bc07..a224a0841d 100644 --- a/src/services/tx/tx-sender/sdk.ts +++ b/src/services/tx/tx-sender/sdk.ts @@ -18,9 +18,7 @@ import type { JsonRpcSigner } from '@ethersproject/providers' export const getAndValidateSafeSDK = (): Safe => { const safeSDK = getSafeSDK() if (!safeSDK) { - throw new Error( - 'The Safe SDK could not be initialized. Please be aware that we only support v1.0.0 Safe Accounts and up.', - ) + throw new Error('The Safe SDK could not be initialized. Please be aware that we only support v1.0.0 Safes and up.') } return safeSDK } diff --git a/src/tests/pages/apps-share.test.tsx b/src/tests/pages/apps-share.test.tsx index 119013a185..ccd95f7e0a 100644 --- a/src/tests/pages/apps-share.test.tsx +++ b/src/tests/pages/apps-share.test.tsx @@ -122,7 +122,7 @@ describe('Share Safe App Page', () => { await waitFor( () => { - expect(screen.getByText('Create new Safe Account')).toBeInTheDocument() + expect(screen.getByText('Create new Safe')).toBeInTheDocument() }, { timeout: FETCH_TIMEOUT }, ) @@ -160,7 +160,7 @@ describe('Share Safe App Page', () => { await waitFor( () => { - expect(screen.getByLabelText('Select a Safe Account')).toBeInTheDocument() + expect(screen.getByLabelText('Select a Safe')).toBeInTheDocument() }, { timeout: FETCH_TIMEOUT }, ) diff --git a/src/tests/pages/apps.test.tsx b/src/tests/pages/apps.test.tsx index 3674c745e1..d6a40c6d00 100644 --- a/src/tests/pages/apps.test.tsx +++ b/src/tests/pages/apps.test.tsx @@ -394,7 +394,7 @@ describe('AppsPage', () => { const appURLInput = screen.getByLabelText(/Safe App URL/) fireEvent.change(appURLInput, { target: { value: APP_URL } }) const riskCheckbox = await screen.findByText( - /This Safe App is not part of Safe{Wallet} and I agree to use it at my own risk\./, + /This Safe App is not part of Safe and I agree to use it at my own risk\./, ) await act(() => { fireEvent.click(riskCheckbox) diff --git a/src/utils/validation.ts b/src/utils/validation.ts index 133cfefbf6..24f493e081 100644 --- a/src/utils/validation.ts +++ b/src/utils/validation.ts @@ -40,7 +40,7 @@ export const uniqueAddress = export const addressIsNotCurrentSafe = (safeAddress: string) => (address: string): string | undefined => { - const OWNER_ADDRESS_IS_SAFE_ADDRESS_ERROR = 'Cannot use Safe Account itself as owner.' + const OWNER_ADDRESS_IS_SAFE_ADDRESS_ERROR = 'Cannot use Safe itself as owner.' return sameAddress(safeAddress, address) ? OWNER_ADDRESS_IS_SAFE_ADDRESS_ERROR : undefined } From f844c12b2cca1221917fa5275fa388906e80ac1c Mon Sep 17 00:00:00 2001 From: iamacook Date: Wed, 17 May 2023 10:50:28 +0200 Subject: [PATCH 290/422] Revert "fix: revert rebranding (#1996)" This reverts commit f5152d9e188e94b8cd2f5b2403b0cae1797b5e61. --- cypress/e2e/smoke/create_safe_simple.cy.js | 2 +- cypress/e2e/smoke/create_tx.cy.js | 2 +- cypress/e2e/smoke/load_safe.cy.js | 2 +- public/images/logo.svg | 22 +++-- .../address-book/ImportDialog/index.tsx | 2 +- .../common/CheckWallet/index.test.tsx | 2 +- src/components/common/CheckWallet/index.tsx | 2 +- src/components/common/CookieBanner/index.tsx | 2 +- src/components/common/Footer/index.tsx | 2 +- .../common/Header/styles.module.css | 1 + src/components/common/MetaTags/index.tsx | 2 +- .../PairingDetails/PairingDescription.tsx | 2 +- .../common/SafeLoadingError/index.tsx | 2 +- .../dashboard/CreationDialog/index.tsx | 6 +- .../dashboard/PendingTxs/PendingTxsList.tsx | 2 +- src/components/dashboard/Relaying/index.tsx | 5 +- src/components/licenses/index.tsx | 2 +- .../new-safe/create/NetworkWarning/index.tsx | 3 +- .../new-safe/create/OverviewWidget/index.tsx | 2 +- src/components/new-safe/create/index.tsx | 39 ++++---- .../create/steps/ConnectWalletStep/index.tsx | 2 +- .../create/steps/OwnerPolicyStep/index.tsx | 6 +- .../OwnerPolicyStep/useSafeSetupHints.ts | 6 +- .../create/steps/StatusStep/StatusMessage.tsx | 8 +- .../create/steps/StatusStep/StatusStepper.tsx | 4 +- .../create/steps/StatusStep/index.tsx | 2 +- src/components/new-safe/load/index.tsx | 6 +- .../load/steps/SetAddressStep/index.tsx | 6 +- src/components/privacy/index.tsx | 96 ++++++++++--------- .../safe-apps/AddCustomAppModal/index.tsx | 2 +- .../SafeAppLandingPage/AppActions.tsx | 8 +- .../safe-apps/SafeAppsHeader/index.tsx | 2 +- .../safe-apps/SafeAppsInfoModal/constants.ts | 2 +- .../safe-apps/SafeAppsSDKLink/index.tsx | 2 +- .../ReviewSafeAppsSignMessage.tsx | 4 +- .../SafeAppsZeroResultsPlaceholder/index.tsx | 2 +- .../safe-messages/MsgModal/index.test.tsx | 2 +- .../safe-messages/MsgModal/index.tsx | 4 +- .../safe-messages/PaginatedMsgs/index.tsx | 2 +- .../ContractVersion/UpdateSafeDialog.tsx | 6 +- .../settings/DataManagement/FileListCard.tsx | 2 +- .../settings/DataManagement/ImportDialog.tsx | 4 +- .../DataManagement/ImportFileUpload.tsx | 4 +- .../settings/DataManagement/index.tsx | 2 +- .../useGlobalImportFileParser.ts | 2 +- .../FallbackHandler/__tests__/index.test.tsx | 12 ++- .../settings/FallbackHandler/index.tsx | 6 +- .../settings/SafeAppsSigningMethod/index.tsx | 4 +- .../RemoveModule/steps/ReviewRemoveModule.tsx | 4 +- src/components/settings/SafeModules/index.tsx | 6 +- .../SpendingLimits/NoSpendingLimits.tsx | 4 +- .../settings/SpendingLimits/index.tsx | 4 +- .../DialogSteps/ChooseOwnerStep.tsx | 4 +- .../DialogSteps/ReviewOwnerTxStep.tsx | 4 +- .../settings/owner/OwnerList/index.tsx | 2 +- .../DialogSteps/ReviewRemoveOwnerTxStep.tsx | 4 +- .../DialogSteps/ReviewSelectedOwnerStep.tsx | 2 +- .../sidebar/QrCodeButton/QrModal.tsx | 6 +- src/components/sidebar/SafeList/index.tsx | 8 +- .../sidebar/SafeListRemoveDialog/index.tsx | 2 +- src/components/terms/index.tsx | 56 +++++------ .../transactions/BatchExecuteButton/index.tsx | 2 +- .../transactions/SingleTx/SingleTx.test.tsx | 2 +- .../transactions/SingleTx/index.tsx | 2 +- src/components/transactions/TxInfo/index.tsx | 2 +- src/components/transactions/Warning/index.tsx | 2 +- .../tx/AdvancedParams/AdvancedParamsForm.tsx | 2 +- .../tx/GasParams/GasParams.test.tsx | 2 +- src/components/tx/GasParams/index.tsx | 4 +- src/components/tx/NonceForm/index.tsx | 2 +- .../SignOrExecuteForm.test.tsx | 12 ++- .../UnknownContractError.tsx | 2 +- src/components/tx/SignOrExecuteForm/index.tsx | 4 +- .../BatchExecuteModal/ReviewBatchExecute.tsx | 2 +- src/components/welcome/DataWidget.tsx | 2 +- src/components/welcome/NewSafe.tsx | 16 ++-- .../__tests__/useSafeNotifications.test.ts | 8 +- src/hooks/coreSDK/safeCoreSDK.ts | 2 +- src/hooks/useSafeNotifications.ts | 8 +- src/hooks/useTransactionType.ts | 2 +- src/pages/_app.tsx | 2 +- src/pages/_offline.tsx | 2 +- src/pages/address-book.tsx | 2 +- src/pages/apps/index.tsx | 2 +- src/pages/balances/index.tsx | 2 +- src/pages/balances/nfts.tsx | 2 +- src/pages/cookie.tsx | 2 +- src/pages/environment-variables.tsx | 2 +- src/pages/home.tsx | 2 +- src/pages/imprint.tsx | 2 +- src/pages/licenses.tsx | 2 +- src/pages/new-safe/create.tsx | 2 +- src/pages/new-safe/load.tsx | 2 +- src/pages/privacy.tsx | 2 +- src/pages/settings/appearance.tsx | 4 +- src/pages/settings/data.tsx | 2 +- src/pages/settings/environment-variables.tsx | 2 +- src/pages/settings/modules.tsx | 2 +- src/pages/settings/safe-apps/index.tsx | 2 +- src/pages/settings/setup.tsx | 6 +- src/pages/settings/spending-limits.tsx | 2 +- src/pages/terms.tsx | 2 +- src/pages/transactions/history.tsx | 2 +- src/pages/transactions/messages.tsx | 2 +- src/pages/transactions/queue.tsx | 2 +- src/pages/transactions/tx.tsx | 2 +- src/pages/welcome.tsx | 2 +- src/services/__tests__/safeContracts.test.ts | 8 +- src/services/ls-migration/addedSafes.ts | 2 +- src/services/onboard.ts | 4 +- src/services/pairing/connector.ts | 2 +- src/services/pairing/module.ts | 4 +- src/services/tx/tx-sender/sdk.ts | 4 +- src/tests/pages/apps-share.test.tsx | 4 +- src/tests/pages/apps.test.tsx | 2 +- src/utils/validation.ts | 2 +- 116 files changed, 307 insertions(+), 281 deletions(-) diff --git a/cypress/e2e/smoke/create_safe_simple.cy.js b/cypress/e2e/smoke/create_safe_simple.cy.js index c619aab9da..36f349792a 100644 --- a/cypress/e2e/smoke/create_safe_simple.cy.js +++ b/cypress/e2e/smoke/create_safe_simple.cy.js @@ -13,7 +13,7 @@ describe('Create Safe form', () => { // Ensure wallet is connected to correct chain via header cy.contains('E2E Wallet @ Görli') - cy.contains('Create new Safe').click() + cy.contains('Create new Account').click() }) it('should allow setting a name', () => { diff --git a/cypress/e2e/smoke/create_tx.cy.js b/cypress/e2e/smoke/create_tx.cy.js index d746d986a7..0355ba022b 100644 --- a/cypress/e2e/smoke/create_tx.cy.js +++ b/cypress/e2e/smoke/create_tx.cy.js @@ -84,7 +84,7 @@ describe('Queue a transaction on 1/N', () => { // Changes nonce to next one cy.contains('Signing the transaction with nonce').click() cy.contains('button', 'Edit').click() - cy.get('label').contains('Safe transaction nonce').next().clear().type(currentNonce) + cy.get('label').contains('Safe Account transaction nonce').next().clear().type(currentNonce) cy.contains('Confirm').click() // Asserts the execute checkbox exists diff --git a/cypress/e2e/smoke/load_safe.cy.js b/cypress/e2e/smoke/load_safe.cy.js index d96be6abf7..ee8bf21ee5 100644 --- a/cypress/e2e/smoke/load_safe.cy.js +++ b/cypress/e2e/smoke/load_safe.cy.js @@ -20,7 +20,7 @@ describe('Load existing Safe', () => { cy.contains('Accept selection').click() // Enters Loading Safe form - cy.contains('button', 'Add existing Safe').click() + cy.contains('button', 'Add existing Account').click() cy.contains('Connect wallet & select network') }) diff --git a/public/images/logo.svg b/public/images/logo.svg index ab442955ea..86df9fc8f9 100644 --- a/public/images/logo.svg +++ b/public/images/logo.svg @@ -1,10 +1,14 @@ - - - - - - - - + + + + + + + + + + + + + - diff --git a/src/components/address-book/ImportDialog/index.tsx b/src/components/address-book/ImportDialog/index.tsx index 11b2ca8b3c..ac6d665eda 100644 --- a/src/components/address-book/ImportDialog/index.tsx +++ b/src/components/address-book/ImportDialog/index.tsx @@ -152,7 +152,7 @@ const ImportDialog = ({ handleClose }: { handleClose: () => void }): ReactElemen {error && {error}} - Only CSV files exported from a {'Safe'} can be imported. + Only CSV files exported from a {'Safe{Wallet}'} can be imported.
          { expect(container.querySelector('button')).toBeDisabled() expect(container.querySelector('span[aria-label]')).toHaveAttribute( 'aria-label', - `Your connected wallet is not an owner of this Safe`, + `Your connected wallet is not an owner of this Safe Account`, ) }) diff --git a/src/components/common/CheckWallet/index.tsx b/src/components/common/CheckWallet/index.tsx index 2445541826..3caf233e29 100644 --- a/src/components/common/CheckWallet/index.tsx +++ b/src/components/common/CheckWallet/index.tsx @@ -13,7 +13,7 @@ type CheckWalletProps = { enum Message { WalletNotConnected = 'Please connect your wallet', - NotSafeOwner = 'Your connected wallet is not an owner of this Safe', + NotSafeOwner = 'Your connected wallet is not an owner of this Safe Account', OnlySpendingLimitBeneficiary = 'You can only create ERC-20 transactions within your spending limit', } diff --git a/src/components/common/CookieBanner/index.tsx b/src/components/common/CookieBanner/index.tsx index c89df213ec..cd9dbb403f 100644 --- a/src/components/common/CookieBanner/index.tsx +++ b/src/components/common/CookieBanner/index.tsx @@ -113,7 +113,7 @@ const CookieBannerPopup = ({ warningKey }: { warningKey?: CookieType }): ReactEl />
          - Help us make the app better. We never track your Safe address or wallet addresses, or any + Help us make the app better. We never track your Safe Account address or wallet addresses, or any transaction data. diff --git a/src/components/common/Footer/index.tsx b/src/components/common/Footer/index.tsx index 83c3bf0c69..6fc102a5f9 100644 --- a/src/components/common/Footer/index.tsx +++ b/src/components/common/Footer/index.tsx @@ -74,7 +74,7 @@ const Footer = (): ReactElement | null => {
        2. ) : ( -
        3. {'This is an unofficial distribution of Safe'}
        4. +
        5. {'This is an unofficial distribution of Safe{Wallet}'}
        6. )}
        7. diff --git a/src/components/common/Header/styles.module.css b/src/components/common/Header/styles.module.css index bdd58fa45b..20c62faed2 100644 --- a/src/components/common/Header/styles.module.css +++ b/src/components/common/Header/styles.module.css @@ -30,6 +30,7 @@ width: auto; display: block; color: var(--color-logo-main); + height: 20px; } .logo { diff --git a/src/components/common/MetaTags/index.tsx b/src/components/common/MetaTags/index.tsx index 21b8d8b19c..a53c3f37c0 100644 --- a/src/components/common/MetaTags/index.tsx +++ b/src/components/common/MetaTags/index.tsx @@ -4,7 +4,7 @@ import { lightPalette, darkPalette } from '@safe-global/safe-react-components' const descriptionText = 'Safe (prev. Gnosis Safe) is the most trusted platform to manage digital assets on Ethereum and multiple EVMs. Over $40B secured.' -const titleText = 'Safe' +const titleText = 'Safe{Wallet}' const MetaTags = ({ prefetchUrl }: { prefetchUrl: string }) => ( <> diff --git a/src/components/common/PairingDetails/PairingDescription.tsx b/src/components/common/PairingDetails/PairingDescription.tsx index 5954f18c15..bdcad66d90 100644 --- a/src/components/common/PairingDetails/PairingDescription.tsx +++ b/src/components/common/PairingDetails/PairingDescription.tsx @@ -9,7 +9,7 @@ const PairingDescription = (): ReactElement => { return ( <> - Scan this code in the {'Safe'} mobile app to sign transactions with your mobile device. + Scan this code in the {'Safe{Wallet}'} mobile app to sign transactions with your mobile device.
          Learn more about this feature. diff --git a/src/components/common/SafeLoadingError/index.tsx b/src/components/common/SafeLoadingError/index.tsx index 1e30a6093c..b6e1d705c2 100644 --- a/src/components/common/SafeLoadingError/index.tsx +++ b/src/components/common/SafeLoadingError/index.tsx @@ -13,7 +13,7 @@ const SafeLoadingError = ({ children }: { children: ReactNode }): ReactElement = return ( } - text="This Safe couldn't be loaded" + text="This Safe Account couldn't be loaded" > - {'Safe'} mobile owner key (optional){' '} + {'Safe{Wallet}'} mobile owner key (optional){' '} @@ -133,7 +133,7 @@ const OwnerPolicyStep = ({ Threshold diff --git a/src/components/new-safe/create/steps/OwnerPolicyStep/useSafeSetupHints.ts b/src/components/new-safe/create/steps/OwnerPolicyStep/useSafeSetupHints.ts index c8b7c793e6..37804c515c 100644 --- a/src/components/new-safe/create/steps/OwnerPolicyStep/useSafeSetupHints.ts +++ b/src/components/new-safe/create/steps/OwnerPolicyStep/useSafeSetupHints.ts @@ -13,7 +13,7 @@ export const useSafeSetupHints = ( if (threshold === 1) { safeSetupWarningSteps.push({ title: `1/${noOwners} policy`, - text: 'We recommend using a threshold higher than one to prevent losing access to your Safe in case an owner key is lost or compromised.', + text: 'We recommend using a threshold higher than one to prevent losing access to your Safe Account in case an owner key is lost or compromised.', }) } @@ -21,11 +21,11 @@ export const useSafeSetupHints = ( if (threshold === noOwners && noOwners > 1) { safeSetupWarningSteps.push({ title: `${noOwners}/${noOwners} policy`, - text: 'We recommend using a threshold which is lower than the total number of owners of your Safe in case an owner loses access to their account and needs to be replaced.', + text: 'We recommend using a threshold which is lower than the total number of owners of your Safe Account in case an owner loses access to their account and needs to be replaced.', }) } - setHint({ title: 'Safe setup', variant: 'warning', steps: safeSetupWarningSteps }) + setHint({ title: 'Safe Account setup', variant: 'warning', steps: safeSetupWarningSteps }) // Clear dynamic hints when the step / hook unmounts return () => { diff --git a/src/components/new-safe/create/steps/StatusStep/StatusMessage.tsx b/src/components/new-safe/create/steps/StatusStep/StatusMessage.tsx index ea8157c227..b385c299ef 100644 --- a/src/components/new-safe/create/steps/StatusStep/StatusMessage.tsx +++ b/src/components/new-safe/create/steps/StatusStep/StatusMessage.tsx @@ -38,19 +38,19 @@ const getStep = (status: SafeCreationStatus) => { } case SafeCreationStatus.SUCCESS: return { - description: 'Your Safe was successfully created!', + description: 'Your Safe Account was successfully created!', instruction: 'It is now being indexed. Please do not leave this page.', } case SafeCreationStatus.INDEXED: return { - description: 'Your Safe was successfully created!', + description: 'Your Safe Account was successfully created!', instruction: '', } case SafeCreationStatus.INDEX_FAILED: return { - description: 'Your Safe is created and will be picked up by our services shortly.', + description: 'Your Safe Account is created and will be picked up by our services shortly.', instruction: - 'You can already open Safe. It might take a moment until it becomes fully usable in the interface.', + 'You can already open Safe{Wallet}. It might take a moment until it becomes fully usable in the interface.', } } } diff --git a/src/components/new-safe/create/steps/StatusStep/StatusStepper.tsx b/src/components/new-safe/create/steps/StatusStep/StatusStepper.tsx index 92eb11c780..fe45f4b764 100644 --- a/src/components/new-safe/create/steps/StatusStep/StatusStepper.tsx +++ b/src/components/new-safe/create/steps/StatusStep/StatusStepper.tsx @@ -14,7 +14,7 @@ const StatusStepper = ({ pendingSafe, status }: { pendingSafe: PendingSafeData; - Your Safe address + Your Safe Account address - Safe is ready + Safe Account is ready diff --git a/src/components/new-safe/create/steps/StatusStep/index.tsx b/src/components/new-safe/create/steps/StatusStep/index.tsx index 70c0f0dc99..a40e1a38d9 100644 --- a/src/components/new-safe/create/steps/StatusStep/index.tsx +++ b/src/components/new-safe/create/steps/StatusStep/index.tsx @@ -114,7 +114,7 @@ export const CreateSafeStatus = ({ data, setProgressColor }: StepRenderProps diff --git a/src/components/new-safe/load/index.tsx b/src/components/new-safe/load/index.tsx index d34ac1bdc9..83de9751d1 100644 --- a/src/components/new-safe/load/index.tsx +++ b/src/components/new-safe/load/index.tsx @@ -19,7 +19,7 @@ export type LoadSafeFormData = NamedAddress & { export const LoadSafeSteps: TxStepperProps['steps'] = [ { title: 'Connect wallet & select network', - subtitle: 'Select network on which the Safe was created', + subtitle: 'Select network on which the Safe Account was created', render: (_, onSubmit, onBack, setStep) => ( ), @@ -33,7 +33,7 @@ export const LoadSafeSteps: TxStepperProps['steps'] = [ }, { title: 'Review', - subtitle: 'Confirm loading Safe', + subtitle: 'Confirm loading Safe Account', render: (data, onSubmit, onBack, setStep) => ( ), @@ -56,7 +56,7 @@ const LoadSafe = ({ initialData }: { initialData?: TxStepperProps - Load Safe + Load Safe Account diff --git a/src/components/new-safe/load/steps/SetAddressStep/index.tsx b/src/components/new-safe/load/steps/SetAddressStep/index.tsx index 51a4cd0ecb..14e2224ff4 100644 --- a/src/components/new-safe/load/steps/SetAddressStep/index.tsx +++ b/src/components/new-safe/load/steps/SetAddressStep/index.tsx @@ -69,13 +69,13 @@ const SetAddressStep = ({ data, onSubmit, onBack }: StepRenderProps { if (addedSafes && Object.keys(addedSafes).includes(address)) { - return 'Safe is already added' + return 'Safe Account is already added' } try { await getSafeInfo(currentChainId, address) } catch (error) { - return 'Address given is not a valid Safe address' + return 'Address given is not a valid Safe Account address' } } @@ -135,7 +135,7 @@ const SetAddressStep = ({ data, onSubmit, onBack }: StepRenderProps - + By continuing you consent to the{' '} diff --git a/src/components/privacy/index.tsx b/src/components/privacy/index.tsx index 80c1d81ea5..93e0e31e66 100644 --- a/src/components/privacy/index.tsx +++ b/src/components/privacy/index.tsx @@ -139,8 +139,8 @@ const SafePrivacyPolicy = () => { Transaction and should only be known by the legal owner of the Wallet.
        8. - “Safe” is a modular, self-custodial (i.e. not supervised by us) smart contract-based - multi-signature Wallet. Safes are{' '} + “Safe Account” is a modular, self-custodial (i.e. not supervised by us) smart contract-based + multi-signature Wallet. Safe Accounts are{' '} open-source @@ -149,11 +149,12 @@ const SafePrivacyPolicy = () => {  released under LGPL-3.0.
        9. - “{'Safe'}” refers to a web-based graphical user interface for Safes as well as a mobile - application on Android and iOS. + “{'Safe{Wallet}'}” refers to a web-based graphical user interface for Safe Accounts as well as a + mobile application on Android and iOS.
        10. - “Safe Transaction” is a Transaction of a Safe, authorized by a user, typically via their Wallet.{' '} + “Safe Account Transaction” is a Transaction of a Safe Account, authorized by a user, typically via + their Wallet.{' '}
        11. “Profile” means the Public Key and user provided, human readable label stored locally on the @@ -193,10 +194,10 @@ const SafePrivacyPolicy = () => { BLOCKCHAIN WILL BECOME PUBLICLY AVAILABLE

          4. How We Use Personal Data

          -

          4.1. When visiting our website and using {'Safe'}

          +

          4.1. When visiting our website and using {'Safe{Wallet}'}

          - When visiting our website or using {'Safe'}, we may collect and process personal data. The data will be stored - in different instances + When visiting our website or using {'Safe{Wallet}'}, we may collect and process personal data. The data will be + stored in different instances

          1. @@ -210,12 +211,12 @@ const SafePrivacyPolicy = () => {
          1. - When you create a new Safe we process the following data to compose a Transaction based on your entered data - to be approved by your Wallet: + When you create a new Safe Account we process the following data to compose a Transaction based on your + entered data to be approved by your Wallet:
            1. your public Wallet address,
            2. account balance,
            3. -
            4. smart contract address of the Safe,
            5. +
            6. smart contract address of the Safe Account,
            7. addresses of externally owned accounts and
            8. user activity
            @@ -223,8 +224,8 @@ const SafePrivacyPolicy = () => {
          1. - When you create a Profile for a new Safe we process the following data for the purpose of enabling you to view - your Safe after creation as well as enabling you to view all co-owned Safes: + When you create a Profile for a new Safe Account we process the following data for the purpose of enabling you + to view your Safe Account after creation as well as enabling you to view all co-owned Safe Accounts:
            1. your public Wallet address and
            2. account balance
            3. @@ -233,34 +234,34 @@ const SafePrivacyPolicy = () => {
            1. - When you create a Profile for an existing Safe for the purpose of allowing you to view and use them in the{' '} - {'Safe'}, we process your + When you create a Profile for an existing Safe Account for the purpose of allowing you to view and use them in + the {'Safe{Wallet}'}, we process your
              1. public Wallet address,
              2. -
              3. Safe balance,
              4. -
              5. smart contract address of the Safe and
              6. -
              7. Safe owner's public Wallet addresses
              8. +
              9. Safe Account balance,
              10. +
              11. smart contract address of the Safe Account and
              12. +
              13. Safe Account owner's public Wallet addresses
            1. - When you initiate a Safe Transaction we process the following data to compose the Transaction for you - based on your entered data:{' '} + When you initiate a Safe Account Transaction we process the following data to compose the Transaction for + you based on your entered data:{' '}
              1. your public Wallet address and
              2. -
              3. smart contract address of the Safe
              4. +
              5. smart contract address of the Safe Account
            1. - When you sign a Safe Transaction we process the following data to enable you to sign the Transaction - using your Wallet: + When you sign a Safe Account Transaction we process the following data to enable you to sign the + Transaction using your Wallet:
                -
              1. Safe balance,
              2. -
              3. smart contract address of Safe and
              4. -
              5. Safe owner's public Wallet addresses
              6. +
              7. Safe Account balance,
              8. +
              9. smart contract address of Safe Account and
              10. +
              11. Safe Account owner's public Wallet addresses
            @@ -269,23 +270,23 @@ const SafePrivacyPolicy = () => { To enable you to execute The transaction on the Blockchain we process:
            1. your public Wallet address,
            2. -
            3. Safe balance,
            4. -
            5. smart contract address of the Safe,
            6. -
            7. Safe owner's public Wallet addresses and
            8. -
            9. Transactions signed by all Safe owners
            10. +
            11. Safe Account balance,
            12. +
            13. smart contract address of the Safe Account,
            14. +
            15. Safe Account owner's public Wallet addresses and
            16. +
            17. Transactions signed by all Safe Account owners
          1. When we collect relevant data from the Blockchain to display context information in the - {`Safe`} + {`Safe{Wallet}`} we process:
            1. your public Wallet address,
            2. account balance,
            3. account activity and
            4. -
            5. Safe owner's Public wallet addresses
            6. +
            7. Safe Account owner's Public wallet addresses
          @@ -307,8 +308,8 @@ const SafePrivacyPolicy = () => {
          1. your public Wallet address,
          2. label,
          3. -
          4. smart contract address of the Safe,
          5. -
          6. Safe owner's public wallet addresses,
          7. +
          8. smart contract address of the Safe Account,
          9. +
          10. Safe Account owner's public wallet addresses,
          11. last used Wallet (for automatic reconnect),
          12. last used chain id,
          13. selected currency,
          14. @@ -367,8 +368,9 @@ const SafePrivacyPolicy = () => {
          15. range of managed funds

          - In addition, we may take a recording of you while testing {'Safe'} for internal and external use. The basis for - this collection and processing is our legitimate business interest in monitoring and improving our services. + In addition, we may take a recording of you while testing {'Safe{Wallet}'} for internal and external use. The + basis for this collection and processing is our legitimate business interest in monitoring and improving our + services.

          The lawful basis for this processing is your consent as provided before participating in user experience @@ -442,7 +444,7 @@ const SafePrivacyPolicy = () => {

          4.5.5 Finally, to report errors and improve user experience we process your:

          1. User agent info (Browser, OS, device),
          2. -
          3. URL that you were on (Can contain Safe address) and
          4. +
          5. URL that you were on (Can contain Safe Account address) and
          6. Error info: Time, stacktrace

          We rely on our legitimate interest (GDPR Art.6.1f) of ensuring product quality.

          @@ -460,8 +462,8 @@ const SafePrivacyPolicy = () => {

          5. Use of Third Party Applications

          5.1. Blockchain

          - When using the Safe your smart contract address, Safe Transactions, addresses of signer accounts and ETH - balances and token balances will be stored on the Blockchain. See section 2 of this Policy + When using the Safe Account your smart contract address, Safe Account Transactions, addresses of signer accounts + and ETH balances and token balances will be stored on the Blockchain. See section 2 of this Policy

          THE INFORMATION WILL BE DISPLAYED PERMANENTLY AND PUBLIC, THIS IS PART OF THE NATURE OF THE BLOCKCHAIN. IF YOU @@ -490,7 +492,7 @@ const SafePrivacyPolicy = () => {

          5.4. Mobile app stores

          - {'Safe'} mobile apps are distributed via{' '} + {'Safe{Wallet}'} mobile apps are distributed via{' '} Apple AppStore @@ -508,10 +510,10 @@ const SafePrivacyPolicy = () => {

          5.5. Fingerprint/Touch ID/ Face ID

          - We enable the user to unlock the {'Safe'} mobile app via biometrics information (touch ID or face ID). This is a - feature of the operating system. We do not store any of this data. Instead, the API of the operating system is - used to validate the user input. If you have any further questions you should consult with your preferred mobile - device provider or manufacturer. + We enable the user to unlock the {'Safe{Wallet}'} mobile app via biometrics information (touch ID or face ID). + This is a feature of the operating system. We do not store any of this data. Instead, the API of the operating + system is used to validate the user input. If you have any further questions you should consult with your + preferred mobile device provider or manufacturer.

          5.6. Google Firebase

          @@ -586,8 +588,8 @@ const SafePrivacyPolicy = () => { Nodereal -  to query public blockchain data from our backend services. All Safes are monitored, no personalization is - happening and no user IP addresses are forwarded. Personal data processed are: +  to query public blockchain data from our backend services. All Safe Accounts are monitored, no + personalization is happening and no user IP addresses are forwarded. Personal data processed are:

          • Your smart contract address of the Safe;
          • @@ -603,7 +605,7 @@ const SafePrivacyPolicy = () => {  to simulate blockchain transactions before they are executed. For that we send your smart contract address - of your Safe and transaction data to Tenderly. + of your Safe Account and transaction data to Tenderly.

            5.12. Internal communication

            We use the following tools for internal communication.

            diff --git a/src/components/safe-apps/AddCustomAppModal/index.tsx b/src/components/safe-apps/AddCustomAppModal/index.tsx index 3a79bdf5e9..0f1b8dcc2d 100644 --- a/src/components/safe-apps/AddCustomAppModal/index.tsx +++ b/src/components/safe-apps/AddCustomAppModal/index.tsx @@ -134,7 +134,7 @@ export const AddCustomAppModal = ({ open, onClose, onSave, safeAppsList }: Props })} /> } - label="This Safe App is not part of Safe and I agree to use it at my own risk." + label="This Safe App is not part of Safe{Wallet} and I agree to use it at my own risk." sx={{ mt: 2 }} /> diff --git a/src/components/safe-apps/SafeAppLandingPage/AppActions.tsx b/src/components/safe-apps/SafeAppLandingPage/AppActions.tsx index 9d6881ade0..b82a002799 100644 --- a/src/components/safe-apps/SafeAppLandingPage/AppActions.tsx +++ b/src/components/safe-apps/SafeAppLandingPage/AppActions.tsx @@ -77,7 +77,7 @@ const AppActions = ({ wallet, onConnectWallet, chain, appUrl, app }: Props): Rea button = ( ) @@ -93,7 +93,7 @@ const AppActions = ({ wallet, onConnectWallet, chain, appUrl, app }: Props): Rea if (hasWallet && hasSafes) { body = ( - Select a Safe + Select a Safe Account ({ width: '311px', minHeight: '56px', @@ -139,7 +139,7 @@ const AppActions = ({ wallet, onConnectWallet, chain, appUrl, app }: Props): Rea height={CTA_HEIGHT} > - Use the App with your Safe + Use the App with your Safe Account {body} {button} diff --git a/src/components/safe-apps/SafeAppsHeader/index.tsx b/src/components/safe-apps/SafeAppsHeader/index.tsx index f9e0f16a91..6e3459a1fe 100644 --- a/src/components/safe-apps/SafeAppsHeader/index.tsx +++ b/src/components/safe-apps/SafeAppsHeader/index.tsx @@ -17,7 +17,7 @@ const SafeAppsHeader = (): ReactElement => { {/* Safe Apps Subtitle */} - Connect to your favourite web3 applications with your Safe, securely and efficiently. + Connect to your favourite web3 applications with your Safe Account, securely and efficiently. diff --git a/src/components/safe-apps/SafeAppsInfoModal/constants.ts b/src/components/safe-apps/SafeAppsInfoModal/constants.ts index 195ad0e9e7..6fc808ce08 100644 --- a/src/components/safe-apps/SafeAppsInfoModal/constants.ts +++ b/src/components/safe-apps/SafeAppsInfoModal/constants.ts @@ -11,7 +11,7 @@ export const SECURITY_PRACTICES = [ }, { id: '3', - title: 'Always check transaction information while creating it, before proposing it to the Safe.', + title: 'Always check transaction information while creating it, before proposing it to the Safe Account.', imageSrc: './safe-apps-security-practices/2.png', }, { diff --git a/src/components/safe-apps/SafeAppsSDKLink/index.tsx b/src/components/safe-apps/SafeAppsSDKLink/index.tsx index 9393b7a71a..68fbc4e113 100644 --- a/src/components/safe-apps/SafeAppsSDKLink/index.tsx +++ b/src/components/safe-apps/SafeAppsSDKLink/index.tsx @@ -29,7 +29,7 @@ const SafeAppsSDKLink = () => { - How to build on Safe? + How to build on Safe? diff --git a/src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx b/src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx index ab7ffddb0c..ed53a1311e 100644 --- a/src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx +++ b/src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx @@ -118,7 +118,9 @@ const ReviewSafeAppsSignMessage = ({ - Signing a message with your Safe requires a transaction on the blockchain + + Signing a message with your Safe Account requires a transaction on the blockchain + diff --git a/src/components/safe-apps/SafeAppsZeroResultsPlaceholder/index.tsx b/src/components/safe-apps/SafeAppsZeroResultsPlaceholder/index.tsx index bc7f5a6ba1..c5c6b7e951 100644 --- a/src/components/safe-apps/SafeAppsZeroResultsPlaceholder/index.tsx +++ b/src/components/safe-apps/SafeAppsZeroResultsPlaceholder/index.tsx @@ -33,7 +33,7 @@ const SafeAppsZeroResultsPlaceholder = ({ searchQuery }: { searchQuery: string } text={ No Safe Apps found matching {searchQuery}. Connect to dApps that haven't yet been - integrated with the {'Safe'} using the WalletConnect Safe App. + integrated with the {'Safe{Wallet}'} using the WalletConnect Safe App. } > diff --git a/src/components/safe-messages/MsgModal/index.test.tsx b/src/components/safe-messages/MsgModal/index.test.tsx index 56a4cb6d49..257ca6814e 100644 --- a/src/components/safe-messages/MsgModal/index.test.tsx +++ b/src/components/safe-messages/MsgModal/index.test.tsx @@ -407,7 +407,7 @@ describe('MsgModal', () => { ) expect( - getByText("You are currently not an owner of this Safe and won't be able to confirm this message."), + getByText("You are currently not an owner of this Safe Account and won't be able to confirm this message."), ).toBeInTheDocument() expect(getByText('Sign')).toBeDisabled() diff --git a/src/components/safe-messages/MsgModal/index.tsx b/src/components/safe-messages/MsgModal/index.tsx index 0ac1e7cae7..bcd3117b6a 100644 --- a/src/components/safe-messages/MsgModal/index.tsx +++ b/src/components/safe-messages/MsgModal/index.tsx @@ -212,7 +212,7 @@ const MsgModal = ({ Confirm message - To sign this message, you need to collect {safe.threshold} owner signatures of your Safe. + To sign this message, you need to collect {safe.threshold} owner signatures of your Safe Account. Message:{' '} @@ -272,7 +272,7 @@ const MsgModal = ({ No wallet is connected. ) : !isOwner ? ( - You are currently not an owner of this Safe and won't be able to confirm this message. + You are currently not an owner of this Safe Account and won't be able to confirm this message. ) : submitError ? ( Error confirming the message. Please try again. diff --git a/src/components/safe-messages/PaginatedMsgs/index.tsx b/src/components/safe-messages/PaginatedMsgs/index.tsx index c70b52f22e..590f9fd4d5 100644 --- a/src/components/safe-messages/PaginatedMsgs/index.tsx +++ b/src/components/safe-messages/PaginatedMsgs/index.tsx @@ -20,7 +20,7 @@ const NoMessages = (): ReactElement => { text={ Some applications allow you to interact with them via off-chain contract signatures (“messages“) - that you can generate with your Safe. + that you can generate with your Safe Account. } > diff --git a/src/components/settings/ContractVersion/UpdateSafeDialog.tsx b/src/components/settings/ContractVersion/UpdateSafeDialog.tsx index 049f840328..b424aaf16b 100644 --- a/src/components/settings/ContractVersion/UpdateSafeDialog.tsx +++ b/src/components/settings/ContractVersion/UpdateSafeDialog.tsx @@ -20,7 +20,7 @@ import CheckWallet from '@/components/common/CheckWallet' const UpdateSafeSteps: TxStepperProps['steps'] = [ { - label: 'Update Safe version', + label: 'Update Safe Account version', render: (_, onSubmit) => , }, ] @@ -64,13 +64,13 @@ const ReviewUpdateSafeStep = ({ onSubmit }: { onSubmit: () => void }) => { To check details about updates added by this smart contract version please visit{' '} - latest Safe contracts changelog + latest Safe Account contracts changelog You will need to confirm this update just like any other transaction. This means other owners will have to - confirm the update in case more than one confirmation is required for this Safe. + confirm the update in case more than one confirmation is required for this Safe Account. diff --git a/src/components/settings/DataManagement/FileListCard.tsx b/src/components/settings/DataManagement/FileListCard.tsx index 28c4282380..89fc12e584 100644 --- a/src/components/settings/DataManagement/FileListCard.tsx +++ b/src/components/settings/DataManagement/FileListCard.tsx @@ -82,7 +82,7 @@ const getItems = ({ const addedSafesPreview: ListItemTextProps = { primary: ( <> - Added Safes on {addedSafeChainAmount} {addedSafeChainAmount === 1 ? 'chain' : 'chains'} + Added Safes Accounts on {addedSafeChainAmount} {addedSafeChainAmount === 1 ? 'chain' : 'chains'} ), secondary: showPreview ? getItemSecondaryText(chains, addedSafes, 'Safe', 'Safes') : undefined, diff --git a/src/components/settings/DataManagement/ImportDialog.tsx b/src/components/settings/DataManagement/ImportDialog.tsx index c15f720b3c..d9dea29bf9 100644 --- a/src/components/settings/DataManagement/ImportDialog.tsx +++ b/src/components/settings/DataManagement/ImportDialog.tsx @@ -110,8 +110,8 @@ export const ImportDialog = ({ {!isDisabled && ( Overwrite your current data? - This action will overwrite your currently added Safes, address book and settings with those from the - imported file. + This action will overwrite your currently added Safe Accounts, address book and settings with those from + the imported file. )} diff --git a/src/components/settings/DataManagement/ImportFileUpload.tsx b/src/components/settings/DataManagement/ImportFileUpload.tsx index 1cf5c7a3ff..c8840b4279 100644 --- a/src/components/settings/DataManagement/ImportFileUpload.tsx +++ b/src/components/settings/DataManagement/ImportFileUpload.tsx @@ -52,7 +52,7 @@ export const ImportFileUpload = ({ return ( <> - Import {'Safe'} data by clicking or dragging a file below. + Import {'Safe{Wallet}'} data by clicking or dragging a file below. - Only JSON files exported from a {'Safe'} can be imported. + Only JSON files exported from a {'Safe{Wallet}'} can be imported. ) diff --git a/src/components/settings/DataManagement/index.tsx b/src/components/settings/DataManagement/index.tsx index 0cf0331307..2547c5e8d0 100644 --- a/src/components/settings/DataManagement/index.tsx +++ b/src/components/settings/DataManagement/index.tsx @@ -79,7 +79,7 @@ const DataManagement = () => { - Download your local data with your added Safes, address book and settings. + Download your local data with your added Safe Accounts, address book and settings. { await waitFor(() => { expect( - fbHandler.queryByText(new RegExp('The Safe may not work correctly as no fallback handler is currently set.')), + fbHandler.queryByText( + new RegExp('The Safe{Wallet} may not work correctly as no fallback handler is currently set.'), + ), ).toBeInTheDocument() expect(fbHandler.queryByText('Transaction Builder')).toBeInTheDocument() }) @@ -131,7 +133,9 @@ describe('FallbackHandler', () => { await waitFor(() => { expect( - fbHandler.queryByText(new RegExp('The Safe may not work correctly as no fallback handler is currently set.')), + fbHandler.queryByText( + new RegExp('The Safe{Wallet} may not work correctly as no fallback handler is currently set.'), + ), ).toBeInTheDocument() expect(fbHandler.queryByText('Transaction Builder')).not.toBeInTheDocument() }) @@ -158,7 +162,7 @@ describe('FallbackHandler', () => { await waitFor(() => { expect( fbHandler.queryByText( - 'The fallback handler adds fallback logic for funtionality that may not be present in the Safe contract. Learn more about the fallback handler', + 'The fallback handler adds fallback logic for funtionality that may not be present in the Safe Account contract. Learn more about the fallback handler', ), ).toBeDefined() @@ -218,7 +222,7 @@ describe('FallbackHandler', () => { }) }) - it('should render nothing if the Safe version does not support Fallback Handlers', () => { + it('should render nothing if the Safe Account version does not support Fallback Handlers', () => { jest.spyOn(useSafeInfoHook, 'default').mockImplementation( () => ({ diff --git a/src/components/settings/FallbackHandler/index.tsx b/src/components/settings/FallbackHandler/index.tsx index 515fc44fea..19ab5348e1 100644 --- a/src/components/settings/FallbackHandler/index.tsx +++ b/src/components/settings/FallbackHandler/index.tsx @@ -37,7 +37,7 @@ export const FallbackHandler = (): ReactElement | null => { const tooltip = !safe.fallbackHandler ? ( <> - The {'Safe'} may not work correctly as no fallback handler is currently set. + The {'Safe{Wallet}'} may not work correctly as no fallback handler is currently set. {txBuilder && ( <> {' '} @@ -91,8 +91,8 @@ export const FallbackHandler = (): ReactElement | null => { - The fallback handler adds fallback logic for funtionality that may not be present in the Safe contract. - Learn more about the fallback handler{' '} + The fallback handler adds fallback logic for funtionality that may not be present in the Safe Account + contract. Learn more about the fallback handler{' '} here {safe.fallbackHandler ? ( diff --git a/src/components/settings/SafeAppsSigningMethod/index.tsx b/src/components/settings/SafeAppsSigningMethod/index.tsx index 727bd91c76..db7cb0f0ae 100644 --- a/src/components/settings/SafeAppsSigningMethod/index.tsx +++ b/src/components/settings/SafeAppsSigningMethod/index.tsx @@ -25,8 +25,8 @@ export const SafeAppsSigningMethod = () => { - This setting determines how the {'Safe'} will sign message requests from Safe Apps. Gasless, off-chain - signing is used by default. Learn more about message signing{' '} + This setting determines how the {'Safe{Wallet}'} will sign message requests from Safe Apps. Gasless, + off-chain signing is used by default. Learn more about message signing{' '} here diff --git a/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx b/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx index cf33af0e06..cef844ad24 100644 --- a/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx +++ b/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx @@ -30,8 +30,8 @@ export const ReviewRemoveModule = ({ data, onSubmit }: { data: RemoveModuleData; - After removing this module, any feature or app that uses this module might no longer work. If this Safe requires - more then one signature, the module removal will have to be confirmed by other owners as well. + After removing this module, any feature or app that uses this module might no longer work. If this Safe Account + requires more then one signature, the module removal will have to be confirmed by other owners as well. ) diff --git a/src/components/settings/SafeModules/index.tsx b/src/components/settings/SafeModules/index.tsx index cb867ccaf8..26695c9ec1 100644 --- a/src/components/settings/SafeModules/index.tsx +++ b/src/components/settings/SafeModules/index.tsx @@ -39,15 +39,15 @@ const SafeModules = () => { - Safe modules + Safe Account modules - Modules allow you to customize the access-control logic of your Safe. Modules are potentially risky, so - make sure to only use modules from trusted sources. Learn more about modules{' '} + Modules allow you to customize the access-control logic of your Safe Account. Modules are potentially + risky, so make sure to only use modules from trusted sources. Learn more about modules{' '} here {safeModules.length === 0 ? ( diff --git a/src/components/settings/SpendingLimits/NoSpendingLimits.tsx b/src/components/settings/SpendingLimits/NoSpendingLimits.tsx index 05cf939207..53700831bd 100644 --- a/src/components/settings/SpendingLimits/NoSpendingLimits.tsx +++ b/src/components/settings/SpendingLimits/NoSpendingLimits.tsx @@ -16,7 +16,7 @@ export const NoSpendingLimits = () => { Choose an account that will benefit from this allowance. The beneficiary does not have to be an owner of this - Safe + Safe Account @@ -27,7 +27,7 @@ export const NoSpendingLimits = () => { Select asset and amount - You can set allowances for any asset stored in your Safe + You can set allowances for any asset stored in your Safe Account diff --git a/src/components/settings/SpendingLimits/index.tsx b/src/components/settings/SpendingLimits/index.tsx index 441a98b7e0..6962c8e7f3 100644 --- a/src/components/settings/SpendingLimits/index.tsx +++ b/src/components/settings/SpendingLimits/index.tsx @@ -26,8 +26,8 @@ const SpendingLimits = () => { {isEnabled ? ( - You can set rules for specific beneficiaries to access funds from this Safe without having to collect - all signatures. + You can set rules for specific beneficiaries to access funds from this Safe Account without having to + collect all signatures. diff --git a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx b/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx index 8fd1452f22..a89bb63a91 100644 --- a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx +++ b/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx @@ -60,8 +60,8 @@ export const ChooseOwnerStep = ({ {isReplace - ? 'Review the owner you want to replace in the active Safe, then specify the new owner you want to replace it with:' - : 'Add a new owner to the active Safe.'} + ? 'Review the owner you want to replace in the active Safe Account, then specify the new owner you want to replace it with:' + : 'Add a new owner to the active Safe Account.'} {removedOwner && ( diff --git a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx b/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx index dc911ef752..835fc7986e 100644 --- a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx +++ b/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx @@ -67,7 +67,7 @@ export const ReviewOwnerTxStep = ({ data, onSubmit }: { data: ChangeOwnerData; o Details - Name of the Safe: + Name of the Safe Account: {addressBook[safeAddress] || 'No name'} @@ -85,7 +85,7 @@ export const ReviewOwnerTxStep = ({ data, onSubmit }: { data: ChangeOwnerData; o borderLeft={({ palette }) => [undefined, undefined, `1px solid ${palette.border.light}`]} borderTop={({ palette }) => [`1px solid ${palette.border.light}`, undefined, 'none']} > - {safe.owners.length} Safe owner(s) + {safe.owners.length} Safe Account owner(s) {safe.owners diff --git a/src/components/settings/owner/OwnerList/index.tsx b/src/components/settings/owner/OwnerList/index.tsx index db859bcbe9..512b084e0d 100644 --- a/src/components/settings/owner/OwnerList/index.tsx +++ b/src/components/settings/owner/OwnerList/index.tsx @@ -52,7 +52,7 @@ export const OwnerList = () => { - Manage Safe owners + Manage Safe Account owners diff --git a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx index a89a4c515d..b152ff6fef 100644 --- a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx +++ b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx @@ -43,7 +43,7 @@ export const ReviewRemoveOwnerTxStep = ({ data, onSubmit }: { data: RemoveOwnerD Details - Name of the Safe: + Name of the Safe Account: {addressBook[safeAddress] || 'No name'} @@ -61,7 +61,7 @@ export const ReviewRemoveOwnerTxStep = ({ data, onSubmit }: { data: RemoveOwnerD borderLeft={({ palette }) => [undefined, undefined, `1px solid ${palette.border.light}`]} borderTop={({ palette }) => [`1px solid ${palette.border.light}`, undefined, 'none']} > - {newOwnerLength} Safe owner(s) + {newOwnerLength} Safe Account owner(s) {safe.owners .filter((owner) => !sameAddress(owner.value, removedOwner.address)) diff --git a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx index 371e211cf7..2fed2df8db 100644 --- a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx +++ b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx @@ -12,7 +12,7 @@ export const ReviewSelectedOwnerStep = ({ return ( onSubmit(data)}> - Review the owner you want to remove from the active Safe: + Review the owner you want to remove from the active Safe Account: void }): ReactElement => { - {chainName} network — only send {chainName} assets to this Safe. + {chainName} network — only send {chainName} assets to this Safe Account. - This is the address of your Safe. Deposit funds by scanning the QR code or copying the address below. Only - send {nativeToken} and tokens (e.g. ERC20, ERC721) to this address. + This is the address of your Safe Account. Deposit funds by scanning the QR code or copying the address below. + Only send {nativeToken} and tokens (e.g. ERC20, ERC721) to this address. diff --git a/src/components/sidebar/SafeList/index.tsx b/src/components/sidebar/SafeList/index.tsx index eb8e7c7fb6..9e7a7acda0 100644 --- a/src/components/sidebar/SafeList/index.tsx +++ b/src/components/sidebar/SafeList/index.tsx @@ -61,8 +61,8 @@ export const _shouldExpandSafeList = ({ } const MAX_EXPANDED_SAFES = 3 -const NO_WALLET_MESSAGE = 'Connect a wallet to view your Safe\n or to create a new one' -const NO_SAFE_MESSAGE = 'Create a new Safe or add' +const NO_WALLET_MESSAGE = 'Connect a wallet to view your Safe Accounts\n or to create a new one' +const NO_SAFE_MESSAGE = 'Create a new Safe Account or add' const SafeList = ({ closeDrawer }: { closeDrawer?: () => void }): ReactElement => { const router = useRouter() @@ -103,7 +103,7 @@ const SafeList = ({ closeDrawer }: { closeDrawer?: () => void }): ReactElement =
            - My Safes + My Safe Accounts {!isWelcomePage && ( @@ -238,7 +238,7 @@ const SafeList = ({ closeDrawer }: { closeDrawer?: () => void }): ReactElement = <>
            toggleOpen(chain.chainId, !isOpen)} className={css.ownedLabelWrapper}> - Safes owned on {chain.chainName} ({ownedSafesOnChain.length}) + Safe Accounts owned on {chain.chainName} ({ownedSafesOnChain.length}) {isOpen ? : }
            diff --git a/src/components/sidebar/SafeListRemoveDialog/index.tsx b/src/components/sidebar/SafeListRemoveDialog/index.tsx index a3d7061f37..0125509d0e 100644 --- a/src/components/sidebar/SafeListRemoveDialog/index.tsx +++ b/src/components/sidebar/SafeListRemoveDialog/index.tsx @@ -32,7 +32,7 @@ const SafeListRemoveDialog = ({ - Are you sure you want to remove {safe} from your list of added Safes? + Are you sure you want to remove {safe} from your list of added Safe Accounts? diff --git a/src/components/terms/index.tsx b/src/components/terms/index.tsx index feaa57ec7b..da31fac15f 100644 --- a/src/components/terms/index.tsx +++ b/src/components/terms/index.tsx @@ -80,15 +80,15 @@ const SafeTerms = () => {

        3. What are the Services offered?

        - Our services (“Services”) primarily consist of enabling users to create their Safes and ongoing - interaction with it on the Blockchain. + Our services (“Services”) primarily consist of enabling users to create their Safe Accounts and + ongoing interaction with it on the Blockchain.

          -
        1. “Safe”
        2. +
        3. “Safe Account”

        - The Safe (“Safe”) is a modular, self-custodial (i.e. not supervised by us) smart contract-based - wallet not provided by CC. Safes are{' '} + The Safe Account (“Safe”) is a modular, self-custodial (i.e. not supervised by us) smart + contract-based wallet not provided by CC. Safe Accounts are{' '} open-source @@ -110,16 +110,16 @@ const SafeTerms = () => {

      6. “Safe App”

      - You may access the Safe using the {'Safe'} web app, mobile app for iOS and android, or the browser - extension (each a “Safe App”). The Safe App may be used to manage your personal digital assets - on Ethereum and other common EVM chains when you connect the Safe with third-party services (as defined - below). The Safe App provides certain features that may be amended from time to time.{' '} + You may access the Safe Account using the {'Safe{Wallet}'} web app, mobile app for iOS and android, or the + browser extension (each a “Safe App”). The Safe App may be used to manage your personal digital + assets on Ethereum and other common EVM chains when you connect the Safe Account with third-party services + (as defined below). The Safe App provides certain features that may be amended from time to time.{' '}

      1. “Third-Party Safe Apps”

      - The Safe App allows you to connect the Safe to third-party decentralized applications + The Safe App allows you to connect the Safe Account to third-party decentralized applications (“Third-Party Safe Apps”) and use third-party services such as from the decentralized finance sector, DAO Tools or services related to NFTs (“Third-Party Services"). The Third-Party Safe Apps are integrated in the user interface of the Safe App via inline framing. The provider @@ -143,12 +143,12 @@ const SafeTerms = () => {

    5. coverage underwritten by any regulatory agency’s compensation scheme;
    6. custody of your Recovery Phrase, Private Keys, Tokens or the ability to remove or freeze your Tokens, i.e. - Safe is a self-custodial wallet; + Safe Account is a self-custodial wallet;
    7. the storage or transmission of fiat currencies;
    8. back-up services to recover your Recovery Phrase or Private Keys, for whose safekeeping you are solely - responsible; CC has no means to recover your access to your Tokens, when you lose access to your Safe; + responsible; CC has no means to recover your access to your Tokens, when you lose access to your Safe Account;
    9. any form of legal, financial, investment, accounting, tax or other professional advice regarding Transactions @@ -162,10 +162,10 @@ const SafeTerms = () => {

      5. What do you need to know about Third-Party Services?

      1. - We provide you the possibility to interact with your Safe through Third-Party Services. Any activities - you engage in with, or services you receive from a third party is between you and that third party directly. - The conditions of service provisions, if any, shall be governed by the applicable contractual provisions - between you and the respective provider of the Third-Party Service.{' '} + We provide you the possibility to interact with your Safe Account through Third-Party Services. Any + activities you engage in with, or services you receive from a third party is between you and that third party + directly. The conditions of service provisions, if any, shall be governed by the applicable contractual + provisions between you and the respective provider of the Third-Party Service.{' '}
      2. The Services rely in part on third-party and open-source software, including the Blockchain, and the continued @@ -264,9 +264,9 @@ const SafeTerms = () => {
      3. We may terminate the Agreement and refuse access to the Safe Apps at any time giving 30 days’ prior notice. The right of the parties to terminate the Agreement for cause remains unaffected. In case of our - termination of the Agreement, you may no longer access your Safe via our Services. However, you may continue - to access your Safe and any Tokens via a third-party wallet provider using your Recovery Phrase and Private - Keys. + termination of the Agreement, you may no longer access your Safe Account via our Services. However, you may + continue to access your Safe Account and any Tokens via a third-party wallet provider using your Recovery + Phrase and Private Keys.
      4. We reserve the right to limit the use of the Safe Apps to a specified number of Users if necessary to @@ -279,10 +279,10 @@ const SafeTerms = () => {

        10. What licenses and access do we grant to you?

        1. - All intellectual property rights in the Safe and the Services throughout the world belong to us as owner or - our licensors. Nothing in these Terms gives you any rights in respect of any intellectual property owned by us - or our licensors and you acknowledge that you do not acquire any ownership rights by downloading the Safe App - or any content from the Safe App. + All intellectual property rights in the Safe Account and the Services throughout the world belong to us as + owner or our licensors. Nothing in these Terms gives you any rights in respect of any intellectual property + owned by us or our licensors and you acknowledge that you do not acquire any ownership rights by downloading + the Safe App or any content from the Safe App.
        2. If you are a consumer we grant you a simple, limited license, but do not sell, to you the Services you @@ -339,11 +339,11 @@ const SafeTerms = () => {
        3. You understand the functionality, usage, storage, transmission mechanisms and intricacies associated with - Tokens as well as wallet (including Safe) and Blockchains. + Tokens as well as wallet (including Safe Account) and Blockchains.
        4. You understand that Transactions on the Blockchain are irreversible and may not be erased and that your Safe - address and Transactions are displayed permanently and publicly. + Account address and Transactions are displayed permanently and publicly.
        5. You will comply with any applicable tax obligations in your jurisdiction arising from your use of the @@ -524,10 +524,10 @@ const SafeTerms = () => { is domiciled shall also apply, provided that these are more advantageous for the consumer than the provisions of the German law.

          -

          24. How can you get support for the Safe and tell us about any problems?

          +

          24. How can you get support for the Safe Account and tell us about any problems?

          - If you want to learn more about the Safe or the Service or have any problems using them or have any complaints - please get in touch via any of the following channels: + If you want to learn more about the Safe Account or the Service or have any problems using them or have any + complaints please get in touch via any of the following channels:

          1. diff --git a/src/components/transactions/BatchExecuteButton/index.tsx b/src/components/transactions/BatchExecuteButton/index.tsx index ffdbe796c7..4cb0a891a0 100644 --- a/src/components/transactions/BatchExecuteButton/index.tsx +++ b/src/components/transactions/BatchExecuteButton/index.tsx @@ -46,7 +46,7 @@ const BatchExecuteButton = () => { arrow title={ isDisabled - ? 'Batch execution is only available for transactions that have been fully signed and are strictly sequential in Safe nonce.' + ? 'Batch execution is only available for transactions that have been fully signed and are strictly sequential in Safe Account nonce.' : 'All transactions highlighted in light green will be included in the batch execution.' } > diff --git a/src/components/transactions/SingleTx/SingleTx.test.tsx b/src/components/transactions/SingleTx/SingleTx.test.tsx index 040cbfceaf..0c775c02eb 100644 --- a/src/components/transactions/SingleTx/SingleTx.test.tsx +++ b/src/components/transactions/SingleTx/SingleTx.test.tsx @@ -97,6 +97,6 @@ describe('SingleTx', () => { const button = screen.getByText('Details') fireEvent.click(button!) - expect(screen.getByText('Transaction with this id was not found in this Safe')).toBeInTheDocument() + expect(screen.getByText('Transaction with this id was not found in this Safe Account')).toBeInTheDocument() }) }) diff --git a/src/components/transactions/SingleTx/index.tsx b/src/components/transactions/SingleTx/index.tsx index 4c94a531a1..f8e8d7fce4 100644 --- a/src/components/transactions/SingleTx/index.tsx +++ b/src/components/transactions/SingleTx/index.tsx @@ -47,7 +47,7 @@ const SingleTx = () => { return getTransactionDetails(safe.chainId, transactionId).then((details) => { // If the transaction is not related to the current safe, throw an error if (!sameAddress(details.safeAddress, safeAddress)) { - return Promise.reject(new Error('Transaction with this id was not found in this Safe')) + return Promise.reject(new Error('Transaction with this id was not found in this Safe Account')) } return details }) diff --git a/src/components/transactions/TxInfo/index.tsx b/src/components/transactions/TxInfo/index.tsx index ac63ffcc02..e4534bb564 100644 --- a/src/components/transactions/TxInfo/index.tsx +++ b/src/components/transactions/TxInfo/index.tsx @@ -75,7 +75,7 @@ const CustomTx = ({ info }: { info: Custom }): ReactElement => { } const CreationTx = ({ info }: { info: Creation }): ReactElement => { - return <>Safe created by {shortenAddress(info.creator.value)} + return <>Safe Account created by {shortenAddress(info.creator.value)} } const MultiSendTx = ({ info }: { info: MultiSend }): ReactElement => { diff --git a/src/components/transactions/Warning/index.tsx b/src/components/transactions/Warning/index.tsx index 4cee3b231e..46f6b636e9 100644 --- a/src/components/transactions/Warning/index.tsx +++ b/src/components/transactions/Warning/index.tsx @@ -36,7 +36,7 @@ export const DelegateCallWarning = ({ showWarning }: { showWarning: boolean }): - This transaction calls a smart contract that will be able to modify your Safe. + This transaction calls a smart contract that will be able to modify your Safe Account. {showWarning && ( <>
            diff --git a/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx b/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx index 1d0f89f689..27de329299 100644 --- a/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx +++ b/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx @@ -87,7 +87,7 @@ const AdvancedParamsForm = ({ params, ...props }: AdvancedParamsFormProps) => { {(params.nonce !== undefined || !!params.safeTxGas) && ( - Safe transaction + Safe Account transaction )} diff --git a/src/components/tx/GasParams/GasParams.test.tsx b/src/components/tx/GasParams/GasParams.test.tsx index b587ff3ff0..44ba47bcc3 100644 --- a/src/components/tx/GasParams/GasParams.test.tsx +++ b/src/components/tx/GasParams/GasParams.test.tsx @@ -84,7 +84,7 @@ describe('GasParams', () => { const { getByText } = render() - expect(getByText('Safe transaction nonce')).toBeInTheDocument() + expect(getByText('Safe Account transaction nonce')).toBeInTheDocument() expect(getByText('123')).toBeInTheDocument() }) diff --git a/src/components/tx/GasParams/index.tsx b/src/components/tx/GasParams/index.tsx index 80e58b9de7..265bc72449 100644 --- a/src/components/tx/GasParams/index.tsx +++ b/src/components/tx/GasParams/index.tsx @@ -93,7 +93,9 @@ const GasParams = ({ - {nonce !== undefined && } + {nonce !== undefined && ( + + )} {!!safeTxGas && } diff --git a/src/components/tx/NonceForm/index.tsx b/src/components/tx/NonceForm/index.tsx index 72140f9e3d..67421f21c8 100644 --- a/src/components/tx/NonceForm/index.tsx +++ b/src/components/tx/NonceForm/index.tsx @@ -91,7 +91,7 @@ const NonceForm = ({ name, nonce, recommendedNonce, readonly }: NonceFormProps): const editableNonce = useWatch({ name, control, exact: true }) const nonceWarning = recommendedNonce != null && editableNonce > recommendedNonce ? `Recommended nonce is ${recommendedNonce}` : '' - const label = fieldState.error?.message || nonceWarning || 'Safe transaction nonce' + const label = fieldState.error?.message || nonceWarning || 'Safe Account transaction nonce' const onResetNonce = () => { if (recommendedNonce != null) { diff --git a/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx b/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx index 05329644ad..4d8864345e 100644 --- a/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx +++ b/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx @@ -245,7 +245,9 @@ describe('SignOrExecuteForm', () => { const result = render() expect( - result.getByText("You are currently not an owner of this Safe and won't be able to submit this transaction."), + result.getByText( + "You are currently not an owner of this Safe Account and won't be able to submit this transaction.", + ), ).toBeInTheDocument() expect(result.getByText('Submit')).toBeDisabled() }) @@ -276,7 +278,9 @@ describe('SignOrExecuteForm', () => { const result = render() expect( - result.getByText('Cannot execute a transaction from the Safe itself, please connect a different account.'), + result.getByText( + 'Cannot execute a transaction from the Safe Account itself, please connect a different account.', + ), ).toBeInTheDocument() expect(result.getByText('Submit')).toBeDisabled() }) @@ -340,7 +344,9 @@ describe('SignOrExecuteForm', () => { const result = render() expect( - result.queryByText("You are currently not an owner of this Safe and won't be able to submit this transaction."), + result.queryByText( + "You are currently not an owner of this Safe Account and won't be able to submit this transaction.", + ), ).not.toBeInTheDocument() expect(result.getByText('Submit')).not.toBeDisabled() }) diff --git a/src/components/tx/SignOrExecuteForm/UnknownContractError.tsx b/src/components/tx/SignOrExecuteForm/UnknownContractError.tsx index 5d87ed22b7..931a7dd378 100644 --- a/src/components/tx/SignOrExecuteForm/UnknownContractError.tsx +++ b/src/components/tx/SignOrExecuteForm/UnknownContractError.tsx @@ -17,7 +17,7 @@ const UnknownContractError = (): ReactElement | null => { return ( - This Safe was created with an unsupported base contract. It should ONLY be used for fund recovery. + This Safe Account was created with an unsupported base contract. It should ONLY be used for fund recovery. Transactions will execute but the transaction list may not immediately update. Transaction success can be verified on the{' '} diff --git a/src/components/tx/SignOrExecuteForm/index.tsx b/src/components/tx/SignOrExecuteForm/index.tsx index 310c714f6a..0e13af5d62 100644 --- a/src/components/tx/SignOrExecuteForm/index.tsx +++ b/src/components/tx/SignOrExecuteForm/index.tsx @@ -212,11 +212,11 @@ const SignOrExecuteForm = ({ {/* Error messages */} {isSubmittable && cannotPropose ? ( - You are currently not an owner of this Safe and won't be able to submit this transaction. + You are currently not an owner of this Safe Account and won't be able to submit this transaction. ) : willExecute && isExecutionLoop ? ( - Cannot execute a transaction from the Safe itself, please connect a different account. + Cannot execute a transaction from the Safe Account itself, please connect a different account. ) : error ? ( diff --git a/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx b/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx index ccb01d1323..b38e0603d9 100644 --- a/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx +++ b/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx @@ -138,7 +138,7 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm setExecutionMethod={setExecutionMethod} relays={relays} tooltip="You can only relay multisend transactions containing -executions from the same Safe." +executions from the same Safe Account." /> ) : null} diff --git a/src/components/welcome/DataWidget.tsx b/src/components/welcome/DataWidget.tsx index b5301c61f8..4bb3159a01 100644 --- a/src/components/welcome/DataWidget.tsx +++ b/src/components/welcome/DataWidget.tsx @@ -44,7 +44,7 @@ export const DataWidget = (): ReactElement => { } - title={{hasData ? 'Work with your data' : 'Already have a Safe?'}} + title={{hasData ? 'Work with your data' : 'Already have a Safe Account?'}} subheader={hasData ? 'Export or import your data' : 'Import your data'} /> diff --git a/src/components/welcome/NewSafe.tsx b/src/components/welcome/NewSafe.tsx index 7c6131d403..0e32f9ef15 100644 --- a/src/components/welcome/NewSafe.tsx +++ b/src/components/welcome/NewSafe.tsx @@ -47,7 +47,7 @@ const NewSafe = () => { }> - My Safes + My Safe Accounts @@ -73,7 +73,7 @@ const NewSafe = () => { color="static.main" mb={1} > - Welcome to {'Safe'} + Welcome to {'Safe{Wallet}'} @@ -85,11 +85,11 @@ const NewSafe = () => { - Create Safe + Create Safe Account - A new Safe that is controlled by one or multiple owners. + A new Account that is controlled by one or multiple owners. @@ -98,7 +98,7 @@ const NewSafe = () => { variant={wallet ? 'contained' : 'outlined'} onClick={() => router.push(AppRoutes.newSafe.create)} > - + Create new Safe + + Create new Account @@ -108,17 +108,17 @@ const NewSafe = () => { - Add existing Safe + Add existing Account - Already have a Safe? Add it via its address. + Already have a Safe Account? Add it via its address. diff --git a/src/hooks/__tests__/useSafeNotifications.test.ts b/src/hooks/__tests__/useSafeNotifications.test.ts index cd9d5f7ea7..e361781943 100644 --- a/src/hooks/__tests__/useSafeNotifications.test.ts +++ b/src/hooks/__tests__/useSafeNotifications.test.ts @@ -56,14 +56,14 @@ describe('useSafeNotifications', () => { expect(result.current).toBeUndefined() expect(showNotification).toHaveBeenCalledWith({ variant: 'warning', - message: `Your Safe version 1.1.1 is out of date. Please update it.`, + message: `Your Safe Account version 1.1.1 is out of date. Please update it.`, groupKey: 'safe-outdated-version', link: { href: { pathname: '/settings/setup', query: { safe: 'eth:0x123' }, }, - title: 'Update Safe', + title: 'Update Safe Account', }, onClose: expect.anything(), }) @@ -91,7 +91,7 @@ describe('useSafeNotifications', () => { expect(result.current).toBeUndefined() expect(showNotification).toHaveBeenCalledWith({ variant: 'warning', - message: `Safe version 0.0.1 is not supported by this web app anymore. You can update your Safe via the CLI.`, + message: `Safe Account version 0.0.1 is not supported by this web app anymore. You can update your Safe Account via the CLI.`, groupKey: 'safe-outdated-version', link: { href: 'https://github.com/5afe/safe-cli', @@ -144,7 +144,7 @@ describe('useSafeNotifications', () => { expect(result.current).toBeUndefined() expect(showNotification).toHaveBeenCalledWith({ variant: 'warning', - message: `This Safe was created with an unsupported base contract. + message: `This Safe Account was created with an unsupported base contract. The web interface might not work correctly. We recommend using the command line interface instead.`, groupKey: 'invalid-mastercopy', diff --git a/src/hooks/coreSDK/safeCoreSDK.ts b/src/hooks/coreSDK/safeCoreSDK.ts index 43be3c01ca..155166b3eb 100644 --- a/src/hooks/coreSDK/safeCoreSDK.ts +++ b/src/hooks/coreSDK/safeCoreSDK.ts @@ -25,7 +25,7 @@ export const isValidSafeVersion = (safeVersion?: SafeInfo['version']): safeVersi // `assert` does not work with arrow functions export function assertValidSafeVersion(safeVersion?: T): asserts safeVersion { - return invariant(isValidSafeVersion(safeVersion), `${safeVersion} is not a valid Safe version`) + return invariant(isValidSafeVersion(safeVersion), `${safeVersion} is not a valid Safe Account version`) } export const createEthersAdapter = (provider: Web3Provider) => { diff --git a/src/hooks/useSafeNotifications.ts b/src/hooks/useSafeNotifications.ts index 6525b9c63f..2afd14b56e 100644 --- a/src/hooks/useSafeNotifications.ts +++ b/src/hooks/useSafeNotifications.ts @@ -94,8 +94,8 @@ const useSafeNotifications = (): void => { groupKey: OUTDATED_VERSION_KEY, message: isUnsupported - ? `Safe version ${version} is not supported by this web app anymore. You can update your Safe via the CLI.` - : `Your Safe version ${version} is out of date. Please update it.`, + ? `Safe Account version ${version} is not supported by this web app anymore. You can update your Safe Account via the CLI.` + : `Your Safe Account version ${version} is out of date. Please update it.`, link: isUnsupported ? CLI_LINK @@ -104,7 +104,7 @@ const useSafeNotifications = (): void => { pathname: AppRoutes.settings.setup, query: { safe: query.safe }, }, - title: 'Update Safe', + title: 'Update Safe Account', }, onClose: () => dismissUpdateNotification(OUTDATED_VERSION_KEY), @@ -138,7 +138,7 @@ const useSafeNotifications = (): void => { const id = dispatch( showNotification({ variant: 'warning', - message: `This Safe was created with an unsupported base contract. + message: `This Safe Account was created with an unsupported base contract. The web interface might not work correctly. We recommend using the command line interface instead.`, groupKey: 'invalid-mastercopy', diff --git a/src/hooks/useTransactionType.ts b/src/hooks/useTransactionType.ts index 2cbac068de..f2e1e51d48 100644 --- a/src/hooks/useTransactionType.ts +++ b/src/hooks/useTransactionType.ts @@ -41,7 +41,7 @@ export const getTransactionType = (tx: TransactionSummary, addressBook: AddressB case TransactionInfoType.CREATION: { return { icon: toAddress?.logoUri || '/images/transactions/settings.svg', - text: 'Safe created', + text: 'Safe Account created', } } case TransactionInfoType.TRANSFER: { diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 7f4edb359e..a7176c8591 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -99,7 +99,7 @@ const WebCoreApp = ({ return ( - {'Safe'} + {'Safe{Wallet}'} diff --git a/src/pages/_offline.tsx b/src/pages/_offline.tsx index af54e46f62..a36fda8e98 100644 --- a/src/pages/_offline.tsx +++ b/src/pages/_offline.tsx @@ -7,7 +7,7 @@ const Offline: NextPage = () => { return ( <> - {'Safe – Offline'} + {'Safe{Wallet} – Offline'}
            diff --git a/src/pages/address-book.tsx b/src/pages/address-book.tsx index 1db86dc0bf..d1eefe0dfa 100644 --- a/src/pages/address-book.tsx +++ b/src/pages/address-book.tsx @@ -6,7 +6,7 @@ const AddressBook: NextPage = () => { return ( <> - {'Safe – Address book'} + {'Safe{Wallet} – Address book'} diff --git a/src/pages/apps/index.tsx b/src/pages/apps/index.tsx index 4b4e33e37c..0e76f298e7 100644 --- a/src/pages/apps/index.tsx +++ b/src/pages/apps/index.tsx @@ -30,7 +30,7 @@ const SafeApps: NextPage = () => { return ( <> - {'Safe – Safe Apps'} + {'Safe{Wallet} – Safe Apps'} diff --git a/src/pages/balances/index.tsx b/src/pages/balances/index.tsx index 7abf990b0a..e42868d988 100644 --- a/src/pages/balances/index.tsx +++ b/src/pages/balances/index.tsx @@ -20,7 +20,7 @@ const Balances: NextPage = () => { return ( <> - {'Safe – Assets'} + {'Safe{Wallet} – Assets'} diff --git a/src/pages/balances/nfts.tsx b/src/pages/balances/nfts.tsx index 5cd3a00be6..35a4d27fa7 100644 --- a/src/pages/balances/nfts.tsx +++ b/src/pages/balances/nfts.tsx @@ -43,7 +43,7 @@ const NFTs: NextPage = () => { return ( <> - {'Safe – NFTs'} + {'Safe{Wallet} – NFTs'} diff --git a/src/pages/cookie.tsx b/src/pages/cookie.tsx index 057e28d966..9fe14fc43e 100644 --- a/src/pages/cookie.tsx +++ b/src/pages/cookie.tsx @@ -6,7 +6,7 @@ const CookiePolicy: NextPage = () => { return ( <> - {'Safe – Cookie policy'} + {'Safe{Wallet} – Cookie policy'}
            diff --git a/src/pages/environment-variables.tsx b/src/pages/environment-variables.tsx index 1f94c0d136..26e54fd33d 100644 --- a/src/pages/environment-variables.tsx +++ b/src/pages/environment-variables.tsx @@ -6,7 +6,7 @@ const EnvironmentVariablesPage: NextPage = () => { return ( <> - {'Safe – Environment variables'} + {'Safe{Wallet} – Environment variables'}
            diff --git a/src/pages/home.tsx b/src/pages/home.tsx index 249eb038f5..62590cca4c 100644 --- a/src/pages/home.tsx +++ b/src/pages/home.tsx @@ -7,7 +7,7 @@ const Home: NextPage = () => { return ( <> - {'Safe – Dashboard'} + {'Safe{Wallet} – Dashboard'}
            diff --git a/src/pages/imprint.tsx b/src/pages/imprint.tsx index 50fa4b5c0b..61182d1a74 100644 --- a/src/pages/imprint.tsx +++ b/src/pages/imprint.tsx @@ -7,7 +7,7 @@ const Imprint: NextPage = () => { return ( <> - {'Safe – Imprint'} + {'Safe{Wallet} – Imprint'}
            {IS_OFFICIAL_HOST && }
            diff --git a/src/pages/licenses.tsx b/src/pages/licenses.tsx index 6e89a55892..56c7e2f20a 100644 --- a/src/pages/licenses.tsx +++ b/src/pages/licenses.tsx @@ -7,7 +7,7 @@ const Imprint: NextPage = () => { return ( <> - {'Safe – Licenses'} + {'Safe{Wallet} – Licenses'}
            {IS_OFFICIAL_HOST && }
            diff --git a/src/pages/new-safe/create.tsx b/src/pages/new-safe/create.tsx index 81583b86e4..d8f53e2c55 100644 --- a/src/pages/new-safe/create.tsx +++ b/src/pages/new-safe/create.tsx @@ -7,7 +7,7 @@ const Open: NextPage = () => { return (
            - {'Safe – Create Safe'} + {'Safe{Wallet} – Create Safe Account'} diff --git a/src/pages/new-safe/load.tsx b/src/pages/new-safe/load.tsx index c7bc49936f..427436f417 100644 --- a/src/pages/new-safe/load.tsx +++ b/src/pages/new-safe/load.tsx @@ -11,7 +11,7 @@ const Load: NextPage = () => { return (
            - {'Safe – Add Safe'} + {'Safe{Wallet} – Add Safe Account'} {safeAddress ? ( diff --git a/src/pages/privacy.tsx b/src/pages/privacy.tsx index b6cf372ed9..941876bbf8 100644 --- a/src/pages/privacy.tsx +++ b/src/pages/privacy.tsx @@ -7,7 +7,7 @@ const PrivacyPolicy: NextPage = () => { return ( <> - {'Safe – Privacy policy'} + {'Safe{Wallet} – Privacy policy'}
            {IS_OFFICIAL_HOST && }
            diff --git a/src/pages/settings/appearance.tsx b/src/pages/settings/appearance.tsx index 90fd873c90..17013c63af 100644 --- a/src/pages/settings/appearance.tsx +++ b/src/pages/settings/appearance.tsx @@ -35,7 +35,7 @@ const Appearance: NextPage = () => { return ( <> - {'Safe – Settings – Appearance'} + {'Safe{Wallet} – Settings – Appearance'} @@ -53,7 +53,7 @@ const Appearance: NextPage = () => { Choose whether to prepend{' '} EIP-3770 address prefixes - across all Safes. + across all Safe Accounts. { return ( <> - {'Safe – Settings – Data'} + {'Safe{Wallet} – Settings – Data'} diff --git a/src/pages/settings/environment-variables.tsx b/src/pages/settings/environment-variables.tsx index daf4a52ad0..1e46bfa953 100644 --- a/src/pages/settings/environment-variables.tsx +++ b/src/pages/settings/environment-variables.tsx @@ -7,7 +7,7 @@ const EnvironmentVariablesPage: NextPage = () => { return ( <> - {'Safe – Settings – Environment variables'} + {'Safe{Wallet} – Settings – Environment variables'} diff --git a/src/pages/settings/modules.tsx b/src/pages/settings/modules.tsx index fc446dc9fa..a25bbada52 100644 --- a/src/pages/settings/modules.tsx +++ b/src/pages/settings/modules.tsx @@ -10,7 +10,7 @@ const Modules: NextPage = () => { return ( <> - {'Safe – Settings – Modules'} + {'Safe{Wallet} – Settings – Modules'} diff --git a/src/pages/settings/safe-apps/index.tsx b/src/pages/settings/safe-apps/index.tsx index a84501c4a3..3cb576210a 100644 --- a/src/pages/settings/safe-apps/index.tsx +++ b/src/pages/settings/safe-apps/index.tsx @@ -9,7 +9,7 @@ const SafeAppsPermissionsPage: NextPage = () => { return ( <> - {'Safe – Settings – Safe Apps'} + {'Safe{Wallet} – Settings – Safe Apps'} diff --git a/src/pages/settings/setup.tsx b/src/pages/settings/setup.tsx index 345fdd1a94..5c341cc76f 100644 --- a/src/pages/settings/setup.tsx +++ b/src/pages/settings/setup.tsx @@ -17,7 +17,7 @@ const Setup: NextPage = () => { return ( <> - {'Safe – Settings – Setup'} + {'Safe{Wallet} – Settings – Setup'} @@ -27,10 +27,10 @@ const Setup: NextPage = () => { - Safe nonce + Safe Account nonce { return ( <> - {'Safe – Settings – Spending limit'} + {'Safe{Wallet} – Settings – Spending limit'} diff --git a/src/pages/terms.tsx b/src/pages/terms.tsx index 8e6325e665..369d05aad3 100644 --- a/src/pages/terms.tsx +++ b/src/pages/terms.tsx @@ -7,7 +7,7 @@ const Imprint: NextPage = () => { return ( <> - {'Safe – Terms'} + {'Safe{Wallet} – Terms'}
            {IS_OFFICIAL_HOST && }
            diff --git a/src/pages/transactions/history.tsx b/src/pages/transactions/history.tsx index af511d49f7..bfa605e209 100644 --- a/src/pages/transactions/history.tsx +++ b/src/pages/transactions/history.tsx @@ -24,7 +24,7 @@ const History: NextPage = () => { return ( <> - {'Safe – Transaction history'} + {'Safe{Wallet} – Transaction history'} diff --git a/src/pages/transactions/messages.tsx b/src/pages/transactions/messages.tsx index 7594853ed8..952ad618f8 100644 --- a/src/pages/transactions/messages.tsx +++ b/src/pages/transactions/messages.tsx @@ -26,7 +26,7 @@ const Messages: NextPage = () => { return ( <> - {'Safe – Messages'} + {'Safe{Wallet} – Messages'} diff --git a/src/pages/transactions/queue.tsx b/src/pages/transactions/queue.tsx index 0a8827bbd7..25a2098c0f 100644 --- a/src/pages/transactions/queue.tsx +++ b/src/pages/transactions/queue.tsx @@ -14,7 +14,7 @@ const Queue: NextPage = () => { return ( <> - {'Safe – Transaction queue'} + {'Safe{Wallet} – Transaction queue'} diff --git a/src/pages/transactions/tx.tsx b/src/pages/transactions/tx.tsx index 6b97a13a03..cc89616eea 100644 --- a/src/pages/transactions/tx.tsx +++ b/src/pages/transactions/tx.tsx @@ -8,7 +8,7 @@ const SingleTransaction: NextPage = () => { return ( <> - {'Safe – Transaction details'} + {'Safe{Wallet} – Transaction details'}
            diff --git a/src/pages/welcome.tsx b/src/pages/welcome.tsx index 7259e685b3..6a6506b4d6 100644 --- a/src/pages/welcome.tsx +++ b/src/pages/welcome.tsx @@ -6,7 +6,7 @@ const Welcome: NextPage = () => { return ( <> - {'Safe – Welcome'} + {'Safe{Wallet} – Welcome'} diff --git a/src/services/__tests__/safeContracts.test.ts b/src/services/__tests__/safeContracts.test.ts index fe8627f353..dbf1683595 100644 --- a/src/services/__tests__/safeContracts.test.ts +++ b/src/services/__tests__/safeContracts.test.ts @@ -44,13 +44,13 @@ describe('safeContracts', () => { }) }) it('should throw if the Safe version is invalid', () => { - expect(() => _getValidatedGetContractProps('1', '1.3.1')).toThrow('1.3.1 is not a valid Safe version') + expect(() => _getValidatedGetContractProps('1', '1.3.1')).toThrow('1.3.1 is not a valid Safe Account version') - expect(() => _getValidatedGetContractProps('1', '1.4.0')).toThrow('1.4.0 is not a valid Safe version') + expect(() => _getValidatedGetContractProps('1', '1.4.0')).toThrow('1.4.0 is not a valid Safe Account version') - expect(() => _getValidatedGetContractProps('1', '0.0.1')).toThrow('0.0.1 is not a valid Safe version') + expect(() => _getValidatedGetContractProps('1', '0.0.1')).toThrow('0.0.1 is not a valid Safe Account version') - expect(() => _getValidatedGetContractProps('1', '')).toThrow(' is not a valid Safe version') + expect(() => _getValidatedGetContractProps('1', '')).toThrow(' is not a valid Safe Account version') }) }) }) diff --git a/src/services/ls-migration/addedSafes.ts b/src/services/ls-migration/addedSafes.ts index 5371dce54c..2889c288cb 100644 --- a/src/services/ls-migration/addedSafes.ts +++ b/src/services/ls-migration/addedSafes.ts @@ -61,7 +61,7 @@ export const migrateAddedSafes = (lsData: LOCAL_STORAGE_DATA): AddedSafesState | const legacyAddedSafes = parseLsValue(lsData[IMMORTAL_PREFIX + chainPrefix + OLD_LS_KEY]) if (legacyAddedSafes && Object.keys(legacyAddedSafes).length > 0) { - console.log('Migrating added Safes on chain', chainId) + console.log('Migrating added Safe Accounts on chain', chainId) const safesPerChain = Object.values(legacyAddedSafes).reduce((acc, oldItem) => { const migratedOwners = migrateAddedSafesOwners(oldItem.owners) diff --git a/src/services/onboard.ts b/src/services/onboard.ts index ac1cec4e04..082270ca9b 100644 --- a/src/services/onboard.ts +++ b/src/services/onboard.ts @@ -42,9 +42,9 @@ export const createOnboard = (chainConfigs: ChainInfo[], rpcConfig: EnvState['rp }, appMetadata: { - name: 'Safe', + name: 'Safe{Wallet}', icon: '/images/safe-logo-green.png', - description: 'Please select a wallet to connect to Safe', + description: 'Please select a wallet to connect to Safe{Wallet}', recommendedInjectedWallets: getRecommendedInjectedWallets(), }, }) diff --git a/src/services/pairing/connector.ts b/src/services/pairing/connector.ts index 0e6b49414a..c60436f48a 100644 --- a/src/services/pairing/connector.ts +++ b/src/services/pairing/connector.ts @@ -12,7 +12,7 @@ export const getClientMeta = () => { const host = location.origin const APP_META = { - name: `Safe web v${packageJson.version}`, + name: `Safe{Wallet} web v${packageJson.version}`, url: host, icons: [`${host}${PairingIcon.src}`], } diff --git a/src/services/pairing/module.ts b/src/services/pairing/module.ts index e73b67e7e4..d4187c8644 100644 --- a/src/services/pairing/module.ts +++ b/src/services/pairing/module.ts @@ -28,7 +28,7 @@ enum ProviderMethods { WALLET_SWITCH_ETHEREUM_CHAIN = 'wallet_switchEthereumChain', } -export const PAIRING_MODULE_LABEL = 'Safe' +export const PAIRING_MODULE_LABEL = 'Safe{Wallet}' // Modified version of: https://github.com/blocknative/web3-onboard/blob/v2-web3-onboard-develop/packages/walletconnect/src/index.ts const pairingModule = (): WalletInit => { @@ -210,7 +210,7 @@ const pairingModule = (): WalletInit => { case ProviderMethods.ETH_SELECT_ACCOUNTS: { throw new ProviderRpcError({ code: ProviderRpcErrorCode.UNSUPPORTED_METHOD, - message: `Safe mobile does not support the requested method: ${method}`, + message: `Safe{Wallet} mobile does not support the requested method: ${method}`, }) } diff --git a/src/services/tx/tx-sender/sdk.ts b/src/services/tx/tx-sender/sdk.ts index a224a0841d..52df75bc07 100644 --- a/src/services/tx/tx-sender/sdk.ts +++ b/src/services/tx/tx-sender/sdk.ts @@ -18,7 +18,9 @@ import type { JsonRpcSigner } from '@ethersproject/providers' export const getAndValidateSafeSDK = (): Safe => { const safeSDK = getSafeSDK() if (!safeSDK) { - throw new Error('The Safe SDK could not be initialized. Please be aware that we only support v1.0.0 Safes and up.') + throw new Error( + 'The Safe SDK could not be initialized. Please be aware that we only support v1.0.0 Safe Accounts and up.', + ) } return safeSDK } diff --git a/src/tests/pages/apps-share.test.tsx b/src/tests/pages/apps-share.test.tsx index ccd95f7e0a..119013a185 100644 --- a/src/tests/pages/apps-share.test.tsx +++ b/src/tests/pages/apps-share.test.tsx @@ -122,7 +122,7 @@ describe('Share Safe App Page', () => { await waitFor( () => { - expect(screen.getByText('Create new Safe')).toBeInTheDocument() + expect(screen.getByText('Create new Safe Account')).toBeInTheDocument() }, { timeout: FETCH_TIMEOUT }, ) @@ -160,7 +160,7 @@ describe('Share Safe App Page', () => { await waitFor( () => { - expect(screen.getByLabelText('Select a Safe')).toBeInTheDocument() + expect(screen.getByLabelText('Select a Safe Account')).toBeInTheDocument() }, { timeout: FETCH_TIMEOUT }, ) diff --git a/src/tests/pages/apps.test.tsx b/src/tests/pages/apps.test.tsx index d6a40c6d00..3674c745e1 100644 --- a/src/tests/pages/apps.test.tsx +++ b/src/tests/pages/apps.test.tsx @@ -394,7 +394,7 @@ describe('AppsPage', () => { const appURLInput = screen.getByLabelText(/Safe App URL/) fireEvent.change(appURLInput, { target: { value: APP_URL } }) const riskCheckbox = await screen.findByText( - /This Safe App is not part of Safe and I agree to use it at my own risk\./, + /This Safe App is not part of Safe{Wallet} and I agree to use it at my own risk\./, ) await act(() => { fireEvent.click(riskCheckbox) diff --git a/src/utils/validation.ts b/src/utils/validation.ts index 24f493e081..133cfefbf6 100644 --- a/src/utils/validation.ts +++ b/src/utils/validation.ts @@ -40,7 +40,7 @@ export const uniqueAddress = export const addressIsNotCurrentSafe = (safeAddress: string) => (address: string): string | undefined => { - const OWNER_ADDRESS_IS_SAFE_ADDRESS_ERROR = 'Cannot use Safe itself as owner.' + const OWNER_ADDRESS_IS_SAFE_ADDRESS_ERROR = 'Cannot use Safe Account itself as owner.' return sameAddress(safeAddress, address) ? OWNER_ADDRESS_IS_SAFE_ADDRESS_ERROR : undefined } From 894ec31152feae2be8b41906d40567dee1895a65 Mon Sep 17 00:00:00 2001 From: katspaugh Date: Tue, 30 May 2023 11:22:21 +0200 Subject: [PATCH 307/422] v1.11.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 97f8961e19..46839c3e83 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/safe-global/safe-wallet-web", "license": "GPL-3.0", "type": "module", - "version": "1.10.0", + "version": "1.11.0", "scripts": { "dev": "next dev", "start": "next dev", From 1becafe8294c43686d0a68d9e34231611a7030c0 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Wed, 31 May 2023 11:00:15 +0200 Subject: [PATCH 308/422] Text: minor edits in the Termsn and Privacy (Safe -> Safe Account) (#2063) --- src/components/privacy/index.tsx | 4 ++-- src/components/terms/index.tsx | 35 ++++++++++++++++---------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/components/privacy/index.tsx b/src/components/privacy/index.tsx index 93e0e31e66..635f292ae0 100644 --- a/src/components/privacy/index.tsx +++ b/src/components/privacy/index.tsx @@ -6,7 +6,7 @@ const SafePrivacyPolicy = () => { return (

            Privacy Policy

            -

            Last updated on March 2023.

            +

            Last updated on May 2023.

            Your privacy is important to us. It is our policy to respect your privacy and comply with any applicable law and regulation regarding any personal information we may collect about you, including across our website,{' '} @@ -462,7 +462,7 @@ const SafePrivacyPolicy = () => {

            5. Use of Third Party Applications

            5.1. Blockchain

            - When using the Safe Account your smart contract address, Safe Account Transactions, addresses of signer accounts + When using Safe Accounts your smart contract address, Safe Account Transactions, addresses of signer accounts and ETH balances and token balances will be stored on the Blockchain. See section 2 of this Policy

            diff --git a/src/components/terms/index.tsx b/src/components/terms/index.tsx index da31fac15f..99f34ab6db 100644 --- a/src/components/terms/index.tsx +++ b/src/components/terms/index.tsx @@ -10,7 +10,7 @@ const SafeTerms = () => { Terms and Conditions -

            Last updated: March, 2023

            +

            Last updated: May, 2023

            1. What is the scope of the Terms?

            1. @@ -87,8 +87,8 @@ const SafeTerms = () => {
            2. “Safe Account”

            - The Safe Account (“Safe”) is a modular, self-custodial (i.e. not supervised by us) smart - contract-based wallet not provided by CC. Safe Accounts are{' '} + A Safe Account is a modular, self-custodial (i.e. not supervised by us) smart contract-based wallet not provided + by CC. Safe Accounts are{' '} open-source @@ -103,23 +103,24 @@ const SafeTerms = () => { Transaction can be configured in code.{' '}

            - Owners need to connect a signing wallet with the Safe. Safe is compatible inter alia with standard private - key Wallets such as hardware wallets, browser extension wallets and mobile wallets that support WalletConnect. + Owners need to connect a signing wallet with a Safe Account. Safe Accounts are compatible inter alia with + standard private key Wallets such as hardware wallets, browser extension wallets and mobile wallets that support + WalletConnect.

            1. “Safe App”

            - You may access the Safe Account using the {'Safe{Wallet}'} web app, mobile app for iOS and android, or the - browser extension (each a “Safe App”). The Safe App may be used to manage your personal digital - assets on Ethereum and other common EVM chains when you connect the Safe Account with third-party services - (as defined below). The Safe App provides certain features that may be amended from time to time.{' '} + You may access Safe Accounts using the {'Safe{Wallet}'} web app, mobile app for iOS and android, or the browser + extension (each a “Safe App”). The Safe App may be used to manage your personal digital assets + on Ethereum and other common EVM chains when you connect a Safe Account with third-party services (as + defined below). The Safe App provides certain features that may be amended from time to time.{' '}

            1. “Third-Party Safe Apps”

            - The Safe App allows you to connect the Safe Account to third-party decentralized applications + The Safe App allows you to connect Safe Accounts to third-party decentralized applications (“Third-Party Safe Apps”) and use third-party services such as from the decentralized finance sector, DAO Tools or services related to NFTs (“Third-Party Services"). The Third-Party Safe Apps are integrated in the user interface of the Safe App via inline framing. The provider @@ -142,7 +143,7 @@ const SafeTerms = () => {

          2. coverage underwritten by any regulatory agency’s compensation scheme;
          3. - custody of your Recovery Phrase, Private Keys, Tokens or the ability to remove or freeze your Tokens, i.e. + custody of your Recovery Phrase, Private Keys, Tokens or the ability to remove or freeze your Tokens, i.e. a Safe Account is a self-custodial wallet;
          4. the storage or transmission of fiat currencies;
          5. @@ -279,10 +280,10 @@ const SafeTerms = () => {

            10. What licenses and access do we grant to you?

            1. - All intellectual property rights in the Safe Account and the Services throughout the world belong to us as - owner or our licensors. Nothing in these Terms gives you any rights in respect of any intellectual property - owned by us or our licensors and you acknowledge that you do not acquire any ownership rights by downloading - the Safe App or any content from the Safe App. + All intellectual property rights in Safe Accounts and the Services throughout the world belong to us as owner + or our licensors. Nothing in these Terms gives you any rights in respect of any intellectual property owned by + us or our licensors and you acknowledge that you do not acquire any ownership rights by downloading the Safe + App or any content from the Safe App.
            2. If you are a consumer we grant you a simple, limited license, but do not sell, to you the Services you @@ -524,9 +525,9 @@ const SafeTerms = () => { is domiciled shall also apply, provided that these are more advantageous for the consumer than the provisions of the German law.

              -

              24. How can you get support for the Safe Account and tell us about any problems?

              +

              24. How can you get support for Safe Accounts and tell us about any problems?

              - If you want to learn more about the Safe Account or the Service or have any problems using them or have any + If you want to learn more about Safe Accounts or the Service or have any problems using them or have any complaints please get in touch via any of the following channels:

                From 9e24e449d89bd905bd6387029526f7917fe55b53 Mon Sep 17 00:00:00 2001 From: katspaugh Date: Thu, 1 Jun 2023 09:53:30 +0200 Subject: [PATCH 309/422] v1.12.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 46839c3e83..5cb6653a91 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/safe-global/safe-wallet-web", "license": "GPL-3.0", "type": "module", - "version": "1.11.0", + "version": "1.12.0", "scripts": { "dev": "next dev", "start": "next dev", From 20b9e44934458a91618cf9556df4c4ce7f75155a Mon Sep 17 00:00:00 2001 From: Garvit Khatri Date: Thu, 8 Jun 2023 15:08:55 +0530 Subject: [PATCH 310/422] feat: Remember the state of Execute transaction checkbox in settings (#2075) * Remember the state of Execute transaction checkbox in settings * fix typo --- .../balances/AssetsTable/index.test.tsx | 4 ++++ .../balances/HiddenTokenButton/index.test.tsx | 1 + src/components/tx/SignOrExecuteForm/index.tsx | 16 ++++++++++++++-- src/store/settingsSlice.ts | 6 ++++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/components/balances/AssetsTable/index.test.tsx b/src/components/balances/AssetsTable/index.test.tsx index 62eec13c33..759db503d8 100644 --- a/src/components/balances/AssetsTable/index.test.tsx +++ b/src/components/balances/AssetsTable/index.test.tsx @@ -108,6 +108,7 @@ describe('AssetsTable', () => { signing: { onChainSigning: false, }, + transactionExecution: true, }, }, }) @@ -213,6 +214,7 @@ describe('AssetsTable', () => { signing: { onChainSigning: false, }, + transactionExecution: true, }, }, }) @@ -314,6 +316,7 @@ describe('AssetsTable', () => { signing: { onChainSigning: false, }, + transactionExecution: true, }, }, }) @@ -412,6 +415,7 @@ describe('AssetsTable', () => { signing: { onChainSigning: false, }, + transactionExecution: true, }, }, }) diff --git a/src/components/balances/HiddenTokenButton/index.test.tsx b/src/components/balances/HiddenTokenButton/index.test.tsx index 7c8788065b..2df2e63fb0 100644 --- a/src/components/balances/HiddenTokenButton/index.test.tsx +++ b/src/components/balances/HiddenTokenButton/index.test.tsx @@ -86,6 +86,7 @@ describe('HiddenTokenToggle', () => { signing: { onChainSigning: false, }, + transactionExecution: true, }, }, }) diff --git a/src/components/tx/SignOrExecuteForm/index.tsx b/src/components/tx/SignOrExecuteForm/index.tsx index 0e13af5d62..1fbb16c641 100644 --- a/src/components/tx/SignOrExecuteForm/index.tsx +++ b/src/components/tx/SignOrExecuteForm/index.tsx @@ -22,6 +22,8 @@ import { useRelaysBySafe } from '@/hooks/useRemainingRelays' import useWalletCanRelay from '@/hooks/useWalletCanRelay' import { ExecutionMethod, ExecutionMethodSelector } from '../ExecutionMethodSelector' import { hasRemainingRelays } from '@/utils/relaying' +import { useAppDispatch, useAppSelector } from '@/store' +import { selectSettings, setTransactionExecution } from '@/store/settingsSlice' type SignOrExecuteProps = { safeTx?: SafeTransaction @@ -48,10 +50,12 @@ const SignOrExecuteForm = ({ origin, ...props }: SignOrExecuteProps): ReactElement => { + const settings = useAppSelector(selectSettings) + // // Hooks & variables // - const [shouldExecute, setShouldExecute] = useState(true) + const [shouldExecute, setShouldExecute] = useState(settings.transactionExecution) const [isSubmittable, setIsSubmittable] = useState(true) const [tx, setTx] = useState(safeTx) const [submitError, setSubmitError] = useState() @@ -61,6 +65,7 @@ const SignOrExecuteForm = ({ const currentChain = useCurrentChain() const { signTx, executeTx } = useTxActions() const [relays] = useRelaysBySafe() + const dispatch = useAppDispatch() // Check that the transaction is executable const isCreation = !txId @@ -149,6 +154,11 @@ const SignOrExecuteForm = ({ setAdvancedParams(data) } + const handleExecuteCheckboxChange = (checked: boolean) => { + setShouldExecute(checked) + dispatch(setTransactionExecution(checked)) + } + const cannotPropose = !isOwner && !onlyExecute // Can't sign or create a tx if not an owner const submitDisabled = !isSubmittable || @@ -168,7 +178,9 @@ const SignOrExecuteForm = ({ - {canExecute && } + {canExecute && ( + + )} ) => { state.shortName.qr = payload }, + setTransactionExecution: (state, { payload }: PayloadAction) => { + state.transactionExecution = payload + }, setDarkMode: (state, { payload }: PayloadAction) => { state.theme.darkMode = payload }, @@ -127,6 +132,7 @@ export const { setRpc, setTenderly, setOnChainSigning, + setTransactionExecution, } = settingsSlice.actions export const selectSettings = (state: RootState): SettingsState => state[settingsSlice.name] From bbc7f308052c4d10a24ef119d7b05209c26b2551 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Jun 2023 20:22:47 +0100 Subject: [PATCH 311/422] chore(deps-dev): bump @openzeppelin/contracts from 4.8.3 to 4.9.1 (#2076) Bumps [@openzeppelin/contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) from 4.8.3 to 4.9.1. - [Release notes](https://github.com/OpenZeppelin/openzeppelin-contracts/releases) - [Changelog](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.9.1/CHANGELOG.md) - [Commits](https://github.com/OpenZeppelin/openzeppelin-contracts/compare/v4.8.3...v4.9.1) --- updated-dependencies: - dependency-name: "@openzeppelin/contracts" dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5cb6653a91..8bb41e548f 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ }, "devDependencies": { "@next/bundle-analyzer": "^13.1.1", - "@openzeppelin/contracts": "^4.8.3", + "@openzeppelin/contracts": "^4.9.1", "@safe-global/safe-core-sdk-types": "^1.9.1", "@sentry/types": "^7.28.1", "@svgr/webpack": "^6.3.1", diff --git a/yarn.lock b/yarn.lock index e7e81310be..70d68f81b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2863,10 +2863,10 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@openzeppelin/contracts@^4.8.3": - version "4.8.3" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.3.tgz#cbef3146bfc570849405f59cba18235da95a252a" - integrity sha512-bQHV8R9Me8IaJoJ2vPG4rXcL7seB7YVuskr4f+f5RyOStSZetwzkWtoqDMl5erkBJy0lDRUnIR2WIkPiC0GJlg== +"@openzeppelin/contracts@^4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.1.tgz#afa804d2c68398704b0175acc94d91a54f203645" + integrity sha512-aLDTLu/If1qYIFW5g4ZibuQaUsFGWQPBq1mZKp/txaebUnGHDmmiBhRLY1tDNedN0m+fJtKZ1zAODS9Yk+V6uA== "@pkgr/utils@^2.3.1": version "2.3.1" From 1453c3d9092cda35826f6463e73ec8d41ff83d32 Mon Sep 17 00:00:00 2001 From: katspaugh Date: Mon, 12 Jun 2023 09:42:41 +0200 Subject: [PATCH 312/422] Fix: OpenSea links on mainnet --- src/components/nfts/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/nfts/config.ts b/src/components/nfts/config.ts index ef1300f516..6e4610ace7 100644 --- a/src/components/nfts/config.ts +++ b/src/components/nfts/config.ts @@ -17,7 +17,7 @@ export const nftPlatforms: Record> = { { title: 'OpenSea', logo: '/images/common/nft-opensea.svg', - getUrl: (item) => `https://opensea.io/assets/${item.address}/${item.id}`, + getUrl: (item) => `https://opensea.io/assets/ethereum/${item.address}/${item.id}`, }, { title: 'Blur', From ad2779c5ddf44f7e73ce773ba86795d291738d47 Mon Sep 17 00:00:00 2001 From: Manuel Gellfart Date: Mon, 12 Jun 2023 12:20:11 +0200 Subject: [PATCH 313/422] fix: sign messages with hardware wallets through metamask (#2079) --- .../__tests__/safeMsgSender.test.ts | 49 ++++++++++++++++--- src/utils/safe-messages.ts | 9 +++- 2 files changed, 51 insertions(+), 7 deletions(-) diff --git a/src/services/safe-messages/__tests__/safeMsgSender.test.ts b/src/services/safe-messages/__tests__/safeMsgSender.test.ts index d94d03fd67..66ad75806f 100644 --- a/src/services/safe-messages/__tests__/safeMsgSender.test.ts +++ b/src/services/safe-messages/__tests__/safeMsgSender.test.ts @@ -59,6 +59,9 @@ const mockOnboard = { }, } as unknown as OnboardAPI +const mockValidSignature = `${hexZeroPad('0x456', 64)}1c` +const mockSignatureWithInvalidV = `${hexZeroPad('0x456', 64)}01` + describe('safeMsgSender', () => { beforeEach(() => { jest.clearAllMocks() @@ -66,7 +69,7 @@ describe('safeMsgSender', () => { jest.spyOn(utils, 'generateSafeMessageHash').mockImplementation(() => '0x123') jest.spyOn(sdk, 'getAssertedChainSigner').mockResolvedValue({ - _signTypedData: jest.fn().mockImplementation(() => Promise.resolve('0x456')), + _signTypedData: jest.fn().mockImplementation(() => Promise.resolve(mockValidSignature)), } as unknown as JsonRpcSigner) }) @@ -91,7 +94,7 @@ describe('safeMsgSender', () => { expect(proposeSafeMessageSpy).toHaveBeenCalledWith('5', hexZeroPad('0x789', 20), { message, - signature: '0x456', + signature: mockValidSignature, safeAppId, }) @@ -144,11 +147,45 @@ describe('safeMsgSender', () => { expect(proposeSafeMessageSpy).toHaveBeenCalledWith('5', hexZeroPad('0x789', 20), { message, - signature: '0x456', + signature: mockValidSignature, safeAppId, }) }) + it('should adjust hardware wallet signatures', async () => { + jest.spyOn(sdk, 'getAssertedChainSigner').mockResolvedValue({ + _signTypedData: jest.fn().mockImplementation(() => Promise.resolve(mockSignatureWithInvalidV)), + } as unknown as JsonRpcSigner) + + const proposeSafeMessageSpy = jest.spyOn(gateway, 'proposeSafeMessage') + proposeSafeMessageSpy.mockImplementation(() => Promise.resolve()) + + const safeMsgDispatchSpy = jest.spyOn(events, 'safeMsgDispatch') + + const safe = { + version: '1.3.0', + chainId: '5', + address: { + value: hexZeroPad('0x789', 20), + }, + } as unknown as gateway.SafeInfo + const message = 'Hello world' + const safeAppId = 1 + + await dispatchSafeMsgProposal({ onboard: mockOnboard, safe, message, safeAppId }) + + expect(proposeSafeMessageSpy).toHaveBeenCalledWith('5', hexZeroPad('0x789', 20), { + message, + // Even though the mock returns the signature with invalid V, the valid signature should get dispatched as we adjust invalid Vs + signature: mockValidSignature, + safeAppId, + }) + + expect(safeMsgDispatchSpy).toHaveBeenCalledWith(events.SafeMsgEvent.PROPOSE, { + messageHash: '0x123', + }) + }) + it('should dispatch a message proposal failure', async () => { const proposeSafeMessageSpy = jest.spyOn(gateway, 'proposeSafeMessage') proposeSafeMessageSpy.mockImplementation(() => Promise.reject(new Error('Example error'))) @@ -172,7 +209,7 @@ describe('safeMsgSender', () => { expect(proposeSafeMessageSpy).toHaveBeenCalledWith('5', hexZeroPad('0x789', 20), { message, - signature: '0x456', + signature: mockValidSignature, safeAppId, }) @@ -203,7 +240,7 @@ describe('safeMsgSender', () => { await dispatchSafeMsgConfirmation({ onboard: mockOnboard, safe, message }) expect(confirmSafeMessageSpy).toHaveBeenCalledWith('5', '0x123', { - signature: '0x456', + signature: mockValidSignature, }) expect(safeMsgDispatchSpy).toHaveBeenCalledWith(events.SafeMsgEvent.CONFIRM_PROPOSE, { @@ -232,7 +269,7 @@ describe('safeMsgSender', () => { expect((e as Error).message).toBe('Example error') expect(confirmSafeMessageSpy).toHaveBeenCalledWith('5', '0x123', { - signature: '0x456', + signature: mockValidSignature, }) expect(safeMsgDispatchSpy).toHaveBeenCalledWith(events.SafeMsgEvent.CONFIRM_PROPOSE_FAILED, { diff --git a/src/utils/safe-messages.ts b/src/utils/safe-messages.ts index eb7ade08ec..c83956bd50 100644 --- a/src/utils/safe-messages.ts +++ b/src/utils/safe-messages.ts @@ -110,7 +110,14 @@ export const tryOffChainMsgSigning = async ( try { if (signingMethod === 'eth_signTypedData') { const typedData = generateSafeMessageTypedData(safe, message) - return await signer._signTypedData(typedData.domain as TypedDataDomain, typedData.types, typedData.message) + const signature = await signer._signTypedData( + typedData.domain as TypedDataDomain, + typedData.types, + typedData.message, + ) + + // V needs adjustment when signing with ledger / trezor through metamask + return adjustVInSignature(signingMethod, signature) } if (signingMethod === 'eth_sign') { From 1a84bd00c7afc3e84ebee17f5c1b4ac3f1cc1eef Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Mon, 12 Jun 2023 19:47:01 +0200 Subject: [PATCH 314/422] Chore: use REVERSE_PROXY_UI_PORT env var in the serve command (#2082) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8bb41e548f..677872dbb4 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "cypress:open": "cross-env TZ=UTC cypress open", "cypress:run": "cypress run", "cypress:ci": "yarn cypress:run --config baseUrl=http://localhost:8080 --spec cypress/e2e/smoke/*.cy.js", - "serve": "npx -y serve -p 8080 out", + "serve": "npx -y serve out -p ${REVERSE_PROXY_UI_PORT:=8080}", "static-serve": "yarn build && yarn export && yarn serve" }, "pre-commit": [ From 9467a48bc7b5f9165c8c4c99e7e8525d23cb876f Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Thu, 15 Jun 2023 17:31:17 +0200 Subject: [PATCH 315/422] Chore: add --e2e to the cypress command (#2114) --- .gitignore | 1 + package.json | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c7d758f82a..9166d3eeca 100644 --- a/.gitignore +++ b/.gitignore @@ -44,6 +44,7 @@ yalc.lock .env /cypress/videos +/cypress/screenshots /cypress/downloads /public/sw.js diff --git a/package.json b/package.json index 677872dbb4..7f7189eff7 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "generate-types": "typechain --target ethers-v5 --out-dir src/types/contracts ./node_modules/@safe-global/safe-deployments/dist/assets/**/*.json ./node_modules/@safe-global/safe-modules-deployments/dist/assets/**/*.json ./node_modules/@openzeppelin/contracts/build/contracts/ERC20.json", "postinstall": "yarn generate-types && yarn css-vars", "analyze": "cross-env ANALYZE=true yarn build", - "cypress:open": "cross-env TZ=UTC cypress open", + "cypress:open": "cross-env TZ=UTC cypress open --e2e", + "cypress:canary": "cross-env TZ=UTC cypress open --e2e -b chrome:canary", "cypress:run": "cypress run", "cypress:ci": "yarn cypress:run --config baseUrl=http://localhost:8080 --spec cypress/e2e/smoke/*.cy.js", "serve": "npx -y serve out -p ${REVERSE_PROXY_UI_PORT:=8080}", From bd5200a6aedb7ed58264e422d5bb42f74f12604c Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Fri, 16 Jun 2023 09:17:55 +0200 Subject: [PATCH 316/422] fix: use `baseGas` in estimation (#2092) --- src/hooks/useGasLimit.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useGasLimit.ts b/src/hooks/useGasLimit.ts index a5ede16440..ce2e441a11 100644 --- a/src/hooks/useGasLimit.ts +++ b/src/hooks/useGasLimit.ts @@ -25,7 +25,7 @@ const getEncodedSafeTx = (safeSDK: Safe, safeTx: SafeTransaction, from?: string) safeTx.data.data, safeTx.data.operation, safeTx.data.safeTxGas, - 0, + safeTx.data.baseGas, safeTx.data.gasPrice, safeTx.data.gasToken, safeTx.data.refundReceiver, From 626442d1135a0913702eccbe64e4542ec8e53890 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Fri, 16 Jun 2023 15:16:59 +0200 Subject: [PATCH 317/422] Chore: fix e2e tests (#2118) * Chore: fix e2e tests * Restore wallet check * Use prod CGW * Use prod CGW * Pending actions * Create tx --- cypress/e2e/smoke/balances.cy.js | 34 +++++++++++-------------- cypress/e2e/smoke/create_tx.cy.js | 3 ++- cypress/e2e/smoke/dashboard.cy.js | 6 ++++- cypress/e2e/smoke/pending_actions.cy.js | 12 ++++----- cypress/e2e/smoke/tx_history.cy.js | 2 ++ cypress/support/commands.js | 12 +++++++++ src/hooks/wallets/useOnboard.ts | 12 ++++----- 7 files changed, 47 insertions(+), 34 deletions(-) diff --git a/cypress/e2e/smoke/balances.cy.js b/cypress/e2e/smoke/balances.cy.js index 5321f3ffb0..3702e55663 100644 --- a/cypress/e2e/smoke/balances.cy.js +++ b/cypress/e2e/smoke/balances.cy.js @@ -3,7 +3,7 @@ const balanceSingleRow = '[aria-labelledby="tableTitle"] > tbody tr' const TEST_SAFE = 'gor:0x97d314157727D517A706B5D08507A1f9B44AaaE9' const PAGINATION_TEST_SAFE = 'gor:0x850493a15914aAC05a821A3FAb973b4598889A7b' -const ASSETS_LENGTH = 7 +const ASSETS_LENGTH = 8 const ASSET_NAME_COLUMN = 0 const TOKEN_AMOUNT_COLUMN = 1 const FIAT_AMOUNT_COLUMN = 2 @@ -13,6 +13,8 @@ describe('Assets > Coins', () => { const fiatRegex = new RegExp(`([0-9]{1,3},)*[0-9]{1,3}.[0-9]{2}`) before(() => { + cy.disableProdCGW() + // Open the Safe used for testing cy.visit(`/balances?safe=${TEST_SAFE}`) cy.contains('button', 'Accept selection').click() @@ -20,21 +22,15 @@ describe('Assets > Coins', () => { cy.contains('Görli Ether') cy.contains('button', 'Got it').click() + + cy.get(balanceSingleRow).should('have.length.lessThan', ASSETS_LENGTH) + cy.contains('div', 'Default tokens').click() + cy.wait(100) + cy.contains('div', 'All tokens').click() + cy.get(balanceSingleRow).should('have.length', ASSETS_LENGTH) }) describe('should have different tokens', () => { - it(`should have ${ASSETS_LENGTH} entries in the table`, () => { - // "Spam" tokens filtered - cy.get(balanceSingleRow).should('have.length', 3) - - // Enable all tokens - cy.contains('div', 'Default tokens').click() - cy.wait(100) - cy.contains('div', 'All tokens').click() - - cy.get(balanceSingleRow).should('have.length', ASSETS_LENGTH) - }) - it('should have Dai', () => { // Row should have an image with alt text "Dai" cy.contains('Dai') @@ -215,7 +211,7 @@ describe('Assets > Coins', () => { it('should allow changing rows per page and navigate to next and previous page', () => { // Table should have 25 rows inittially cy.contains('Rows per page:').next().contains('25') - cy.contains('1–25 of 27') + cy.contains('1–25 of') cy.get(balanceSingleRow).should('have.length', 25) // Change to 10 rows per page @@ -225,22 +221,22 @@ describe('Assets > Coins', () => { // Table should have 10 rows cy.contains('Rows per page:').next().contains('10') - cy.contains('1–10 of 27') + cy.contains('1–10 of') cy.get(balanceSingleRow).should('have.length', 10) // Click on the next page button cy.get('button[aria-label="Go to next page"]').click({ force: true }) cy.get('button[aria-label="Go to next page"]').click({ force: true }) - // Table should have 7 rows - cy.contains('21–27 of 27') - cy.get(balanceSingleRow).should('have.length', 7) + // Table should have N rows + cy.contains('21–28 of') + cy.get(balanceSingleRow).should('have.length', ASSETS_LENGTH) // Click on the previous page button cy.get('button[aria-label="Go to previous page"]').click({ force: true }) // Table should have 10 rows - cy.contains('11–20 of 27') + cy.contains('11–20 of') cy.get(balanceSingleRow).should('have.length', 10) }) }) diff --git a/cypress/e2e/smoke/create_tx.cy.js b/cypress/e2e/smoke/create_tx.cy.js index 0355ba022b..ee09b6b43f 100644 --- a/cypress/e2e/smoke/create_tx.cy.js +++ b/cypress/e2e/smoke/create_tx.cy.js @@ -9,6 +9,7 @@ const currentNonce = 3 describe('Queue a transaction on 1/N', () => { before(() => { cy.connectE2EWallet() + cy.useProdCGW() cy.visit(`/home?safe=${SAFE}`) @@ -167,7 +168,7 @@ describe('Queue a transaction on 1/N', () => { // Click on the notification cy.contains('View transaction').click() - cy.contains('Queue').click() + //cy.contains('Queue').click() // Single Tx page cy.contains('h3', 'Transaction details').should('be.visible') diff --git a/cypress/e2e/smoke/dashboard.cy.js b/cypress/e2e/smoke/dashboard.cy.js index 86f2fddbb2..4442841459 100644 --- a/cypress/e2e/smoke/dashboard.cy.js +++ b/cypress/e2e/smoke/dashboard.cy.js @@ -2,8 +2,11 @@ const SAFE = encodeURIComponent('gor:0xCD4FddB8FfA90012DFE11eD4bf258861204FeEAE' describe('Dashboard', () => { before(() => { + cy.useProdCGW() + // Go to the test Safe home page cy.visit(`/home?safe=${SAFE}`) + cy.contains('button', 'Accept selection').click() // Wait for dashboard to initialize @@ -19,7 +22,8 @@ describe('Dashboard', () => { cy.contains('0xCD4FddB8FfA90012DFE11eD4bf258861204FeEAE').should('exist') cy.contains('2/3') cy.get(`a[href="/balances?safe=${SAFE}"]`).contains('View assets') - cy.contains('p', 'Tokens').next().contains('1') + // Text next to Tokens contains a number greater than 0 + cy.contains('p', 'Tokens').next().contains('3') cy.contains('p', 'NFTs').next().contains('0') }) }) diff --git a/cypress/e2e/smoke/pending_actions.cy.js b/cypress/e2e/smoke/pending_actions.cy.js index f89cf91a1e..e381212f6d 100644 --- a/cypress/e2e/smoke/pending_actions.cy.js +++ b/cypress/e2e/smoke/pending_actions.cy.js @@ -3,10 +3,10 @@ const SAFE = 'gor:0xCD4FddB8FfA90012DFE11eD4bf258861204FeEAE' describe('Pending actions', () => { before(() => { cy.connectE2EWallet() + cy.useProdCGW() cy.visit(`/welcome`) cy.contains('button', 'Accept selection').click() - cy.contains('E2E Wallet @ Görli') }) beforeEach(() => { @@ -42,8 +42,8 @@ describe('Pending actions', () => { cy.get('li').within(() => { cy.contains('0xCD4F...eEAE').should('exist') - cy.get('img[alt="E2E Wallet logo"]').next().contains('3').should('exist') - cy.get('[data-testid=CheckIcon]').next().contains('3').should('exist') + cy.get('img[alt="E2E Wallet logo"]').next().contains('2').should('exist') + cy.get('[data-testid=CheckIcon]').next().contains('2').should('exist') // click on the pending actions cy.get('[data-testid=CheckIcon]').next().click() @@ -55,12 +55,12 @@ describe('Pending actions', () => { cy.contains('h3', 'Transactions').should('be.visible') // contains 3 queued transactions - cy.get('span:contains("1 out of 2")').should('have.length', 3) + cy.get('span:contains("1 out of 2")').should('have.length', 2) // Ensure wallet is connected - cy.contains('E2E Wallet @ Görli') + cy.contains('E2E Wallet @ Goerli') // contains 3 signable transactions - cy.get('span:contains("Needs your confirmation")').should('have.length', 3) + cy.get('span:contains("Needs your confirmation")').should('have.length', 2) }) }) diff --git a/cypress/e2e/smoke/tx_history.cy.js b/cypress/e2e/smoke/tx_history.cy.js index f67179c432..f5da4642ab 100644 --- a/cypress/e2e/smoke/tx_history.cy.js +++ b/cypress/e2e/smoke/tx_history.cy.js @@ -6,6 +6,8 @@ const CONTRACT_INTERACTION = 'Contract interaction' describe('Transaction history', () => { before(() => { + cy.useProdCGW() + // Go to the test Safe transaction history cy.visit(`/transactions/history?safe=${SAFE}`) cy.contains('button', 'Accept selection').click() diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 5393ef0a01..75eae8fba5 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -5,6 +5,18 @@ Cypress.Commands.add('connectE2EWallet', () => { }) }) +Cypress.Commands.add('useProdCGW', () => { + cy.on('window:before:load', (window) => { + window.localStorage.setItem('SAFE_v2__debugProdCgw', JSON.stringify(true)) + }) +}) + +Cypress.Commands.add('disableProdCGW', () => { + cy.on('window:before:load', (window) => { + window.localStorage.setItem('SAFE_v2__debugProdCgw', JSON.stringify(false)) + }) +}) + let LOCAL_STORAGE_MEMORY = {} Cypress.Commands.add('saveLocalStorageCache', () => { diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index d85f4d55a6..627fb3cde4 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -197,12 +197,10 @@ export const useInitOnboard = () => { onboard.state.actions.setWalletModules(supportedWallets) } - enableWallets() - }, [chain, onboard]) + // Connect to the last connected wallet + enableWallets().then(() => { + if (onboard.state.get().wallets.length > 0) return - // Connect to the last connected wallet - useEffect(() => { - if (onboard && onboard.state.get().wallets.length === 0) { const label = lastWalletStorage.get() if (!label) return @@ -212,8 +210,8 @@ export const useInitOnboard = () => { autoSelect: { label, disableModals: true }, }) }) - } - }, [onboard]) + }) + }, [chain, onboard]) } export default useStore From 6a68059bf47e25b30ab52046394b755023083a87 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Fri, 16 Jun 2023 15:34:59 +0200 Subject: [PATCH 318/422] chore: upgrade onboard (#2018) * chore: upgrade onboard * fix: logo, remove TODO + error expection * fix: update packages + logo dimensions * fix: Ledger connection + remove workaround --------- Co-authored-by: katspaugh --- jest.setup.js | 10 +- package.json | 16 +- src/components/licenses/index.tsx | 2 +- src/config/securityHeaders.ts | 2 +- src/hooks/wallets/consts.ts | 4 +- src/hooks/wallets/useOnboard.ts | 23 - src/hooks/wallets/wallets.ts | 6 +- src/services/onboard.ts | 10 +- src/services/pairing/module.ts | 2 - src/styles/onboard.css | 80 +- yarn.lock | 1633 ++++++++++++++++++++++++----- 11 files changed, 1454 insertions(+), 334 deletions(-) diff --git a/jest.setup.js b/jest.setup.js index 6169ac7d49..53b3c298a3 100644 --- a/jest.setup.js +++ b/jest.setup.js @@ -12,15 +12,7 @@ jest.mock('@web3-onboard/keystone/dist/index', () => jest.fn()) jest.mock('@web3-onboard/ledger', () => jest.fn()) jest.mock('@web3-onboard/trezor', () => jest.fn()) jest.mock('@web3-onboard/walletconnect', () => jest.fn()) -jest.mock('@web3-onboard/tallyho', () => jest.fn()) - -jest.mock('@web3-onboard/injected-wallets/dist/icons/metamask', () => '') -jest.mock('@web3-onboard/coinbase/dist/icon', () => '') -jest.mock('@web3-onboard/keystone/dist/icon', () => '') -jest.mock('@web3-onboard/walletconnect/dist/icon', () => '') -jest.mock('@web3-onboard/trezor/dist/icon', () => '') -jest.mock('@web3-onboard/ledger/dist/icon', () => '') -jest.mock('@web3-onboard/tallyho/dist/icon', () => '') +jest.mock('@web3-onboard/taho', () => jest.fn()) const mockOnboardState = { chains: [], diff --git a/package.json b/package.json index 7f7189eff7..6e86051c1b 100644 --- a/package.json +++ b/package.json @@ -53,14 +53,14 @@ "@sentry/react": "^7.28.1", "@sentry/tracing": "^7.28.1", "@truffle/hdwallet-provider": "^2.1.4", - "@web3-onboard/coinbase": "^2.1.3", - "@web3-onboard/core": "2.8.5", - "@web3-onboard/injected-wallets": "^2.3.0", - "@web3-onboard/keystone": "^2.3.2", - "@web3-onboard/ledger": "^2.3.2", - "@web3-onboard/tallyho": "^2.0.1", - "@web3-onboard/trezor": "^2.3.2", - "@web3-onboard/walletconnect": "^2.1.3", + "@web3-onboard/coinbase": "^2.2.4", + "@web3-onboard/core": "2.20.1", + "@web3-onboard/injected-wallets": "^2.10.0", + "@web3-onboard/keystone": "^2.3.7", + "@web3-onboard/ledger": "^2.4.6", + "@web3-onboard/taho": "^2.0.4", + "@web3-onboard/trezor": "^2.4.2", + "@web3-onboard/walletconnect": "^2.3.9", "classnames": "^2.3.1", "date-fns": "^2.29.2", "ethereum-blockies-base64": "^1.0.2", diff --git a/src/components/licenses/index.tsx b/src/components/licenses/index.tsx index 20481c794f..8061a5e5dd 100644 --- a/src/components/licenses/index.tsx +++ b/src/components/licenses/index.tsx @@ -553,7 +553,7 @@ const SafeLicenses = () => { - @web3-onboard/tallyho + @web3-onboard/taho https://github.com/blocknative/web3-onboard/blob/main/LICENSE diff --git a/src/config/securityHeaders.ts b/src/config/securityHeaders.ts index 3da8be5bf0..611f747d95 100644 --- a/src/config/securityHeaders.ts +++ b/src/config/securityHeaders.ts @@ -12,7 +12,7 @@ import { CYPRESS_MNEMONIC, IS_PRODUCTION } from '@/config/constants' export const ContentSecurityPolicy = ` default-src 'self'; connect-src 'self' *; - script-src 'self' https://www.google-analytics.com https://ssl.google-analytics.com 'unsafe-inline' https://*.getbeamer.com https://www.googletagmanager.com https://*.ingest.sentry.io https://sentry.io ${ + script-src 'self' https://www.google-analytics.com https://ssl.google-analytics.com 'unsafe-inline' https://*.getbeamer.com https://www.googletagmanager.com https://*.ingest.sentry.io https://sentry.io https://cdn.jsdelivr.net/npm/@ledgerhq/connect-kit@1 ${ !IS_PRODUCTION || /* TODO: remove after moving cypress to görli and testing in staging again!! */ CYPRESS_MNEMONIC ? "'unsafe-eval'" : '' diff --git a/src/hooks/wallets/consts.ts b/src/hooks/wallets/consts.ts index c278e2a174..042a656fa4 100644 --- a/src/hooks/wallets/consts.ts +++ b/src/hooks/wallets/consts.ts @@ -6,7 +6,7 @@ export const enum WALLET_KEYS { PAIRING = 'PAIRING', TREZOR = 'TREZOR', WALLETCONNECT = 'WALLETCONNECT', - TALLYHO = 'TALLYHO', + TAHO = 'TAHO', } export const CGW_NAMES: { [key in WALLET_KEYS]: string | undefined } = { @@ -17,5 +17,5 @@ export const CGW_NAMES: { [key in WALLET_KEYS]: string | undefined } = { [WALLET_KEYS.PAIRING]: 'safeMobile', [WALLET_KEYS.TREZOR]: 'trezor', [WALLET_KEYS.WALLETCONNECT]: 'walletConnect', - [WALLET_KEYS.TALLYHO]: 'tally', + [WALLET_KEYS.TAHO]: 'tally', } diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index 627fb3cde4..3c2ce2a62a 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -145,31 +145,8 @@ export const connectWallet = async ( return wallets } -// A workaround for an onboard "feature" that shows a defunct account select popup -// See https://github.com/blocknative/web3-onboard/issues/888 -const closeAccountSelectionModal = () => { - const maxTries = 100 - const modalText = 'Please switch the active account' - let tries = 0 - - const timer = setInterval(() => { - const onboardModal = document.querySelector('onboard-v2')?.shadowRoot - const isActionRequired = onboardModal?.textContent?.includes(modalText) - - if (isActionRequired) { - // Dismiss the modal - ;(onboardModal?.querySelector('.background') as HTMLElement)?.click() - tries = maxTries - } - - tries += 1 - if (tries >= maxTries) clearInterval(timer) - }, 100) -} - export const switchWallet = (onboard: OnboardAPI) => { connectWallet(onboard) - closeAccountSelectionModal() } // Disable/enable wallets according to chain and cache the last used wallet diff --git a/src/hooks/wallets/wallets.ts b/src/hooks/wallets/wallets.ts index f449c7e36a..8768bf6b9b 100644 --- a/src/hooks/wallets/wallets.ts +++ b/src/hooks/wallets/wallets.ts @@ -8,7 +8,7 @@ import keystoneModule from '@web3-onboard/keystone/dist/index' import ledgerModule from '@web3-onboard/ledger' import trezorModule from '@web3-onboard/trezor' import walletConnect from '@web3-onboard/walletconnect' -import tallyhoModule from '@web3-onboard/tallyho' +import tahoModule from '@web3-onboard/taho' import pairingModule from '@/services/pairing/module' import e2eWalletModule from '@/tests/e2e-wallet' @@ -17,11 +17,11 @@ import { CGW_NAMES, WALLET_KEYS } from './consts' const WALLET_MODULES: { [key in WALLET_KEYS]: () => WalletInit } = { [WALLET_KEYS.INJECTED]: injectedWalletModule, [WALLET_KEYS.PAIRING]: pairingModule, - [WALLET_KEYS.WALLETCONNECT]: () => walletConnect({ bridge: WC_BRIDGE }), + [WALLET_KEYS.WALLETCONNECT]: () => walletConnect({ version: 1, bridge: WC_BRIDGE }), [WALLET_KEYS.LEDGER]: ledgerModule, [WALLET_KEYS.TREZOR]: () => trezorModule({ appUrl: TREZOR_APP_URL, email: TREZOR_EMAIL }), [WALLET_KEYS.KEYSTONE]: keystoneModule, - [WALLET_KEYS.TALLYHO]: tallyhoModule, + [WALLET_KEYS.TAHO]: tahoModule, [WALLET_KEYS.COINBASE]: () => coinbaseModule({ darkMode: !!window?.matchMedia('(prefers-color-scheme: dark)')?.matches }), } diff --git a/src/services/onboard.ts b/src/services/onboard.ts index 082270ca9b..650aa4af1e 100644 --- a/src/services/onboard.ts +++ b/src/services/onboard.ts @@ -1,4 +1,3 @@ -// TODO: Upgrade onboard/core once https://github.com/blocknative/web3-onboard/issues/1385 is fixed import Onboard, { type EIP1193Provider, type OnboardAPI } from '@web3-onboard/core' import type { ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' import { hexValue } from '@ethersproject/bytes' @@ -41,12 +40,19 @@ export const createOnboard = (chainConfigs: ChainInfo[], rpcConfig: EnvState['rp desktop: { enabled: false }, }, + notify: { + enabled: false, + }, + appMetadata: { name: 'Safe{Wallet}', - icon: '/images/safe-logo-green.png', + // Both heights need be set to correctly size the image in the connecting screen/modal + icon: '', description: 'Please select a wallet to connect to Safe{Wallet}', recommendedInjectedWallets: getRecommendedInjectedWallets(), }, + + // TODO: Investigate using `autoConnectLastWallet` instead of our `lastWalletStorage` }) return onboard diff --git a/src/services/pairing/module.ts b/src/services/pairing/module.ts index d4187c8644..74b0e0c7d8 100644 --- a/src/services/pairing/module.ts +++ b/src/services/pairing/module.ts @@ -75,7 +75,6 @@ const pairingModule = (): WalletInit => { this.disconnected$ = new Subject() this.providers = {} - // @ts-expect-error - `payload` type (`ISessionStatus`) is not correctly `pipe`ed fromEvent(this.connector, ProviderEvents.WC_SESSION_UPDATE, (error, payload) => { if (error) { throw error @@ -94,7 +93,6 @@ const pairingModule = (): WalletInit => { error: console.warn, }) - // @ts-expect-error - `this.connector` does not satisfy the event target type fromEvent(this.connector, ProviderEvents.DISCONNECT, (error, payload) => { if (error) { throw error diff --git a/src/styles/onboard.css b/src/styles/onboard.css index 0fbd6deb6d..73345662e4 100644 --- a/src/styles/onboard.css +++ b/src/styles/onboard.css @@ -1,10 +1,24 @@ :root { + --w3o-background-color: var(--color-background-paper); + --w3o-foreground-color: var(--color-border-light); + --w3o-text-color: var(--color-text-primary); + --w3o-border-color: var(--color-border-light); + --w3o-action-color: var(--color-primary-main); + --w3o-border-radius: 6px; + --w3o-font-family: DM Sans, sans-serif; + + --onboard-border-radius-1: var(--w3o-border-radius); + --onboard-border-radius-2: var(--w3o-border-radius); + --onboard-border-radius-3: var(--w3o-border-radius); + + /* Palette */ --onboard-white: var(--color-background-paper); --onboard-black: var(--color-text-primary); --onboard-primary-1: var(--color-secondary-main); --onboard-primary-100: var(--color-secondary-background); --onboard-primary-200: var(--color-primary-light); + --onboard-primary-300: var(--color-primary-light); --onboard-primary-400: var(--color-primary-light); --onboard-primary-500: var(--color-primary-main); --onboard-primary-600: var(--color-primary-main); @@ -32,47 +46,44 @@ --onboard-warning-600: var(--color-error-main); --onboard-warning-700: var(--color-error-dark); - /* var(--color-backdrop-main) + opacity */ + /* Connect modal */ + --onboard-modal-z-index: 1301; + --onboard-modal-backdrop: rgba(99, 102, 105, 0.75); - --account-select-modal-white: var(--color-background-paper); - --account-select-modal-black: var(--color-primary-main); - --account-select-modal-primary-100: var(--color-secondary-background); - --account-select-modal-primary-200: var(--color-background-light); - --account-select-modal-primary-300: var(--color-secondary-background); - --account-select-modal-primary-500: var(--color-secondary-background); - --account-select-modal-primary-600: var(--color-secondary-light); + --onboard-modal-border-radius: var(--w3o-border-radius); - --account-select-primary-300: var(--color-primary-main); - --account-select-primary-500: var(--color-primary-main); + --onboard-connect-sidebar-progress-background: var(--color-border-main); + + --onboard-link-color: var(--color-primary-main); - --onboard-connect-sidebar-color: var(--color-text-primary); - --onboard-wallet-button-color: var(--color-text-primary); --onboard-wallet-app-icon-border-color: var(--color-border-light); --onboard-wallet-app-icon-background-white: #fff; --onboard-wallet-app-icon-background-transparent: #fff; --onboard-wallet-app-icon-background-light-gray: rgba(255, 255, 255, 0.5); - --onboard-wallet-button-border-color: var(--color-border-light); - --onboard-wallet-button-border-radius: 8px; + + --onboard-wallet-button-border-radius: var(--w3o-border-radius); --onboard-wallet-button-background-hover: var(--color-background-light); - --onboard-wallet-button-background-active: var(--color-background-light); - /* Needs to be brighter than var(--color-primary-main) to compensate for shadow blur */ - --onboard-wallet-button-box-shadow-hover: 0 0 2px #00fd00; - - /* Fonts */ - --onboard-font-family-normal: DM Sans, sans-serif; - --onboard-font-family-semibold: DM Sans, sans-serif; - --onboard-font-family-light: DM Sans, sans-serif; - --account-select-modal-font-family-normal: DM Sans, sans-serif; - --account-select-modal-font-family-light: DM Sans, sans-serif; - - --onboard-modal-border-radius: 8px; - --onboard-border-radius-1: 8px; - --onboard-border-radius-2: 8px; - --onboard-border-radius-3: 8px; - - /* Z-index */ - --onboard-modal-z-index: 1301; + + /* Account select (modal) */ + + --account-select-white: var(--onboard-white); + --account-select-black: var(--onboard-black); + + --account-select-primary-100: var(--onboard-primary-100); + --account-select-primary-200: var(--onboard-primary-200); + --account-select-primary-300: var(--onboard-primary-300); + --account-select-primary-500: var(--onboard-primary-500); + --account-select-primary-600: var(--onboard-primary-600); + + --account-select-gray-100: var(--onboard-gray-100); + --account-select-gray-200: var(--onboard-gray-200); + --account-select-gray-300: var(--onboard-gray-300); + --account-select-gray-500: var(--onboard-gray-500); + --account-select-gray-700: var(--onboard-gray-700); + + --account-select-danger-500: var(--onboard-danger-500); + --onboard-account-select-modal-z-index: 1301; } @@ -93,3 +104,8 @@ #kv_sdk_container + .ReactModalPortal > div { z-index: 1301 !important; } + +/* Ledger modal */ +.ledger-ck-modal > div#ModalWrapper { + z-index: 9999999 !important; +} diff --git a/yarn.lock b/yarn.lock index 70d68f81b0..468d89b239 100644 --- a/yarn.lock +++ b/yarn.lock @@ -996,7 +996,7 @@ core-js-pure "^3.25.1" regenerator-runtime "^0.13.11" -"@babel/runtime@7.20.6", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@7.20.6", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.20.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== @@ -1719,6 +1719,31 @@ dependencies: "@ethersproject/logger" "^5.7.0" +"@ethersproject/providers@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.0.tgz#bc2876a8fe5e0053ed9828b1f3767ae46e43758b" + integrity sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw== + dependencies: + "@ethersproject/abstract-provider" "^5.5.0" + "@ethersproject/abstract-signer" "^5.5.0" + "@ethersproject/address" "^5.5.0" + "@ethersproject/basex" "^5.5.0" + "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bytes" "^5.5.0" + "@ethersproject/constants" "^5.5.0" + "@ethersproject/hash" "^5.5.0" + "@ethersproject/logger" "^5.5.0" + "@ethersproject/networks" "^5.5.0" + "@ethersproject/properties" "^5.5.0" + "@ethersproject/random" "^5.5.0" + "@ethersproject/rlp" "^5.5.0" + "@ethersproject/sha2" "^5.5.0" + "@ethersproject/strings" "^5.5.0" + "@ethersproject/transactions" "^5.5.0" + "@ethersproject/web" "^5.5.0" + bech32 "1.1.4" + ws "7.4.6" + "@ethersproject/providers@5.5.2": version "5.5.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.2.tgz#131ccf52dc17afd0ab69ed444b8c0e3a27297d99" @@ -2406,6 +2431,31 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@json-rpc-tools/provider@^1.5.5": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/provider/-/provider-1.7.6.tgz#8a17c34c493fa892632e278fd9331104e8491ec6" + integrity sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA== + dependencies: + "@json-rpc-tools/utils" "^1.7.6" + axios "^0.21.0" + safe-json-utils "^1.1.1" + ws "^7.4.0" + +"@json-rpc-tools/types@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.7.6.tgz#5abd5fde01364a130c46093b501715bcce5bdc0e" + integrity sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ== + dependencies: + keyvaluestorage-interface "^1.0.0" + +"@json-rpc-tools/utils@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.7.6.tgz#67f04987dbaa2e7adb6adff1575367b75a9a9ba1" + integrity sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw== + dependencies: + "@json-rpc-tools/types" "^1.7.6" + "@pedrouid/environment" "^1.0.1" + "@keystonehq/base-eth-keyring@^0.6.4": version "0.6.4" resolved "https://registry.yarnpkg.com/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.6.4.tgz#16a8b280861a70d096444bbeba236c0001d709d9" @@ -2465,116 +2515,24 @@ rxjs "^6.6.3" typescript "^4.6.2" -"@ledgerhq/cryptoassets@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-7.0.0.tgz#9f700ef022e65c25b73377ac2513cd012e6aebfb" - integrity sha512-mjx5rcmYtZdgHGQlSy8KVKGUNWwmdFeFWDkyBluvXX9/lruuAXrUMai2eAz4EaZ2S48bPpxWpLKloEA1KEo4Yw== - dependencies: - invariant "2" - -"@ledgerhq/devices@^5.51.1": - version "5.51.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.51.1.tgz#d741a4a5d8f17c2f9d282fd27147e6fe1999edb7" - integrity sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA== - dependencies: - "@ledgerhq/errors" "^5.50.0" - "@ledgerhq/logs" "^5.50.0" - rxjs "6" - semver "^7.3.5" - -"@ledgerhq/devices@^7.0.5": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-7.0.5.tgz#2b3f69b84d4bccb2c4b1d34e534444da862f4880" - integrity sha512-2o2zD2Yv1Hgd3+R2aLCvlyT7NxBz2nltawTCPSXaf3+8MDIyZbiJlXi43hLEISRFBG3u3bYwAQuiOisimN9C6Q== - dependencies: - "@ledgerhq/errors" "^6.12.1" - "@ledgerhq/logs" "^6.10.1" - rxjs "6" - semver "^7.3.5" - -"@ledgerhq/errors@^5.34.0", "@ledgerhq/errors@^5.50.0": - version "5.50.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.50.0.tgz#e3a6834cb8c19346efca214c1af84ed28e69dad9" - integrity sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow== - -"@ledgerhq/errors@^6.12.1": - version "6.12.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.1.tgz#99ad10bd528942bdfde0ef3d4d0dce658f6f4405" - integrity sha512-2qeUSUCpQbMhV9eLJDLI8wycFwTcWszP8g3cJycBt9Jf1VczC5MRERwAQv5AYhPa4rcy+jLKBOVZYxc35r5l7g== +"@ledgerhq/connect-kit-loader@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/connect-kit-loader/-/connect-kit-loader-1.0.2.tgz#8554e16943f86cc2a5f6348a14dfe6e5bd0c572a" + integrity sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g== -"@ledgerhq/hw-app-eth@^6.19.0": - version "6.30.2" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-6.30.2.tgz#bcc43d2483dcd525701de3596e31a8497d7f6981" - integrity sha512-2Bs6aaeSiMvSGhGCepz4YwitlBMwSZPw+4SX62hrU3rTfMTALlI6yUnrn6M7Ld70Rbw9g1pLzY1heR5al6SVLQ== - dependencies: - "@ethersproject/abi" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ledgerhq/cryptoassets" "^7.0.0" - "@ledgerhq/errors" "^6.12.1" - "@ledgerhq/hw-transport" "^6.27.8" - "@ledgerhq/hw-transport-mocker" "^6.27.8" - "@ledgerhq/logs" "^6.10.1" - axios "^0.26.1" - bignumber.js "^9.1.0" - crypto-js "^4.1.1" - -"@ledgerhq/hw-transport-mocker@^6.27.8": - version "6.27.8" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.27.8.tgz#33a08d0853bd7972296770f9202e4f2ab893a6e8" - integrity sha512-I9/TMQK0+3rgvm5+AZVFFB84wyEREqVpVVmkwhuYZj084g0Z+WRINOlr1ep3d21E67li4tzxFtkG1dzfVPD45w== - dependencies: - "@ledgerhq/hw-transport" "^6.27.8" - "@ledgerhq/logs" "^6.10.1" - -"@ledgerhq/hw-transport-u2f@^5.36.0-deprecated": - version "5.36.0-deprecated" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.36.0-deprecated.tgz#66e3ed399a117a1c0110871a055dd54f5fe707fd" - integrity sha512-T/+mGHIiUK/ZQATad6DMDmobCMZ1mVST952009jKzhaE1Et2Uy2secU+QhRkx3BfEAkvwa0zSRSYCL9d20Iqjg== - dependencies: - "@ledgerhq/errors" "^5.34.0" - "@ledgerhq/hw-transport" "^5.34.0" - "@ledgerhq/logs" "^5.30.0" - u2f-api "0.2.7" - -"@ledgerhq/hw-transport-webusb@^6.19.0": - version "6.27.8" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.27.8.tgz#d7933cae3e63ee66c752e535eca7ef6e785583a3" - integrity sha512-WU0Vz0jbACDUd31knHp38b4EQk02Zs4G5UVaw2Q3j45ZQsABvSBNzEEjXELdZDNMirvSBxE/YTAg8MLO1SFIvA== - dependencies: - "@ledgerhq/devices" "^7.0.5" - "@ledgerhq/errors" "^6.12.1" - "@ledgerhq/hw-transport" "^6.27.8" - "@ledgerhq/logs" "^6.10.1" - -"@ledgerhq/hw-transport@^5.34.0": - version "5.51.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz#8dd14a8e58cbee4df0c29eaeef983a79f5f22578" - integrity sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw== - dependencies: - "@ledgerhq/devices" "^5.51.1" - "@ledgerhq/errors" "^5.50.0" - events "^3.3.0" +"@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz#64df34e2f12e68e78ac57e571d25ec07fa460ca9" + integrity sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ== -"@ledgerhq/hw-transport@^6.27.8": - version "6.27.8" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.27.8.tgz#57ece7e2b726216df698767de6828478fbe461e1" - integrity sha512-WSUgF1W3tAikSnAfeNAT2e2dgTdEQd5Vi/095C2mR5Fr0/POCSl9X4T9rlBhK5NSVD+nGXI0rN2ISj08zai8HQ== +"@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.1.tgz#0d958b6d479d0e3db5fc1132ecc4fa84be3f0b93" + integrity sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA== dependencies: - "@ledgerhq/devices" "^7.0.5" - "@ledgerhq/errors" "^6.12.1" - events "^3.3.0" - -"@ledgerhq/logs@^5.30.0", "@ledgerhq/logs@^5.50.0": - version "5.50.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186" - integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== + "@lit-labs/ssr-dom-shim" "^1.0.0" -"@ledgerhq/logs@^6.10.1": - version "6.10.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.1.tgz#5bd16082261d7364eabb511c788f00937dac588d" - integrity sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w== - -"@metamask/eth-sig-util@4.0.1", "@metamask/eth-sig-util@^4.0.0": +"@metamask/eth-sig-util@4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== @@ -2598,6 +2556,75 @@ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== +"@motionone/animation@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807" + integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ== + dependencies: + "@motionone/easing" "^10.15.1" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/dom@^10.16.2": + version "10.16.2" + resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.16.2.tgz#0c44df8ee3d1cfc50ee11d27050b27824355a61a" + integrity sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg== + dependencies: + "@motionone/animation" "^10.15.1" + "@motionone/generators" "^10.15.1" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + hey-listen "^1.0.8" + tslib "^2.3.1" + +"@motionone/easing@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693" + integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw== + dependencies: + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/generators@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c" + integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ== + dependencies: + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/svelte@^10.16.2": + version "10.16.2" + resolved "https://registry.yarnpkg.com/@motionone/svelte/-/svelte-10.16.2.tgz#0b37c3b12927814d31d24941d1ca0ff49981b444" + integrity sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q== + dependencies: + "@motionone/dom" "^10.16.2" + tslib "^2.3.1" + +"@motionone/types@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb" + integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA== + +"@motionone/utils@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438" + integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw== + dependencies: + "@motionone/types" "^10.15.1" + hey-listen "^1.0.8" + tslib "^2.3.1" + +"@motionone/vue@^10.16.2": + version "10.16.2" + resolved "https://registry.yarnpkg.com/@motionone/vue/-/vue-10.16.2.tgz#faf13afc27620a2df870c71c58a04ee8de8dea65" + integrity sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw== + dependencies: + "@motionone/dom" "^10.16.2" + tslib "^2.3.1" + "@mui/base@5.0.0-alpha.118": version "5.0.0-alpha.118" resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.118.tgz#335e7496ea605c9b7bda4164efb2da3f09f36dfc" @@ -2832,6 +2859,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== +"@noble/hashes@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" + integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== + "@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": version "1.6.3" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" @@ -2868,6 +2900,11 @@ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.1.tgz#afa804d2c68398704b0175acc94d91a54f203645" integrity sha512-aLDTLu/If1qYIFW5g4ZibuQaUsFGWQPBq1mZKp/txaebUnGHDmmiBhRLY1tDNedN0m+fJtKZ1zAODS9Yk+V6uA== +"@pedrouid/environment@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec" + integrity sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug== + "@pkgr/utils@^2.3.1": version "2.3.1" resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" @@ -2890,6 +2927,59 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + "@reduxjs/toolkit@^1.9.5": version "1.9.5" resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.5.tgz#d3987849c24189ca483baa7aa59386c8e52077c4" @@ -3118,7 +3208,7 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@sideway/formula@^3.0.0": +"@sideway/formula@^3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== @@ -3181,6 +3271,140 @@ rpc-websockets "^7.5.0" superstruct "^0.14.2" +"@stablelib/aead@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" + integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== + +"@stablelib/binary@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" + integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== + dependencies: + "@stablelib/int" "^1.0.1" + +"@stablelib/bytes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" + integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== + +"@stablelib/chacha20poly1305@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" + integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== + dependencies: + "@stablelib/aead" "^1.0.1" + "@stablelib/binary" "^1.0.1" + "@stablelib/chacha" "^1.0.1" + "@stablelib/constant-time" "^1.0.1" + "@stablelib/poly1305" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/chacha@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" + integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/constant-time@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" + integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== + +"@stablelib/ed25519@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" + integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== + dependencies: + "@stablelib/random" "^1.0.2" + "@stablelib/sha512" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hash@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" + integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== + +"@stablelib/hkdf@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" + integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g== + dependencies: + "@stablelib/hash" "^1.0.1" + "@stablelib/hmac" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hmac@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hmac/-/hmac-1.0.1.tgz#3d4c1b8cf194cb05d28155f0eed8a299620a07ec" + integrity sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/int@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" + integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== + +"@stablelib/keyagreement@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" + integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== + dependencies: + "@stablelib/bytes" "^1.0.1" + +"@stablelib/poly1305@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc" + integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" + integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha256@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" + integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha512@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f" + integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/wipe@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" + integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== + +"@stablelib/x25519@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" + integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== + dependencies: + "@stablelib/keyagreement" "^1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/wipe" "^1.0.1" + "@surma/rollup-plugin-off-main-thread@^2.2.3": version "2.2.3" resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" @@ -3374,6 +3598,131 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@trezor/analytics@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@trezor/analytics/-/analytics-1.0.2.tgz#c402665c505e58a067aca15cf6537d7a604f5a1b" + integrity sha512-9T+2j/X+TRrzrvHM0bNDS1mO/Rkq/6LGqtaTOC59PJtTOjDLGpP4fiKVCjLNtVg8qQBpXlBlqH89BCPV1q8ftQ== + dependencies: + "@trezor/utils" "9.0.8" + +"@trezor/blockchain-link-types@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@trezor/blockchain-link-types/-/blockchain-link-types-1.0.2.tgz#00e254acef04c7575e8d0efe2f05e17d1fb6ef52" + integrity sha512-ON3A2Anu5k3BkMFtG0LWO48ZxikyWgSORqQ12ki3KDbTbqZV5BwAZTeFchUq8cv1kDlqkG7AtMV2nY9G3KfYOA== + +"@trezor/blockchain-link-utils@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.0.3.tgz#e0fdc9ceb3b357a926f9c766fbea0b2f74886adb" + integrity sha512-/mti1QY8n053P11wQwnQyBAASS+nNVBKu2kSZo8KAESwdnFGcnZwH0okXHTlUQZFud5ppg9EYJk9mpk0jf91tQ== + dependencies: + "@trezor/utils" "9.0.8" + bignumber.js "^9.1.1" + +"@trezor/blockchain-link@2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@trezor/blockchain-link/-/blockchain-link-2.1.12.tgz#0f2253c917b4e998cc32c5e8c8ac33daf135f7f3" + integrity sha512-X5YHAI4w9XjuivNO2J30K9wyuiUH/p9DM2lrsjudJ3sImxA0EX9ypLIY67lVYSmUzutL64KGcbdWPgw7f0AtuA== + dependencies: + "@trezor/blockchain-link-types" "1.0.2" + "@trezor/blockchain-link-utils" "1.0.3" + "@trezor/utils" "9.0.8" + "@trezor/utxo-lib" "1.0.6" + "@types/web" "^0.0.99" + bignumber.js "^9.1.1" + events "^3.3.0" + ripple-lib "^1.10.1" + socks-proxy-agent "6.1.1" + ws "7.5.9" + +"@trezor/connect-analytics@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@trezor/connect-analytics/-/connect-analytics-1.0.1.tgz#bba82fd020ea4def94fe58fd8a352e1bca56137b" + integrity sha512-GZYplHNX6Ok7TOH6hMmclwAzTs8m7WDxyzwjImKumVGC0wCRK9gG0k62Pfo/LGjW5LC+hXzz9Mh1B61NveySig== + dependencies: + "@trezor/analytics" "1.0.2" + +"@trezor/connect-common@0.0.15": + version "0.0.15" + resolved "https://registry.yarnpkg.com/@trezor/connect-common/-/connect-common-0.0.15.tgz#c7c5985da6ed2a80b95c7b03e5eca4a26af8160e" + integrity sha512-dv+oBc1HhSvdd8+92999H72dkkuITSHPJSL1vhXvzVctlEBGvB87Y6dlEaMd+7JrLmsFBNo21gX+AU1Qc9kB7g== + dependencies: + "@trezor/env-utils" "1.0.1" + +"@trezor/connect-web@^9.0.8": + version "9.0.10" + resolved "https://registry.yarnpkg.com/@trezor/connect-web/-/connect-web-9.0.10.tgz#629742208f0e7cfc8210abf0d0e74a9d9b84615d" + integrity sha512-G7YZw5ERYVCgwIXBV3LgGTG4VtlLrcBJg8r5GY3eK4jBjU5YWRRg8eO+8yfAbym/u0HSCkfl4CUI5spBHrd8ag== + dependencies: + "@trezor/connect" "9.0.10" + "@trezor/utils" "9.0.8" + events "^3.3.0" + +"@trezor/connect@9.0.10": + version "9.0.10" + resolved "https://registry.yarnpkg.com/@trezor/connect/-/connect-9.0.10.tgz#223725c175b30c64ea8ad8be0f63cc933b0aae03" + integrity sha512-0QtbBotukjL9klPeetfnmg4cJbmfP/RXjqc5XGRhsvHlqxOIBD+un3NLAD5MCeiSetdF0BSf2aCrHod77SRUgg== + dependencies: + "@trezor/blockchain-link" "2.1.12" + "@trezor/connect-analytics" "1.0.1" + "@trezor/connect-common" "0.0.15" + "@trezor/transport" "1.1.11" + "@trezor/utils" "9.0.8" + "@trezor/utxo-lib" "1.0.6" + bignumber.js "^9.1.1" + blakejs "^1.2.1" + cross-fetch "^3.1.5" + events "^3.3.0" + randombytes "2.1.0" + tslib "2.5.0" + +"@trezor/env-utils@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@trezor/env-utils/-/env-utils-1.0.1.tgz#10e0c20a9e7d8aa3add726efacdc1cf716bfced7" + integrity sha512-ZGiGrJmWqqBz+WMU/Ry1tge93baqLsbu16vcweooYv/ZkJObqSy9VNkHd2601K2Mygbk7zv6YJOkHgNgu8CwJA== + dependencies: + ua-parser-js "^1.0.34" + +"@trezor/transport@1.1.11": + version "1.1.11" + resolved "https://registry.yarnpkg.com/@trezor/transport/-/transport-1.1.11.tgz#1d04dd0c30c6e96cc87d7701d74bf823520be8f2" + integrity sha512-KHWPAiODA92H7PW7s/za/NfPjoiYftu4V/5ZiKrrkhZmHjrXp7b/e0tHLOP/u1zukysJba8+enNKj0RvLoftAg== + dependencies: + "@trezor/utils" "9.0.8" + bytebuffer "^5.0.1" + json-stable-stringify "^1.0.2" + long "^4.0.0" + prettier "2.8.7" + protobufjs "6.11.3" + +"@trezor/utils@9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@trezor/utils/-/utils-9.0.8.tgz#0fe7fd954869c309c22662908077c4800467caa6" + integrity sha512-XsX+VXP2UxanYo+LbY7zcjeIumEWFs5lArTAfK1fdWTIdiV8Od2htNO+D9lnCytvuu04LeJx7RihxinsQQVDvA== + +"@trezor/utxo-lib@1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@trezor/utxo-lib/-/utxo-lib-1.0.6.tgz#22f4ce6b2af3bb9ef4fa2ccf3612a8f8e2d4baae" + integrity sha512-aozw+Xg/LABJxnsKCA/NNnahYETlF8fNGgdNQb04vTI3kUd2L9hD/oT1wCl7L65A3WmL/oh3twCzK07cJJOR2Q== + dependencies: + "@trezor/utils" "9.0.8" + bchaddrjs "^0.5.2" + bech32 "^2.0.0" + bip66 "^1.1.5" + bitcoin-ops "^1.4.1" + blake-hash "^2.0.0" + blakejs "^1.2.1" + bn.js "^5.2.1" + bs58 "^5.0.0" + bs58check "^3.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + int64-buffer "^1.0.1" + pushdata-bitcoin "^1.0.1" + tiny-secp256k1 "^1.1.6" + typeforce "^1.18.0" + varuint-bitcoin "^1.1.2" + wif "^2.0.6" + "@truffle/hdwallet-provider@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-2.1.4.tgz#e1a2d5ffc569c930a969aac928af27e256f55d80" @@ -3619,11 +3968,21 @@ dependencies: "@types/node" "*" +"@types/lodash@^4.14.136": + version "4.14.194" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" + integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== + "@types/lodash@^4.14.182": version "4.14.191" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + "@types/minimatch@*": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" @@ -3639,6 +3998,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== +"@types/node@>=13.7.0": + version "20.2.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.3.tgz#b31eb300610c3835ac008d690de6f87e28f9b878" + integrity sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw== + "@types/node@^12.12.54", "@types/node@^12.12.6": version "12.20.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" @@ -3841,7 +4205,12 @@ "@types/bn.js" "*" "@types/underscore" "*" -"@types/ws@^7.4.4": +"@types/web@^0.0.99": + version "0.0.99" + resolved "https://registry.yarnpkg.com/@types/web/-/web-0.0.99.tgz#a9c3a088e4634f6b08977f4fc733c916c2b0d50e" + integrity sha512-xMz3tOvtkZzc7RpQrDNiLe5sfMmP+fz8bOxHIZ/U8qXyvzDX4L4Ss1HCjor/O9DSelba+1iXK1VM7lruX28hiQ== + +"@types/ws@^7.2.0", "@types/ws@^7.4.4": version "7.4.7" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== @@ -3961,7 +4330,7 @@ "@walletconnect/window-metadata" "1.0.0" detect-browser "5.2.0" -"@walletconnect/client@^1.7.1": +"@walletconnect/client@^1.7.1", "@walletconnect/client@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.8.0.tgz#6f46b5499c7c861c651ff1ebe5da5b66225ca696" integrity sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ== @@ -3971,6 +4340,28 @@ "@walletconnect/types" "^1.8.0" "@walletconnect/utils" "^1.8.0" +"@walletconnect/core@2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.8.0.tgz#f694e1562413c4eb700f6b3a83fa7964342100c0" + integrity sha512-pl7x4sq1nuU0ixA9wF2ecjDecUzIauKr7ZwC29rs9qTcmDpxgJbbOdZwaSl+dJlf1bHC87adVLf5KAkwwo9PzQ== + dependencies: + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/jsonrpc-ws-connection" "^1.0.11" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/relay-auth" "^1.0.4" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.8.0" + "@walletconnect/utils" "2.8.0" + events "^3.3.0" + lodash.isequal "4.5.0" + uint8arrays "^3.1.0" + "@walletconnect/core@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.8.0.tgz#6b2748b90c999d9d6a70e52e26a8d5e8bfeaa81e" @@ -4008,6 +4399,38 @@ dependencies: tslib "1.14.1" +"@walletconnect/ethereum-provider@2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.8.0.tgz#15e9efa37b7c2455cd30c883f5698c89e481b163" + integrity sha512-nVVJtZUpoeurFjoEPYlrUHkT3YleCpEC9YAMKJyEIB3MZZInttcGxGyi0vwFQ+trCfuX8RrdKUPQ952NvxvCvw== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.7" + "@walletconnect/jsonrpc-provider" "^1.0.13" + "@walletconnect/jsonrpc-types" "^1.0.3" + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/sign-client" "2.8.0" + "@walletconnect/types" "2.8.0" + "@walletconnect/universal-provider" "2.8.0" + "@walletconnect/utils" "2.8.0" + events "^3.3.0" + +"@walletconnect/events@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" + integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== + dependencies: + keyvaluestorage-interface "^1.0.0" + tslib "1.14.1" + +"@walletconnect/heartbeat@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9" + integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/time" "^1.0.2" + tslib "1.14.1" + "@walletconnect/iso-crypto@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz#44ddf337c4f02837c062dbe33fa7ab36789df451" @@ -4017,6 +4440,33 @@ "@walletconnect/types" "^1.8.0" "@walletconnect/utils" "^1.8.0" +"@walletconnect/jsonrpc-http-connection@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz#a6973569b8854c22da707a759d241e4f5c2d5a98" + integrity sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.1" + cross-fetch "^3.1.4" + tslib "1.14.1" + +"@walletconnect/jsonrpc-provider@1.0.13", "@walletconnect/jsonrpc-provider@^1.0.13": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz#9a74da648d015e1fffc745f0c7d629457f53648b" + integrity sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/safe-json" "^1.0.2" + tslib "1.14.1" + +"@walletconnect/jsonrpc-types@1.0.3", "@walletconnect/jsonrpc-types@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c" + integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw== + dependencies: + keyvaluestorage-interface "^1.0.0" + tslib "1.14.1" + "@walletconnect/jsonrpc-types@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.2.tgz#b79519f679cd6a5fa4a1bea888f27c1916689a20" @@ -4025,6 +4475,15 @@ keyvaluestorage-interface "^1.0.0" tslib "1.14.1" +"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" + integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== + dependencies: + "@walletconnect/environment" "^1.0.1" + "@walletconnect/jsonrpc-types" "^1.0.3" + tslib "1.14.1" + "@walletconnect/jsonrpc-utils@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.4.tgz#2009ba3907b02516f2caacd2fb871ff0d472b2cb" @@ -4034,12 +4493,47 @@ "@walletconnect/jsonrpc-types" "^1.0.2" tslib "1.14.1" +"@walletconnect/jsonrpc-ws-connection@^1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.11.tgz#1ce59d86f273d576ca73385961303ebd44dd923f" + integrity sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + tslib "1.14.1" + ws "^7.5.1" + +"@walletconnect/keyvaluestorage@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz#92f5ca0f54c1a88a093778842ce0c874d86369c8" + integrity sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ== + dependencies: + safe-json-utils "^1.1.1" + tslib "1.14.1" + +"@walletconnect/logger@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.0.1.tgz#7f489b96e9a1ff6bf3e58f0fbd6d69718bf844a8" + integrity sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ== + dependencies: + pino "7.11.0" + tslib "1.14.1" + "@walletconnect/mobile-registry@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== -"@walletconnect/qrcode-modal@^1.7.1": +"@walletconnect/modal@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.4.3.tgz#e213f2129415a059763e1f3d51da3c90eb39498b" + integrity sha512-YcvkfBN7qBdZk0juUxnbPsyA9n0v15PK+7vL55u1v1mgMhPosvUU2dMIcPqlan+TgSPByo7moEBbHtCbYZpLVw== + dependencies: + "@web3modal/core" "2.4.3" + "@web3modal/ui" "2.4.3" + +"@walletconnect/qrcode-modal@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz#ddd6f5c9b7ee52c16adf9aacec2a3eac4994caea" integrity sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg== @@ -4061,11 +4555,53 @@ randombytes "^2.1.0" tslib "1.14.1" +"@walletconnect/relay-api@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" + integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.2" + tslib "1.14.1" + +"@walletconnect/relay-auth@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" + integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== + dependencies: + "@stablelib/ed25519" "^1.0.2" + "@stablelib/random" "^1.0.1" + "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/time" "^1.0.2" + tslib "1.14.1" + uint8arrays "^3.0.0" + "@walletconnect/safe-json@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.0.tgz#12eeb11d43795199c045fafde97e3c91646683b2" integrity sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg== +"@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" + integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== + dependencies: + tslib "1.14.1" + +"@walletconnect/sign-client@2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.8.0.tgz#735dc8bf120242584fb2ff22c6a3d672c1fae1a1" + integrity sha512-+l9qwvVeUGk0fBQsgx6yb6hdGYt8uQ3a9jR9GgsJvm8FjFh1oUzTKqFnG7XdhCBnzFnbSoLr41Xe8PbN8qoUSw== + dependencies: + "@walletconnect/core" "2.8.0" + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.8.0" + "@walletconnect/utils" "2.8.0" + events "^3.3.0" + "@walletconnect/socket-transport@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz#9a1128a249628a0be11a0979b522fe82b44afa1b" @@ -4075,11 +4611,66 @@ "@walletconnect/utils" "^1.8.0" ws "7.5.3" +"@walletconnect/time@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" + integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== + dependencies: + tslib "1.14.1" + +"@walletconnect/types@2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.8.0.tgz#f8a5f09ee2b31abed231966e7e1eebd22be058a2" + integrity sha512-FMeGK3lGXFDwcs5duoN74xL1aLrkgYqnavWE0DnFPt2i1QmSUITU9c8f88EDh8uPXANd2WIYOItm0DVCNxLGGA== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + events "^3.3.0" + "@walletconnect/types@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.8.0.tgz#3f5e85b2d6b149337f727ab8a71b8471d8d9a195" integrity sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg== +"@walletconnect/universal-provider@2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.8.0.tgz#134f6873742f672c2424969335f9cc75d1532d17" + integrity sha512-BMsGiINI3rT7DRyDJM7miuWG6vDVE0PV6zMcCXIMDYYPay7zFvJxv2VHEx9an4MutrvQR76NTRyG//i1K84VOQ== + dependencies: + "@walletconnect/jsonrpc-http-connection" "^1.0.7" + "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/sign-client" "2.8.0" + "@walletconnect/types" "2.8.0" + "@walletconnect/utils" "2.8.0" + eip1193-provider "1.0.1" + events "^3.3.0" + +"@walletconnect/utils@2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.8.0.tgz#c219e78fd2c35062cf3e37f84961afde8da9b9a1" + integrity sha512-Q8OwMtUevIn1+64LXyTMLlhH58k3UOAjU5b3smYZ7CEEmwEGpOTfTDAWrB3v+ZDIhjyqP94+8fuvKIbcVLKLWA== + dependencies: + "@stablelib/chacha20poly1305" "1.0.1" + "@stablelib/hkdf" "1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/sha256" "1.0.1" + "@stablelib/x25519" "^1.0.3" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.8.0" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" + detect-browser "5.3.0" + query-string "7.1.3" + uint8arrays "^3.1.0" + "@walletconnect/utils@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.8.0.tgz#2591a197c1fa7429941fe428876088fda6632060" @@ -4098,7 +4689,7 @@ resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.0.tgz#1053224f77e725dfd611c83931b5f6c98c32bfc8" integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== -"@walletconnect/window-getters@^1.0.0": +"@walletconnect/window-getters@^1.0.0", "@walletconnect/window-getters@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== @@ -4112,124 +4703,147 @@ dependencies: "@walletconnect/window-getters" "^1.0.0" -"@web3-onboard/coinbase@^2.1.3": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/coinbase/-/coinbase-2.2.0.tgz#1421dd04a43a9cb2a813bc2f77baa18ba8dac282" - integrity sha512-hS392D008HpWWZx5Tgc/xJm6JJOurKn8yXALlgU22o3N26hbAUcA9wfkEeo78Sj0xFdyjFzCRZ/JqXolK61tKA== +"@walletconnect/window-metadata@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" + integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== + dependencies: + "@walletconnect/window-getters" "^1.0.1" + tslib "1.14.1" + +"@web3-onboard/coinbase@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@web3-onboard/coinbase/-/coinbase-2.2.4.tgz#7e7f82e631816ab7ddcab8d94df6d1513baada50" + integrity sha512-XnQejTC51ZqYm4sT+RH3tr1yWcbuZXTWXRZeIHEWiJchVBE4K9goPxhB03PX8ZQ9TDt/bUTEkl7Qfyp6bhKTKw== dependencies: "@coinbase/wallet-sdk" "^3.6.0" - "@web3-onboard/common" "^2.2.3" + "@web3-onboard/common" "^2.3.3" -"@web3-onboard/common@^2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.2.3.tgz#fc0841186d84cf017f4cf0368dcd349e6ed8dc8b" - integrity sha512-ZI0XuCpxtuL9XGgeWglXR6rhgLP261EMEstjonxy8ptuOKLlTJcgvL7wSx2MjNDO3i/qmb/PGQpInvxYx5klSA== +"@web3-onboard/common@^2.3.3": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.3.3.tgz#02096e967dbed272c0637cda955902b96a0fce06" + integrity sha512-Ytppszqe77VY8WglRdr/Lfx+HmcZ2hXQEkBA23JaVYmzKvP/mC6j+sjGUD8CgXDpRRxyKoiRj6nz95GRABie6Q== dependencies: bignumber.js "^9.1.0" ethers "5.5.4" - joi "^17.6.1" + joi "17.9.1" -"@web3-onboard/core@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.8.5.tgz#1a53da35620f8519af0eacda017385c67a69c5b9" - integrity sha512-MxyhA4E8uivWUxh+HHIuFEeQ8YhAesvD08cCD1NExrTgLogyLovvnuFuE7zwMJaEF7s2U33s1O31kBoy1We95A== +"@web3-onboard/core@2.20.1": + version "2.20.1" + resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.1.tgz#ad3a15aa6c1083d6da83fd9d06d5fe250e750b5a" + integrity sha512-OlNQUYBsbvy389AQD5VggqCRGvmiE7/w0LeLt6yyUwAksGnRPSpLjiPaOOjMAJFq0d3TnSX5yXbAoG1SRJM7ww== dependencies: - "@web3-onboard/common" "^2.2.3" + "@web3-onboard/common" "^2.3.3" bignumber.js "^9.0.0" - bnc-sdk "^4.4.1" + bnc-sdk "^4.6.7" bowser "^2.11.0" ethers "5.5.3" eventemitter3 "^4.0.7" - joi "^17.6.1" + joi "17.9.1" lodash.merge "^4.6.2" lodash.partition "^4.6.0" nanoid "^4.0.0" - rxjs "^7.5.2" + rxjs "^7.5.5" svelte "^3.49.0" svelte-i18n "^3.3.13" -"@web3-onboard/hw-common@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@web3-onboard/hw-common/-/hw-common-2.0.4.tgz#2767ecf5726a67e604f472675b310892dd3b642e" - integrity sha512-2q3hpaY4jlFDQjs+IVVW58/GrhmA50tnRZ4Uyy4ceUReyYJ9dtB3//E21GTJmOLCuirM6jsJa43wvSLMwyPHng== +"@web3-onboard/hw-common@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@web3-onboard/hw-common/-/hw-common-2.3.0.tgz#715d35c4039515e3f8ec839643e6d4c49097891f" + integrity sha512-ai5gwaXHxMOgov+TKuy2yUtBf7b2Vq8c28L9tSx4Hl8Q2IM6boGZQEqfW6Hw0GHu/Ez+MxRR5+M6nfwFBf8JRw== dependencies: "@ethereumjs/common" "2.6.2" - "@web3-onboard/common" "^2.2.3" + "@web3-onboard/common" "^2.3.3" ethers "5.5.4" - joi "^17.6.1" + joi "17.9.1" rxjs "^7.5.2" -"@web3-onboard/injected-wallets@^2.3.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/injected-wallets/-/injected-wallets-2.4.0.tgz#84e48830605f899601aadc3bc7c79d1ed5787534" - integrity sha512-v27NdfD5vemPTNhqk+7gpMYXuTDsHTSPWWdJt6ybJoks6GlRSgF1fnCkmERNzo3+9S97fEKrzHrlSkpsFgn2Mw== +"@web3-onboard/injected-wallets@^2.10.0": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@web3-onboard/injected-wallets/-/injected-wallets-2.10.0.tgz#c33ed40efd8bc615fb205bd537b23c0c17b84e7f" + integrity sha512-I/14Z511Oft1UTx/ZezT/UC2LqUBH3mMN1kABcxCy4t3zx4Yfh6LMEBmR2XWBoxSvz9iaLIQz4egH+u9mdz0sg== dependencies: - "@web3-onboard/common" "^2.2.3" - joi "^17.6.1" + "@web3-onboard/common" "^2.3.3" + joi "17.9.1" lodash.uniqby "^4.7.0" -"@web3-onboard/keystone@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@web3-onboard/keystone/-/keystone-2.3.2.tgz#451844dd7f4c10619c1dc8c74485d17f5b5b1896" - integrity sha512-AJiAvxzj7GM7iBPEpww3vNIpuZULUjfAQ87svslABCoWKJRo44qggql6Cxrd+Qc/Djw5TpKA23USh6qH3SUc3w== +"@web3-onboard/keystone@^2.3.7": + version "2.3.7" + resolved "https://registry.yarnpkg.com/@web3-onboard/keystone/-/keystone-2.3.7.tgz#e8355a9ffcaa36baf8033a10010b86aa8ebb4d06" + integrity sha512-9KdRQJ3htg9uSF3t8o2a5T32aQ+J2VA0mKYaXns2ZgsSznd4WqvQFuyrQi015b0rn6zkXM3BKFcMhu0OJtRwHw== dependencies: "@ethereumjs/tx" "^3.4.0" "@ethersproject/providers" "^5.5.0" "@keystonehq/eth-keyring" "^0.14.00.3" - "@web3-onboard/common" "^2.2.3" - "@web3-onboard/hw-common" "^2.0.4" + "@web3-onboard/common" "^2.3.3" + "@web3-onboard/hw-common" "^2.3.0" -"@web3-onboard/ledger@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@web3-onboard/ledger/-/ledger-2.3.2.tgz#aaa436393d8ffdc156fd318154df5e61361d54bb" - integrity sha512-0KLXmnXNs6iTZEhBdGDgg+L5t8rOTroZjYu8l3Qebd02hNBIeaNxgCXIOQ1Y97qvcQz/8rb6oZ1wMp7unmSA1g== +"@web3-onboard/ledger@^2.4.6": + version "2.4.6" + resolved "https://registry.yarnpkg.com/@web3-onboard/ledger/-/ledger-2.4.6.tgz#1e92c2a5b59920f9ee70294314854dcea905e18d" + integrity sha512-TuWtZvhaxRXNKHRoqryt6cFRVpmVo3z4Zvos4+FS1/ZaNB5aBgZAH3MGWZhX0OFAKRki8JyOWVFJNdM7yUO4pA== dependencies: - "@ethereumjs/tx" "^3.4.0" "@ethersproject/providers" "^5.5.0" - "@ledgerhq/hw-app-eth" "^6.19.0" - "@ledgerhq/hw-transport-u2f" "^5.36.0-deprecated" - "@ledgerhq/hw-transport-webusb" "^6.19.0" - "@metamask/eth-sig-util" "^4.0.0" - "@web3-onboard/common" "^2.2.3" - "@web3-onboard/hw-common" "^2.0.4" - buffer "^6.0.3" - ethereumjs-util "^7.1.3" + "@ledgerhq/connect-kit-loader" "^1.0.2" + "@walletconnect/client" "^1.7.1" + "@web3-onboard/common" "^2.3.3" + rxjs "^7.5.2" -"@web3-onboard/tallyho@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@web3-onboard/tallyho/-/tallyho-2.0.1.tgz#0d5987377436a0c7c249e90e9664e0c53d2b4641" - integrity sha512-JgntTyJvFSk0MOJjZauL5sqSG9e3ENURN7I/H+3GCMIkEGJChsVHaZZcy7D6zFNgwUreztv8tg7DSoal//iizg== +"@web3-onboard/taho@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@web3-onboard/taho/-/taho-2.0.4.tgz#5566531c666c62dba2b95ba1a7c269702ab8c169" + integrity sha512-1cObIJEJZSg9o/SdsNqZP3V9t8/KJ+ZcTuQgc1quExWbUpWMafE7ASusyOU5jsy3gKo4+xI147MAw4AjRJUXiw== dependencies: - "@web3-onboard/common" "^2.2.3" + "@web3-onboard/common" "^2.3.3" tallyho-detect-provider "^1.0.0" tallyho-onboarding "^1.0.2" -"@web3-onboard/trezor@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@web3-onboard/trezor/-/trezor-2.3.2.tgz#18f8caa86ee15b9abea4844e256092d30493bf72" - integrity sha512-HlBMsnZ066xnvuse5UcvlGa6J6Gh/in8y2vxbt4e5mWLyQa5fk3XFAePk9rLkzFjeJWYk9STnThrLi6lfPVYPw== +"@web3-onboard/trezor@^2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@web3-onboard/trezor/-/trezor-2.4.2.tgz#49a485467d970ae872288c07eccb7adf18782622" + integrity sha512-XMi5xn41HhMKnZhPj9n+5WScEsgHRzXz/XYKMbKJRfndVgHgbo/kO3DxL9fwfdUoW/mewRfO5wiN1hf7qyN2VQ== dependencies: "@ethereumjs/tx" "^3.4.0" "@ethersproject/providers" "^5.5.0" - "@web3-onboard/common" "^2.2.3" - "@web3-onboard/hw-common" "^2.0.4" + "@trezor/connect-web" "^9.0.8" + "@web3-onboard/common" "^2.3.3" + "@web3-onboard/hw-common" "^2.3.0" buffer "^6.0.3" eth-crypto "^2.1.0" ethereumjs-util "^7.1.3" hdkey "^2.0.1" - trezor-connect "^8.2.11" -"@web3-onboard/walletconnect@^2.1.3": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@web3-onboard/walletconnect/-/walletconnect-2.2.2.tgz#202b700ee606d0a9055d4a716dba7b04e18da0f0" - integrity sha512-JIxjlUy3C0bbY76JQ50uwBLMtWRKXaxMDoeEcJQAnYcHMb+ba6B40qSv2BlJpAAEI7NGW52GHSdwUT0QOrM7Ng== - dependencies: - "@ethersproject/providers" "^5.5.0" - "@walletconnect/client" "^1.7.1" - "@walletconnect/qrcode-modal" "^1.7.1" - "@web3-onboard/common" "^2.2.3" +"@web3-onboard/walletconnect@^2.3.9": + version "2.3.9" + resolved "https://registry.yarnpkg.com/@web3-onboard/walletconnect/-/walletconnect-2.3.9.tgz#a569db39db61c927fee70744c5fcf015dad47042" + integrity sha512-0n1UesJLNNU33j/I0X4QHVL8AhFb6Oyo/ZU3EEYeDBev2Cis1A6Bvl38BfmeBBMdBOZBxeTOC2kNeRjvvvpzhA== + dependencies: + "@ethersproject/providers" "5.5.0" + "@walletconnect/client" "^1.8.0" + "@walletconnect/ethereum-provider" "2.8.0" + "@walletconnect/modal" "2.4.3" + "@walletconnect/qrcode-modal" "^1.8.0" + "@web3-onboard/common" "^2.3.3" rxjs "^7.5.2" +"@web3modal/core@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-2.4.3.tgz#ea6d3911e52a132c70defb7584f869d09a8af974" + integrity sha512-7Z/sDe9RIYQ2k9ITcxgEa/u7FvlI76vcVVZn9UY4ISivefqrH4JAS3GX4JmVNUUlovwuiZdyqBv4llAQOMK6Rg== + dependencies: + buffer "6.0.3" + valtio "1.10.5" + +"@web3modal/ui@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-2.4.3.tgz#986c6bed528dccab679c734ff531e42f6605c5b2" + integrity sha512-J989p8CdtEhI9gZHf/rZ/WFqYlrAHWw9GmAhFoiNODwjAp0BoG/uoaPiijJMchXdngihZOjLGCQwDXU16DHiKg== + dependencies: + "@web3modal/core" "2.4.3" + lit "2.7.5" + motion "10.16.2" + qrcode "1.5.3" + JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -4318,7 +4932,7 @@ aes-js@^3.1.2: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== -agent-base@6: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -4615,6 +5229,11 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + attr-accept@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" @@ -4640,12 +5259,12 @@ axe-core@^4.4.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.1.tgz#79cccdee3e3ab61a8f42c458d4123a6768e6fbce" integrity sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w== -axios@^0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" - integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== +axios@^0.21.0: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: - follow-redirects "^1.14.8" + follow-redirects "^1.14.0" axobject-query@^2.2.0: version "2.2.0" @@ -4767,18 +5386,33 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2, base-x@^3.0.8: +base-x@^3.0.2, base-x@^3.0.8, base-x@^3.0.9: version "3.0.9" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== dependencies: safe-buffer "^5.0.1" -base64-js@^1.3.1: +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +bchaddrjs@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/bchaddrjs/-/bchaddrjs-0.5.2.tgz#1f52b5077329774e7c82d4882964628106bb11a0" + integrity sha512-OO7gIn3m7ea4FVx4cT8gdlWQR2+++EquhdpWQJH9BQjK63tJJ6ngB3QMZDO6DiBoXiIGUsTPHjlrHVxPGcGxLQ== + dependencies: + bs58check "2.1.2" + buffer "^6.0.3" + cashaddrjs "0.4.4" + stream-browserify "^3.0.0" + bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -4791,6 +5425,21 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +bech32@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" + integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== + +big-integer@1.6.36: + version "1.6.36" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" + integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== + +big-integer@^1.6.48: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -4808,7 +5457,7 @@ bignumber.js@7.2.1: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== -bignumber.js@^9.0.0, bignumber.js@^9.0.1, bignumber.js@^9.1.0: +bignumber.js@^9.0.0, bignumber.js@^9.0.1, bignumber.js@^9.1.0, bignumber.js@^9.1.1: version "9.1.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== @@ -4837,7 +5486,21 @@ bip66@^1.1.5: dependencies: safe-buffer "^5.0.1" -blakejs@^1.1.0: +bitcoin-ops@^1.3.0, bitcoin-ops@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz#e45de620398e22fd4ca6023de43974ff42240278" + integrity sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow== + +blake-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/blake-hash/-/blake-hash-2.0.0.tgz#af184dce641951126d05b7d1c3de3224f538d66e" + integrity sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w== + dependencies: + node-addon-api "^3.0.0" + node-gyp-build "^4.2.2" + readable-stream "^3.6.0" + +blakejs@^1.1.0, blakejs@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== @@ -4872,10 +5535,10 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -bnc-sdk@^4.4.1: - version "4.6.3" - resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.6.3.tgz#c852f091a5e84bb77864543b0775b35ebdbb1724" - integrity sha512-rva+LyJuAm+U6xwZYqlsDxKaMy3EpHBqkOL93UDih7iwXDYnUr87n27pnGCw3B8xRBeRhCBC/VZMuzRFeea/Hw== +bnc-sdk@^4.6.7: + version "4.6.7" + resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.6.7.tgz#138a22e04c95c2c697fb836092358d21957e2114" + integrity sha512-jIQ6cmeRBgvH/YDLuYRr2+kxDGcAAi0SOvjlO5nQ5cWdbslw+ASWftd1HmxiVLNCiwEH5bSc/t8a0agZ5njTUQ== dependencies: crypto-es "^1.2.2" nanoid "^3.3.1" @@ -4941,7 +5604,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: +brorand@^1.0.1, brorand@^1.0.5, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== @@ -5022,7 +5685,14 @@ bs58@^4.0.0, bs58@^4.0.1: dependencies: base-x "^3.0.2" -bs58check@^2.1.2: +bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +bs58check@2.1.2, bs58check@<3.0.0, bs58check@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== @@ -5031,6 +5701,14 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" +bs58check@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" + integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== + dependencies: + "@noble/hashes" "^1.2.0" + bs58 "^5.0.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -5086,6 +5764,14 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== +buffer@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + buffer@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.1.tgz#3cbea8c1463e5a0779e30b66d4c88c6ffa182ac2" @@ -5094,6 +5780,14 @@ buffer@6.0.1: base64-js "^1.3.1" ieee754 "^1.2.1" +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + buffer@^5.0.5, buffer@^5.1.0, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -5102,14 +5796,6 @@ buffer@^5.0.5, buffer@^5.1.0, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: base64-js "^1.3.1" ieee754 "^1.1.13" -buffer@^6.0.3, buffer@~6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - bufferutil@^4.0.1: version "4.0.7" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" @@ -5122,6 +5808,13 @@ builtin-modules@^3.1.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== +bytebuffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ== + dependencies: + long "~3" + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -5188,6 +5881,13 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +cashaddrjs@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cashaddrjs/-/cashaddrjs-0.4.4.tgz#169f1ae620d325db77700273d972282adeeee331" + integrity sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA== + dependencies: + big-integer "1.6.36" + cbor-sync@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/cbor-sync/-/cbor-sync-1.0.4.tgz#5a11a1ab75c2a14d1af1b237fd84aa8c1593662f" @@ -5350,6 +6050,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -5693,11 +6402,6 @@ crypto-es@^1.2.2: resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== -crypto-js@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" - integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== - crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -5884,12 +6588,12 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decimal.js@^10.3.1: +decimal.js@^10.2.0, decimal.js@^10.3.1: version "10.4.3" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== -decode-uri-component@^0.2.0: +decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== @@ -6025,6 +6729,11 @@ detect-browser@5.2.0: resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.0.tgz#c9cd5afa96a6a19fda0bbe9e9be48a6b6e1e9c97" integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== +detect-browser@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -6161,6 +6870,16 @@ duplexer@^0.1.2: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +duplexify@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.0" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -6186,6 +6905,13 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +eip1193-provider@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/eip1193-provider/-/eip1193-provider-1.0.1.tgz#420d29cf4f6c443e3f32e718fb16fafb250637c3" + integrity sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g== + dependencies: + "@json-rpc-tools/provider" "^1.5.5" + ejs@^3.1.6: version "3.1.8" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" @@ -6236,12 +6962,17 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== +encode-utf8@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== + 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== -end-of-stream@^1.1.0: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -7363,6 +8094,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-redact@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.2.0.tgz#b1e2d39bc731376d28bde844454fa23e26919987" + integrity sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw== + fast-safe-stringify@^2.0.6: version "2.1.1" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" @@ -7434,6 +8170,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -7504,7 +8245,7 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -follow-redirects@^1.14.8: +follow-redirects@^1.14.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -7946,6 +8687,11 @@ hdkey@^2.0.1: safe-buffer "^5.1.1" secp256k1 "^4.0.0" +hey-listen@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" + integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -8105,7 +8851,7 @@ idna-uts46-hx@^2.3.1: dependencies: punycode "2.1.0" -ieee754@^1.1.13, ieee754@^1.2.1: +ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -8179,6 +8925,11 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== +int64-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-1.0.1.tgz#c78d841b444cadf036cd04f8683696c740f15dca" + integrity sha512-+3azY4pXrjAupJHU1V9uGERWlhoqNswJNji6aD/02xac7oxol508AsMC5lxKhEqyZeDFy3enq5OGWXF4u75hiw== + internal-slot@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.4.tgz#8551e7baf74a7a6ba5f749cfb16aa60722f0d6f3" @@ -8198,12 +8949,10 @@ intl-messageformat@^9.13.0: "@formatjs/icu-messageformat-parser" "2.1.0" tslib "^2.1.0" -invariant@2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== ipaddr.js@1.9.1: version "1.9.1" @@ -9047,15 +9796,15 @@ jest@^28.1.2: import-local "^3.0.2" jest-cli "^28.1.3" -joi@^17.6.1: - version "17.7.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.7.0.tgz#591a33b1fe1aca2bc27f290bcad9b9c1c570a6b3" - integrity sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg== +joi@17.9.1: + version "17.9.1" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.1.tgz#74899b9fa3646904afa984a11df648eca66c9018" + integrity sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.0" + "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" js-cookie@^3.0.1: @@ -9202,7 +9951,7 @@ json-stable-stringify-without-jsonify@^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== -json-stable-stringify@^1.0.1: +json-stable-stringify@^1.0.1, json-stable-stringify@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== @@ -9257,6 +10006,11 @@ jsonpointer@^5.0.0: resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== +jsonschema@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.2.tgz#83ab9c63d65bf4d596f91d81195e78772f6452bc" + integrity sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA== + jsprim@^1.2.2: version "1.4.2" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" @@ -9445,6 +10199,31 @@ listr2@^3.8.3: through "^2.3.8" wrap-ansi "^7.0.0" +lit-element@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.2.tgz#9913bf220b85065f0e5f1bb8878cc44f36b50cfa" + integrity sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ== + dependencies: + "@lit-labs/ssr-dom-shim" "^1.1.0" + "@lit/reactive-element" "^1.3.0" + lit-html "^2.7.0" + +lit-html@^2.7.0: + version "2.7.4" + resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.7.4.tgz#6d75001977c206683685b9d76594a516afda2954" + integrity sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g== + dependencies: + "@types/trusted-types" "^2.0.2" + +lit@2.7.5: + version "2.7.5" + resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.5.tgz#60bc82990cfad169d42cd786999356dcf79b035f" + integrity sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ== + dependencies: + "@lit/reactive-element" "^1.6.0" + lit-element "^3.3.0" + lit-html "^2.7.0" + loader-utils@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" @@ -9491,6 +10270,11 @@ lodash.defaults@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== +lodash.isequal@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -9516,7 +10300,7 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -9539,6 +10323,16 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -9829,6 +10623,18 @@ mock-fs@^4.1.0: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== +motion@10.16.2: + version "10.16.2" + resolved "https://registry.yarnpkg.com/motion/-/motion-10.16.2.tgz#7dc173c6ad62210a7e9916caeeaf22c51e598d21" + integrity sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ== + dependencies: + "@motionone/animation" "^10.15.1" + "@motionone/dom" "^10.16.2" + "@motionone/svelte" "^10.16.2" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + "@motionone/vue" "^10.16.2" + mri@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" @@ -9885,6 +10691,11 @@ multicodec@^1.0.0: buffer "^5.6.0" varint "^5.0.0" +multiformats@^9.4.2: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + multihashes@^0.4.15, multihashes@~0.4.15: version "0.4.21" resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" @@ -9907,7 +10718,7 @@ nan@2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== -nan@^2.14.0: +nan@^2.13.2, nan@^2.14.0: version "2.17.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== @@ -9999,6 +10810,11 @@ node-addon-api@^2.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== +node-addon-api@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + node-fetch@2, node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -10011,6 +10827,11 @@ node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== +node-gyp-build@^4.2.2: + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -10143,6 +10964,11 @@ oboe@2.1.5: dependencies: http-https "^1.0.0" +on-exit-leak-free@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" + integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== + on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -10435,6 +11261,36 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== +pino-abstract-transport@v0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" + integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== + dependencies: + duplexify "^4.1.2" + split2 "^4.0.0" + +pino-std-serializers@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" + integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== + +pino@7.11.0: + version "7.11.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6" + integrity sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.0.0" + on-exit-leak-free "^0.2.0" + pino-abstract-transport v0.5.0 + pino-std-serializers "^4.0.0" + process-warning "^1.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.1.0" + safe-stable-stringify "^2.1.0" + sonic-boom "^2.2.1" + thread-stream "^0.15.1" + pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" @@ -10452,6 +11308,11 @@ pngjs@^3.3.0: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + pnglib@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/pnglib/-/pnglib-0.0.1.tgz#f9ab6f9c688f4a9d579ad8be28878a716e30c096" @@ -10553,6 +11414,11 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" +prettier@2.8.7: + version "2.8.7" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" + integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== + prettier@^2.3.1, prettier@^2.7.0: version "2.8.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" @@ -10596,6 +11462,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process-warning@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" + integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== + process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -10626,6 +11497,25 @@ prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +protobufjs@6.11.3: + version "6.11.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" + integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -10634,6 +11524,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-compare@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" + integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== + proxy-from-env@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" @@ -10684,6 +11579,13 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pushdata-bitcoin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz#15931d3cd967ade52206f523aa7331aef7d43af7" + integrity sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ== + dependencies: + bitcoin-ops "^1.3.0" + qr.js@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f" @@ -10716,6 +11618,16 @@ qrcode@1.4.4: pngjs "^3.3.0" yargs "^13.2.4" +qrcode@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" + integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== + dependencies: + dijkstrajs "^1.0.1" + encode-utf8 "^1.0.3" + pngjs "^5.0.0" + yargs "^15.3.1" + qs@6.11.0, qs@^6.10.3: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -10737,6 +11649,16 @@ query-string@6.13.5: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +query-string@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -10756,12 +11678,17 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + quick-lru@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@2.1.0, randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -10936,6 +11863,15 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.1.1: + 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" + readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" @@ -10962,6 +11898,11 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +real-require@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" + integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -11209,6 +12150,62 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +ripple-address-codec@^4.1.1, ripple-address-codec@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/ripple-address-codec/-/ripple-address-codec-4.2.5.tgz#9d31b2066abd4cf1a135cd865b4e8e63269701e7" + integrity sha512-SZ96zZH+0REeyEcYVFl0vqcsGRXiFXS2RUgHupHhtVkOEk6men53vngVjJwBrSnY+oa6Cri15q1zSni3DEoxNw== + dependencies: + base-x "^3.0.9" + create-hash "^1.1.2" + +ripple-binary-codec@^1.1.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/ripple-binary-codec/-/ripple-binary-codec-1.4.3.tgz#4737044f2aa5da496c1d57619339f26df01cd494" + integrity sha512-P4ALjAJWBJpRApTQO+dJCrHE6mZxm7ypZot9OS0a3RCKOWTReNw0pDWfdhCGh1qXh71TeQnAk4CHdMLwR/76oQ== + dependencies: + assert "^2.0.0" + big-integer "^1.6.48" + buffer "5.6.0" + create-hash "^1.2.0" + decimal.js "^10.2.0" + ripple-address-codec "^4.2.5" + +ripple-keypairs@^1.0.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ripple-keypairs/-/ripple-keypairs-1.1.5.tgz#eabfc371f2ef293fdc462664e18cbba32c4f5c7e" + integrity sha512-wLJXIBsMVazn2Yp/7oP4PvgA4Gd1HtuZLftdEJFNOLgraf82phqa2AnNK3t9f3XeQnApW1jAe/FcFFOY6QUn5w== + dependencies: + bn.js "^5.1.1" + brorand "^1.0.5" + elliptic "^6.5.4" + hash.js "^1.0.3" + ripple-address-codec "^4.2.5" + +ripple-lib-transactionparser@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/ripple-lib-transactionparser/-/ripple-lib-transactionparser-0.8.2.tgz#7aaad3ba1e1aeee1d5bcff32334a7a838f834dce" + integrity sha512-1teosQLjYHLyOQrKUQfYyMjDR3MAq/Ga+MJuLUfpBMypl4LZB4bEoMcmG99/+WVTEiZOezJmH9iCSvm/MyxD+g== + dependencies: + bignumber.js "^9.0.0" + lodash "^4.17.15" + +ripple-lib@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/ripple-lib/-/ripple-lib-1.10.1.tgz#9c353702792b25465cdb269265d6f5bb27b1471b" + integrity sha512-OQk+Syl2JfxKxV2KuF/kBMtnh012I5tNnziP3G4WDGCGSIAgeqkOgkR59IQ0YDNrs1YW8GbApxrdMSRi/QClcA== + dependencies: + "@types/lodash" "^4.14.136" + "@types/ws" "^7.2.0" + bignumber.js "^9.0.0" + https-proxy-agent "^5.0.0" + jsonschema "1.2.2" + lodash "^4.17.4" + ripple-address-codec "^4.1.1" + ripple-binary-codec "^1.1.3" + ripple-keypairs "^1.0.3" + ripple-lib-transactionparser "0.8.2" + ws "^7.2.0" + rlp@^2.0.0, rlp@^2.2.3, rlp@^2.2.4: version "2.2.7" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" @@ -11265,7 +12262,7 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rxjs@6, rxjs@^6.6.3: +rxjs@^6.6.3: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== @@ -11279,6 +12276,13 @@ rxjs@^7.5.1, rxjs@^7.5.2: dependencies: tslib "^2.1.0" +rxjs@^7.5.5: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + sade@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" @@ -11303,6 +12307,11 @@ safe-event-emitter@^1.0.1: dependencies: events "^3.0.0" +safe-json-utils@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1" + integrity sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ== + safe-regex-test@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" @@ -11312,6 +12321,11 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" +safe-stable-stringify@^2.1.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -11607,6 +12621,35 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" + integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== + dependencies: + agent-base "^6.0.2" + debug "^4.3.1" + socks "^2.6.1" + +socks@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + +sonic-boom@^2.2.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" + integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg== + dependencies: + atomic-sleep "^1.0.0" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -11673,6 +12716,11 @@ split-on-first@^1.0.0: resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -11718,6 +12766,11 @@ stream-browserify@^3.0.0: inherits "~2.0.4" readable-stream "^3.5.0" +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -12107,6 +13160,13 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +thread-stream@^0.15.1: + version "0.15.2" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.2.tgz#fb95ad87d2f1e28f07116eb23d85aba3bc0425f4" + integrity sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA== + dependencies: + real-require "^0.1.0" + throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" @@ -12154,6 +13214,17 @@ tiny-glob@^0.2.9: globalyzer "0.1.0" globrex "^0.1.2" +tiny-secp256k1@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" + integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== + dependencies: + bindings "^1.3.0" + bn.js "^4.11.8" + create-hmac "^1.1.7" + elliptic "^6.4.0" + nan "^2.13.2" + tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -12230,15 +13301,6 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -trezor-connect@^8.2.11: - version "8.2.12" - resolved "https://registry.yarnpkg.com/trezor-connect/-/trezor-connect-8.2.12.tgz#f042a9ec001148f5198c59c51943c9a94ed604c1" - integrity sha512-rk6Qeu53H8+7rgt4kCbNNZqCGURvTe/Tfy38MZHiLkYbeg22XIkCbdJ1JW7CpCUpCWLfg4pRZXEGYoHc3CPpeg== - dependencies: - "@babel/runtime" "^7.15.4" - cross-fetch "^3.1.5" - events "^3.3.0" - "true-myth@^4.1.0": version "4.1.1" resolved "https://registry.yarnpkg.com/true-myth/-/true-myth-4.1.1.tgz#ff4ac9d5130276e34aa338757e2416ec19248ba2" @@ -12322,11 +13384,21 @@ tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== +tslib@^2.3.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" + integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -12436,6 +13508,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +typeforce@^1.18.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== + typescript-plugin-css-modules@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/typescript-plugin-css-modules/-/typescript-plugin-css-modules-4.2.2.tgz#b612eb7ad58579d9c5c5b4e64eb26e4968826417" @@ -12472,10 +13549,17 @@ typical@^5.2.0: resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== -u2f-api@0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" - integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== +ua-parser-js@^1.0.34: + version "1.0.35" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.35.tgz#c4ef44343bc3db0a3cbefdf21822f1b1fc1ab011" + integrity sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA== + +uint8arrays@^3.0.0, uint8arrays@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" ultron@~1.1.0: version "1.1.1" @@ -12585,7 +13669,7 @@ use-sync-external-store@1.1.0: resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz#3343c3fe7f7e404db70f8c687adf5c1652d34e82" integrity sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ== -use-sync-external-store@^1.0.0: +use-sync-external-store@1.2.0, use-sync-external-store@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== @@ -12652,11 +13736,26 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" +valtio@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.10.5.tgz#7852125e3b774b522827d96bd9c76d285c518678" + integrity sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ== + dependencies: + proxy-compare "2.5.1" + use-sync-external-store "1.2.0" + varint@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== +varuint-bitcoin@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -13129,6 +14228,13 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wif@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" + integrity sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ== + dependencies: + bs58check "<3.0.0" + word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -13361,6 +14467,11 @@ ws@7.5.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== +ws@7.5.9, ws@^7.2.0, ws@^7.3.1, ws@^7.4.0, ws@^7.4.5, ws@^7.5.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -13377,11 +14488,6 @@ ws@^5.1.1: dependencies: async-limiter "~1.0.0" -ws@^7.3.1, ws@^7.4.5: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - ws@^8.2.3, ws@^8.5.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" @@ -13482,6 +14588,14 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" @@ -13503,6 +14617,23 @@ yargs@^13.2.4: y18n "^4.0.0" yargs-parser "^13.1.2" +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yargs@^17.3.1: version "17.6.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" From b590b47a501ba08190680c6c1f0f7b724df3f488 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 20 Jun 2023 07:52:25 +0200 Subject: [PATCH 319/422] chore(deps-dev): bump @openzeppelin/contracts from 4.9.1 to 4.9.2 (#2128) Bumps [@openzeppelin/contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) from 4.9.1 to 4.9.2. - [Release notes](https://github.com/OpenZeppelin/openzeppelin-contracts/releases) - [Changelog](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.9.2/CHANGELOG.md) - [Commits](https://github.com/OpenZeppelin/openzeppelin-contracts/compare/v4.9.1...v4.9.2) --- updated-dependencies: - dependency-name: "@openzeppelin/contracts" dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6e86051c1b..fca4ec0e5f 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ }, "devDependencies": { "@next/bundle-analyzer": "^13.1.1", - "@openzeppelin/contracts": "^4.9.1", + "@openzeppelin/contracts": "^4.9.2", "@safe-global/safe-core-sdk-types": "^1.9.1", "@sentry/types": "^7.28.1", "@svgr/webpack": "^6.3.1", diff --git a/yarn.lock b/yarn.lock index 468d89b239..68daaacaa0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2895,10 +2895,10 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@openzeppelin/contracts@^4.9.1": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.1.tgz#afa804d2c68398704b0175acc94d91a54f203645" - integrity sha512-aLDTLu/If1qYIFW5g4ZibuQaUsFGWQPBq1mZKp/txaebUnGHDmmiBhRLY1tDNedN0m+fJtKZ1zAODS9Yk+V6uA== +"@openzeppelin/contracts@^4.9.2": + version "4.9.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.2.tgz#1cb2d5e4d3360141a17dbc45094a8cad6aac16c1" + integrity sha512-mO+y6JaqXjWeMh9glYVzVu8HYPGknAAnWyxTRhGeckOruyXQMNnlcW6w/Dx9ftLeIQk6N+ZJFuVmTwF7lEIFrg== "@pedrouid/environment@^1.0.1": version "1.0.1" From e492a32fd999dfbc28f6e2a444a3ac1b51ca84d4 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Tue, 20 Jun 2023 09:53:50 +0200 Subject: [PATCH 320/422] fix: show messages tab if chain supports EIP-1271 (#2129) --- src/components/transactions/TxNavigation/index.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/components/transactions/TxNavigation/index.tsx b/src/components/transactions/TxNavigation/index.tsx index 66c8afb85b..d17a07b2e4 100644 --- a/src/components/transactions/TxNavigation/index.tsx +++ b/src/components/transactions/TxNavigation/index.tsx @@ -2,18 +2,14 @@ import NavTabs from '@/components/common/NavTabs' import { transactionNavItems } from '@/components/sidebar/SidebarNavigation/config' import { AppRoutes } from '@/config/routes' import { useCurrentChain } from '@/hooks/useChains' -import useSafeMessages from '@/hooks/messages/useSafeMessages' import { hasFeature, FEATURES } from '@/utils/chains' const TxNavigation = () => { const chain = useCurrentChain() - const { page } = useSafeMessages() const isEIP1271 = chain && hasFeature(chain, FEATURES.EIP1271) - const hasMessages = page && page.results.length > 0 - const showMessages = isEIP1271 && hasMessages - const navItems = showMessages + const navItems = isEIP1271 ? transactionNavItems : transactionNavItems.filter((item) => item.href !== AppRoutes.transactions.messages) From 151651dd9e33c4f2f045fb4baf451f370c7d8368 Mon Sep 17 00:00:00 2001 From: katspaugh Date: Tue, 20 Jun 2023 10:19:45 +0200 Subject: [PATCH 321/422] Chore: update caniuse --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 68daaacaa0..20dce18921 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5872,9 +5872,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001400: - version "1.0.30001439" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz#ab7371faeb4adff4b74dad1718a6fd122e45d9cb" - integrity sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A== + version "1.0.30001505" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001505.tgz" + integrity sha512-jaAOR5zVtxHfL0NjZyflVTtXm3D3J9P15zSJ7HmQF8dSKGA6tqzQq+0ZI3xkjyQj46I4/M0K2GbMpcAFOcbr3A== caseless@~0.12.0: version "0.12.0" From 30e035547cdf37e2171b239c0d9824c69289fc79 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Tue, 20 Jun 2023 15:57:31 +0200 Subject: [PATCH 322/422] Chore: fix tx builder unit tests (#2135) --- src/tests/pages/apps-share.test.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/tests/pages/apps-share.test.tsx b/src/tests/pages/apps-share.test.tsx index 119013a185..915261b68c 100644 --- a/src/tests/pages/apps-share.test.tsx +++ b/src/tests/pages/apps-share.test.tsx @@ -8,6 +8,7 @@ import crypto from 'crypto' import type { EIP1193Provider } from '@web3-onboard/core' const FETCH_TIMEOUT = 5000 +const TX_BUILDER = 'https://apps-portal.safe.global/tx-builder' describe('Share Safe App Page', () => { beforeEach(() => { @@ -19,7 +20,7 @@ describe('Share Safe App Page', () => { render(, { routerProps: { query: { - appUrl: 'https://apps.gnosis-safe.io/tx-builder/', + appUrl: TX_BUILDER, chain: 'eth', }, }, @@ -38,7 +39,7 @@ describe('Share Safe App Page', () => { expect( screen.getByText('Compose custom contract interactions and batch them into a single transaction'), ).toBeInTheDocument() - expect(screen.getByText('https://apps.gnosis-safe.io/tx-builder')).toBeInTheDocument() + expect(screen.getByText(TX_BUILDER)).toBeInTheDocument() }, { timeout: FETCH_TIMEOUT }, ) @@ -48,7 +49,7 @@ describe('Share Safe App Page', () => { render(, { routerProps: { query: { - appUrl: 'https://apps.gnosis-safe.io/tx-builder/', + appUrl: TX_BUILDER, chain: 'eth', }, }, @@ -73,7 +74,7 @@ describe('Share Safe App Page', () => { render(, { routerProps: { query: { - appUrl: 'https://apps.gnosis-safe.io/tx-builder/', + appUrl: TX_BUILDER, chain: 'eth', }, }, @@ -145,7 +146,7 @@ describe('Share Safe App Page', () => { render(, { routerProps: { query: { - appUrl: 'https://apps.gnosis-safe.io/tx-builder/', + appUrl: TX_BUILDER, chain: 'eth', }, }, From 1862bb00ba8156a55baea82134c01e28c2d64246 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Tue, 20 Jun 2023 17:30:55 +0200 Subject: [PATCH 323/422] feat: add WalletConnect v2 wallet module (#2095) * chore: upgrade onboard * fix: logo, remove TODO + error expection * fix: update packages + logo dimensions * feat: add WalletConnect v2 wallet module * fix: invert wallet labels * fix: required chains + filter invalid addresses * fix: revert filtering of empty addresses * fix: use only current chain as requiredChain * fix: alter argument name * fix: patch `@web3-onboard/walletconnect` payload * fix: regen `yarn.lock` --------- Co-authored-by: katspaugh Co-authored-by: schmanu --- .env.example | 1 + .github/workflows/build/action.yml | 3 +- README.md | 42 ++++----- package.json | 5 +- .../@web3-onboard+walletconnect+2.3.9.patch | 14 +++ src/config/constants.ts | 1 + src/hooks/wallets/consts.ts | 2 + src/hooks/wallets/useOnboard.ts | 16 ++-- src/hooks/wallets/wallets.ts | 55 +++++++++--- src/services/onboard.ts | 8 +- yarn.lock | 89 +++++++++++++++++-- 11 files changed, 186 insertions(+), 50 deletions(-) create mode 100644 patches/@web3-onboard+walletconnect+2.3.9.patch diff --git a/.env.example b/.env.example index 31349d07bc..712dd0c709 100644 --- a/.env.example +++ b/.env.example @@ -23,6 +23,7 @@ NEXT_PUBLIC_BEAMER_ID= # Wallet-specific variables NEXT_PUBLIC_WC_BRIDGE= +NEXT_PUBLIC_WC_PROJECT_ID= # E2E tests NEXT_PUBLIC_CYPRESS_MNEMONIC= diff --git a/.github/workflows/build/action.yml b/.github/workflows/build/action.yml index 04738f84a9..43cf072e1f 100644 --- a/.github/workflows/build/action.yml +++ b/.github/workflows/build/action.yml @@ -37,7 +37,8 @@ runs: NEXT_PUBLIC_TENDERLY_PROJECT_NAME: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_TENDERLY_PROJECT_NAME }} NEXT_PUBLIC_TENDERLY_SIMULATE_ENDPOINT_URL: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_TENDERLY_SIMULATE_ENDPOINT_URL }} NEXT_PUBLIC_WC_BRIDGE: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_WC_BRIDGE }} + NEXT_PUBLIC_WC_PROJECT_ID: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_WC_PROJECT_ID }} NEXT_PUBLIC_CYPRESS_MNEMONIC: ${{ inputs.e2e_mnemonic }} NEXT_PUBLIC_SAFE_RELAY_SERVICE_URL_PRODUCTION: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_PRODUCTION }} NEXT_PUBLIC_SAFE_RELAY_SERVICE_URL_STAGING: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING }} - NEXT_PUBLIC_IS_OFFICIAL_HOST : ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_IS_OFFICIAL_HOST }} + NEXT_PUBLIC_IS_OFFICIAL_HOST: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_IS_OFFICIAL_HOST }} diff --git a/README.md b/README.md index 42f5fea718..dbead0c151 100644 --- a/README.md +++ b/README.md @@ -19,26 +19,27 @@ Create a `.env` file with environment variables. You can use the `.env.example` Here's the list of all the required and optional variables: -| Env variable | | Description | -| ------------------------------------------------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------- | -| `NEXT_PUBLIC_INFURA_TOKEN` | **required** | [Infura](https://docs.infura.io/infura/networks/ethereum/how-to/secure-a-project/project-id) RPC API token | -| `NEXT_PUBLIC_SAFE_APPS_INFURA_TOKEN` | optional | Infura token for Safe Apps, falls back to `NEXT_PUBLIC_INFURA_TOKEN` | -| `NEXT_PUBLIC_IS_PRODUCTION` | optional | Set to `true` to build a minified production app | -| `NEXT_PUBLIC_GATEWAY_URL_PRODUCTION` | optional | The base URL for the [Safe Client Gateway](https://github.com/safe-global/safe-client-gateway) | -| `NEXT_PUBLIC_GATEWAY_URL_STAGING` | optional | The base CGW URL on staging | -| `NEXT_PUBLIC_SAFE_VERSION` | optional | The latest version of the Safe contract, defaults to 1.3.0 | | -| `NEXT_PUBLIC_WC_BRIDGE` | optional | [WalletConnect](https://docs.walletconnect.com/1.0/bridge-server) bridge URL, falls back to the public WC bridge | -| `NEXT_PUBLIC_TENDERLY_ORG_NAME` | optional | [Tenderly](https://tenderly.co) org name for Transaction Simulation | -| `NEXT_PUBLIC_TENDERLY_PROJECT_NAME` | optional | Tenderly project name | -| `NEXT_PUBLIC_TENDERLY_SIMULATE_ENDPOINT_URL` | optional | Tenderly simulation URL | -| `NEXT_PUBLIC_BEAMER_ID` | optional | [Beamer](https://www.getbeamer.com) is a news feed for in-app announcements | -| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID` | optional | [GTM](https://tagmanager.google.com) project id | -| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_DEVELOPMENT_AUTH` | optional | Dev GTM key | -| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_LATEST_AUTH` | optional | Preview GTM key | -| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_LIVE_AUTH` | optional | Production GTM key | -| `NEXT_PUBLIC_SENTRY_DSN` | optional | [Sentry](https://sentry.io) id for tracking runtime errors | -| `NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_PRODUCTION` | optional | [Safe Gelato Relay Service](https://github.com/safe-global/safe-gelato-relay-service) URL to allow relaying transactions via Gelato | -| `NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING` | optional | Relay URL on staging | +| Env variable | | Description | +| ------------------------------------------------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | +| `NEXT_PUBLIC_INFURA_TOKEN` | **required** | [Infura](https://docs.infura.io/infura/networks/ethereum/how-to/secure-a-project/project-id) RPC API token | +| `NEXT_PUBLIC_SAFE_APPS_INFURA_TOKEN` | optional | Infura token for Safe Apps, falls back to `NEXT_PUBLIC_INFURA_TOKEN` | +| `NEXT_PUBLIC_IS_PRODUCTION` | optional | Set to `true` to build a minified production app | +| `NEXT_PUBLIC_GATEWAY_URL_PRODUCTION` | optional | The base URL for the [Safe Client Gateway](https://github.com/safe-global/safe-client-gateway) | +| `NEXT_PUBLIC_GATEWAY_URL_STAGING` | optional | The base CGW URL on staging | +| `NEXT_PUBLIC_SAFE_VERSION` | optional | The latest version of the Safe contract, defaults to 1.3.0 | | +| `NEXT_PUBLIC_WC_BRIDGE` | optional | [WalletConnect v1](https://docs.walletconnect.com/1.0/bridge-server) bridge URL, falls back to the public WC bridge | +| `NEXT_PUBLIC_WC_PROJECT_ID` | optional | [WalletConnect v2](https://docs.walletconnect.com/2.0/cloud/relay) project ID | +| `NEXT_PUBLIC_TENDERLY_ORG_NAME` | optional | [Tenderly](https://tenderly.co) org name for Transaction Simulation | +| `NEXT_PUBLIC_TENDERLY_PROJECT_NAME` | optional | Tenderly project name | +| `NEXT_PUBLIC_TENDERLY_SIMULATE_ENDPOINT_URL` | optional | Tenderly simulation URL | +| `NEXT_PUBLIC_BEAMER_ID` | optional | [Beamer](https://www.getbeamer.com) is a news feed for in-app announcements | +| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID` | optional | [GTM](https://tagmanager.google.com) project id | +| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_DEVELOPMENT_AUTH` | optional | Dev GTM key | +| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_LATEST_AUTH` | optional | Preview GTM key | +| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_LIVE_AUTH` | optional | Production GTM key | +| `NEXT_PUBLIC_SENTRY_DSN` | optional | [Sentry](https://sentry.io) id for tracking runtime errors | +| `NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_PRODUCTION` | optional | [Safe Gelato Relay Service](https://github.com/safe-global/safe-gelato-relay-service) URL to allow relaying transactions via Gelato | +| `NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING` | optional | Relay URL on staging | | `NEXT_PUBLIC_IS_OFFICIAL_HOST` | optional | Whether it's the official distribution of the app, or a fork; has legal implications. Set to true only if you also update the legal pages like Imprint and Terms of use | If you don't provide some of the optional vars, the corresponding features will be disabled in the UI. @@ -123,4 +124,3 @@ This app is built using the following frameworks: - MUI - ethers.js - web3-onboard - diff --git a/package.json b/package.json index fca4ec0e5f..39b1931626 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "routes": "node scripts/generate-routes.js > src/config/routes.ts && prettier -w src/config/routes.ts && cat src/config/routes.ts", "css-vars": "ts-node-esm ./scripts/css-vars.ts > ./src/styles/vars.css && prettier -w src/styles/vars.css", "generate-types": "typechain --target ethers-v5 --out-dir src/types/contracts ./node_modules/@safe-global/safe-deployments/dist/assets/**/*.json ./node_modules/@safe-global/safe-modules-deployments/dist/assets/**/*.json ./node_modules/@openzeppelin/contracts/build/contracts/ERC20.json", - "postinstall": "yarn generate-types && yarn css-vars", + "postinstall": "yarn patch-package && yarn generate-types && yarn css-vars", "analyze": "cross-env ANALYZE=true yarn build", "cypress:open": "cross-env TZ=UTC cypress open --e2e", "cypress:canary": "cross-env TZ=UTC cypress open --e2e -b chrome:canary", @@ -60,7 +60,7 @@ "@web3-onboard/ledger": "^2.4.6", "@web3-onboard/taho": "^2.0.4", "@web3-onboard/trezor": "^2.4.2", - "@web3-onboard/walletconnect": "^2.3.9", + "@web3-onboard/walletconnect": "2.3.9", "classnames": "^2.3.1", "date-fns": "^2.29.2", "ethereum-blockies-base64": "^1.0.2", @@ -115,6 +115,7 @@ "eslint-plugin-unused-imports": "^2.0.0", "jest": "^28.1.2", "jest-environment-jsdom": "^28.1.2", + "patch-package": "^7.0.0", "pre-commit": "^1.2.2", "prettier": "^2.7.0", "ts-node": "^10.8.2", diff --git a/patches/@web3-onboard+walletconnect+2.3.9.patch b/patches/@web3-onboard+walletconnect+2.3.9.patch new file mode 100644 index 0000000000..9012fa49f5 --- /dev/null +++ b/patches/@web3-onboard+walletconnect+2.3.9.patch @@ -0,0 +1,14 @@ +diff --git a/node_modules/@web3-onboard/walletconnect/dist/v2.js b/node_modules/@web3-onboard/walletconnect/dist/v2.js +index 867c4cd..439b599 100644 +--- a/node_modules/@web3-onboard/walletconnect/dist/v2.js ++++ b/node_modules/@web3-onboard/walletconnect/dist/v2.js +@@ -77,7 +77,8 @@ function walletConnect(options) { + fromEvent(this.connector, 'accountsChanged', payload => payload) + .pipe(takeUntil(this.disconnected$)) + .subscribe({ +- next: accounts => { ++ next: payload => { ++ const accounts = Array.isArray(payload) ? payload : [payload] + this.emit('accountsChanged', accounts); + }, + error: console.warn diff --git a/src/config/constants.ts b/src/config/constants.ts index 042938498b..aebb3569b5 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -19,6 +19,7 @@ export const BEAMER_ID = process.env.NEXT_PUBLIC_BEAMER_ID || '' // Wallets export const WC_BRIDGE = process.env.NEXT_PUBLIC_WC_BRIDGE || 'https://bridge.walletconnect.org' +export const WC_PROJECT_ID = process.env.NEXT_PUBLIC_WC_PROJECT_ID || '' export const TREZOR_APP_URL = 'app.safe.global' export const TREZOR_EMAIL = 'support@safe.global' diff --git a/src/hooks/wallets/consts.ts b/src/hooks/wallets/consts.ts index 042a656fa4..8150309c3e 100644 --- a/src/hooks/wallets/consts.ts +++ b/src/hooks/wallets/consts.ts @@ -6,6 +6,7 @@ export const enum WALLET_KEYS { PAIRING = 'PAIRING', TREZOR = 'TREZOR', WALLETCONNECT = 'WALLETCONNECT', + WALLETCONNECT_V2 = 'WALLETCONNECT_V2', TAHO = 'TAHO', } @@ -17,5 +18,6 @@ export const CGW_NAMES: { [key in WALLET_KEYS]: string | undefined } = { [WALLET_KEYS.PAIRING]: 'safeMobile', [WALLET_KEYS.TREZOR]: 'trezor', [WALLET_KEYS.WALLETCONNECT]: 'walletConnect', + [WALLET_KEYS.WALLETCONNECT_V2]: 'walletConnect_v2', [WALLET_KEYS.TAHO]: 'tally', } diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index 3c2ce2a62a..dfee65672a 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -30,10 +30,14 @@ export const forgetLastWallet = () => { const { getStore, setStore, useStore } = new ExternalStore() -export const initOnboard = async (chainConfigs: ChainInfo[], rpcConfig: EnvState['rpc'] | undefined) => { +export const initOnboard = async ( + chainConfigs: ChainInfo[], + currentChain: ChainInfo, + rpcConfig: EnvState['rpc'] | undefined, +) => { const { createOnboard } = await import('@/services/onboard') if (!getStore()) { - setStore(createOnboard(chainConfigs, rpcConfig)) + setStore(createOnboard(chainConfigs, currentChain, rpcConfig)) } } @@ -44,7 +48,7 @@ export const getConnectedWallet = (wallets: WalletState[]): ConnectedWallet | nu const primaryWallet = wallets[0] if (!primaryWallet) return null - const account = primaryWallet?.accounts[0] + const account = primaryWallet.accounts[0] if (!account) return null try { @@ -159,10 +163,10 @@ export const useInitOnboard = () => { useInitPairing() useEffect(() => { - if (configs.length > 0) { - void initOnboard(configs, customRpc) + if (configs.length > 0 && chain) { + void initOnboard(configs, chain, customRpc) } - }, [configs, customRpc]) + }, [configs, chain, customRpc]) // Disable unsupported wallets on the current chain useEffect(() => { diff --git a/src/hooks/wallets/wallets.ts b/src/hooks/wallets/wallets.ts index 8768bf6b9b..77d4f3f1da 100644 --- a/src/hooks/wallets/wallets.ts +++ b/src/hooks/wallets/wallets.ts @@ -1,5 +1,5 @@ -import { CYPRESS_MNEMONIC, TREZOR_APP_URL, TREZOR_EMAIL, WC_BRIDGE } from '@/config/constants' -import { type RecommendedInjectedWallets, type WalletInit } from '@web3-onboard/common/dist/types.d' +import { CYPRESS_MNEMONIC, TREZOR_APP_URL, TREZOR_EMAIL, WC_BRIDGE, WC_PROJECT_ID } from '@/config/constants' +import type { RecommendedInjectedWallets, WalletInit, WalletModule } from '@web3-onboard/common/dist/types.d' import type { ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' import coinbaseModule from '@web3-onboard/coinbase' @@ -14,20 +14,49 @@ import pairingModule from '@/services/pairing/module' import e2eWalletModule from '@/tests/e2e-wallet' import { CGW_NAMES, WALLET_KEYS } from './consts' -const WALLET_MODULES: { [key in WALLET_KEYS]: () => WalletInit } = { - [WALLET_KEYS.INJECTED]: injectedWalletModule, - [WALLET_KEYS.PAIRING]: pairingModule, - [WALLET_KEYS.WALLETCONNECT]: () => walletConnect({ version: 1, bridge: WC_BRIDGE }), - [WALLET_KEYS.LEDGER]: ledgerModule, +// We need to modify the module name as onboard dedupes modules with the same label and the WC v1 and v2 modules have the same +// @see https://github.com/blocknative/web3-onboard/blob/d399e0b76daf7b363d6a74b100b2c96ccb14536c/packages/core/src/store/actions.ts#L419 +// TODO: When removing this, also remove the associated CSS in `onboard.css` +const walletConnectV1 = (): WalletInit => { + return (helpers) => { + const MODULE_LABEL = 'WalletConnect v1' + + const walletConnectModule = walletConnect({ version: 1, bridge: WC_BRIDGE })(helpers) as WalletModule + + walletConnectModule.label = MODULE_LABEL + + return walletConnectModule + } +} + +const walletConnectV2 = (chain: ChainInfo): WalletInit => { + return walletConnect({ + version: 2, + projectId: WC_PROJECT_ID, + qrModalOptions: { + themeVariables: { + '--w3m-z-index': '1302', + }, + }, + requiredChains: [parseInt(chain.chainId)], + }) +} + +const WALLET_MODULES: { [key in WALLET_KEYS]: (chain: ChainInfo) => WalletInit } = { + [WALLET_KEYS.INJECTED]: () => injectedWalletModule(), + [WALLET_KEYS.PAIRING]: () => pairingModule(), + [WALLET_KEYS.WALLETCONNECT]: () => walletConnectV1(), + [WALLET_KEYS.WALLETCONNECT_V2]: (chain) => walletConnectV2(chain), + [WALLET_KEYS.LEDGER]: () => ledgerModule(), [WALLET_KEYS.TREZOR]: () => trezorModule({ appUrl: TREZOR_APP_URL, email: TREZOR_EMAIL }), - [WALLET_KEYS.KEYSTONE]: keystoneModule, - [WALLET_KEYS.TAHO]: tahoModule, + [WALLET_KEYS.KEYSTONE]: () => keystoneModule(), + [WALLET_KEYS.TAHO]: () => tahoModule(), [WALLET_KEYS.COINBASE]: () => coinbaseModule({ darkMode: !!window?.matchMedia('(prefers-color-scheme: dark)')?.matches }), } -export const getAllWallets = (): WalletInit[] => { - return Object.values(WALLET_MODULES).map((module) => module()) +export const getAllWallets = (chain: ChainInfo): WalletInit[] => { + return Object.values(WALLET_MODULES).map((module) => module(chain)) } export const getRecommendedInjectedWallets = (): RecommendedInjectedWallets[] => { @@ -46,8 +75,8 @@ export const getSupportedWallets = (chain: ChainInfo): WalletInit[] => { const enabledWallets = Object.entries(WALLET_MODULES).filter(([key]) => isWalletSupported(chain.disabledWallets, key)) if (enabledWallets.length === 0) { - return [WALLET_MODULES.INJECTED()] + return [WALLET_MODULES.INJECTED(chain)] } - return enabledWallets.map(([, module]) => module()) + return enabledWallets.map(([, module]) => module(chain)) } diff --git a/src/services/onboard.ts b/src/services/onboard.ts index 650aa4af1e..3907765e99 100644 --- a/src/services/onboard.ts +++ b/src/services/onboard.ts @@ -15,10 +15,14 @@ export type ConnectedWallet = { let onboard: OnboardAPI | null = null -export const createOnboard = (chainConfigs: ChainInfo[], rpcConfig: EnvState['rpc'] | undefined): OnboardAPI => { +export const createOnboard = ( + chainConfigs: ChainInfo[], + currentChain: ChainInfo, + rpcConfig: EnvState['rpc'] | undefined, +): OnboardAPI => { if (onboard) return onboard - const wallets = getAllWallets() + const wallets = getAllWallets(currentChain) const chains = chainConfigs.map((cfg) => ({ id: hexValue(parseInt(cfg.chainId)), diff --git a/yarn.lock b/yarn.lock index 20dce18921..e06b21a6bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4813,7 +4813,7 @@ ethereumjs-util "^7.1.3" hdkey "^2.0.1" -"@web3-onboard/walletconnect@^2.3.9": +"@web3-onboard/walletconnect@2.3.9": version "2.3.9" resolved "https://registry.yarnpkg.com/@web3-onboard/walletconnect/-/walletconnect-2.3.9.tgz#a569db39db61c927fee70744c5fcf015dad47042" integrity sha512-0n1UesJLNNU33j/I0X4QHVL8AhFb6Oyo/ZU3EEYeDBev2Cis1A6Bvl38BfmeBBMdBOZBxeTOC2kNeRjvvvpzhA== @@ -4844,6 +4844,11 @@ motion "10.16.2" qrcode "1.5.3" +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -5910,7 +5915,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -5960,6 +5965,11 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.0.tgz#6d01b3696c59915b6ce057e4aa4adfc2fa25f5ef" integrity sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog== +ci-info@^3.7.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + cids@^0.7.1: version "0.7.5" resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" @@ -8232,6 +8242,13 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -8313,7 +8330,7 @@ fs-extra@^7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.1, fs-extra@^9.1.0: +fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -8590,6 +8607,11 @@ got@^11.8.5: p-cancelable "^2.0.0" responselike "^2.0.0" +graceful-fs@^4.1.11: + 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== + graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" @@ -9246,7 +9268,7 @@ is-what@^3.14.1: resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== -is-wsl@^2.2.0: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -10065,6 +10087,13 @@ keyvaluestorage-interface@^1.0.0: resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -10495,7 +10524,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.4: +micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -10990,6 +11019,14 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + open@^8.4.0: version "8.4.0" resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" @@ -11033,6 +11070,11 @@ os-shim@^0.1.2: resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" integrity sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A== +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + ospath@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" @@ -11153,6 +11195,26 @@ parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +patch-package@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-7.0.0.tgz#5c646b6b4b4bf37e5184a6950777b21dea6bb66e" + integrity sha512-eYunHbnnB2ghjTNc5iL1Uo7TsGMuXk0vibX3RFcE/CdVdXzmdbMsG/4K4IgoSuIkLTI5oHrMQk4+NkFqSed0BQ== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^2.2.2" + path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" @@ -12593,6 +12655,11 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -13225,6 +13292,13 @@ tiny-secp256k1@^1.1.6: elliptic "^6.4.0" nan "^2.13.2" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -14580,6 +14654,11 @@ yaml@^1.10.0, yaml@^1.10.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" From 9b34b7c7f339f59daf82570f9cac824fd74a01e4 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Wed, 21 Jun 2023 14:29:28 +0200 Subject: [PATCH 324/422] Chore: disable jest warnings (#2141) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 39b1931626..a8d14e9a3a 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "prettier": "prettier -w \"{src,cypress,mocks,scripts}/**/*.{ts,tsx,css,js}\"", "fix": "yarn lint:fix && ts-prune && yarn prettier", "test": "cross-env TZ=CET DEBUG_PRINT_LIMIT=30000 jest", - "test:ci": "yarn test --ci --coverage --json --watchAll=false --testLocationInResults --outputFile=jest.results.json", + "test:ci": "yarn test --ci --silent --coverage --json --watchAll=false --testLocationInResults --outputFile=jest.results.json", "test:coverage": "yarn test --coverage --watchAll=false", "cmp": "./scripts/cmp.sh", "routes": "node scripts/generate-routes.js > src/config/routes.ts && prettier -w src/config/routes.ts && cat src/config/routes.ts", From d2efbf638e79a84db540fa06efd817cf73dd8e22 Mon Sep 17 00:00:00 2001 From: Manuel Gellfart Date: Wed, 21 Jun 2023 14:29:45 +0200 Subject: [PATCH 325/422] feat: transaction security warnings (#1902) * feat: (WIP) transaction security scanner / warnings Small scanner interface for transactions with two example implementations - RuleBasedTransactionScanner - RedefineTransactionScanner * fix: add preValidatedSignature to payload * fix: use messages instead of transactions to avoid missing signatures * refactor: split ApprovalEditor into editor and approval module * refactor: add Interface and remove unnecessary code * refactor: module structure * feat: add 1st iteration of redefine module * feat: add severity warning * fix: clarify types * feat: transaction security warning components * Revert "feat: transaction security warning components" This reverts commit 262af6a6d46ddd878ed3f77ad9a5722c7df3413d. * feat: transaction security warning components (#1992) * fix: migrate callbacks to promises + add demo * feat: decode ERC-20, ERC-721, MultiSend recipients * feat: expected balance changes * refactor: remove records instead of map functions, change redefine response type * refactor: remove service, use proxy, test for useRedefine hook * feat: recipient address security module (#2030) * feat: recipient address security module * fix: description * fix: delete unused module * fix: test * fix: cleanup tests * fix: adjust payload * feat: unexpected delegate call security module (#2033) * [Risk mitigation] Rework components that display security results (#2048) - uses redefine to scan transactions - feature toggle to enable it per chain - analytics - error handling - design for the current tx modal * test: risk mitigation test cases in SignOrExecuteForm.test.tsx * fix: update redefine simulation URL * fix: align chip to the right, fix logo in dark mode * Update balance change list ui * fix: Spacing and don't show error if there are risk results * fix: Typo and refactor isSmartContract usage * Update read more text * Address feedback * Fix pluralized label --------- Co-authored-by: iamacook Co-authored-by: Usame Algan --- package.json | 2 +- public/images/notifications/alert.svg | 5 + .../transactions/redefine-dark-mode.svg | 38 + public/images/transactions/redefine.svg | 1 + .../balances/TokenListSelect/index.tsx | 7 +- src/components/dashboard/index.tsx | 7 +- .../SafeAppsTxModal/ReviewSafeAppsTx.tsx | 2 +- .../settings/SpendingLimits/index.tsx | 7 +- .../transactions/TxNavigation/index.tsx | 8 +- src/components/tx/AdvancedParams/index.tsx | 7 +- .../tx/ApprovalEditor/ApprovalEditor.test.tsx | 343 ++---- .../ApprovalEditor/hooks/useApprovalInfos.ts | 53 +- src/components/tx/ApprovalEditor/index.tsx | 87 +- src/components/tx/DecodedTx/index.tsx | 2 +- .../SignOrExecuteForm.test.tsx | 119 ++- .../tx/SignOrExecuteForm/SubmitButton.tsx | 29 + src/components/tx/SignOrExecuteForm/index.tsx | 169 +-- .../TransactionSecurityContext/index.tsx | 55 + .../redefine/RedefineBalanceChange/index.tsx | 157 +++ .../RedefineBalanceChange/styles.module.css | 47 + .../RedefineScanResult/RedefineScanResult.tsx | 86 ++ .../redefine/useDelegateCallModule.ts | 25 + .../security/redefine/useRecipientModule.ts | 38 + .../tx/security/redefine/useRedefine.test.ts | 402 +++++++ .../tx/security/redefine/useRedefine.ts | 86 ++ .../tx/security/shared/LoadingLabel.tsx | 16 + .../shared/SecurityWarnings/index.test.ts | 46 + .../shared/SecurityWarnings/index.tsx | 185 ++++ .../shared/SecurityWarnings/styles.module.css | 60 ++ src/config/constants.ts | 4 + .../__tests__/useAddressResolver.test.ts | 13 +- src/hooks/useAddressResolver.ts | 7 +- src/hooks/useChains.ts | 12 + .../useIsOnlySpendingLimitBeneficiary.tsx | 7 +- src/hooks/wallets/web3.ts | 7 + src/services/analytics/events/modals.ts | 9 + src/services/analytics/gtm.ts | 2 +- .../security/modules/ApprovalModule/index.ts | 61 ++ .../modules/DelegateCallModule/index.test.ts | 87 ++ .../modules/DelegateCallModule/index.ts | 53 + .../RecipientAddressModule/index.test.ts | 992 ++++++++++++++++++ .../modules/RecipientAddressModule/index.ts | 143 +++ .../security/modules/RedefineModule/index.ts | 154 +++ src/services/security/modules/types.ts | 21 + src/tests/transactions.ts | 97 ++ src/utils/chains.ts | 1 + src/utils/transaction-calldata.ts | 77 ++ src/utils/transactions.ts | 75 ++ src/utils/wallets.ts | 7 +- 49 files changed, 3486 insertions(+), 432 deletions(-) create mode 100644 public/images/notifications/alert.svg create mode 100644 public/images/transactions/redefine-dark-mode.svg create mode 100644 public/images/transactions/redefine.svg create mode 100644 src/components/tx/SignOrExecuteForm/SubmitButton.tsx create mode 100644 src/components/tx/security/TransactionSecurityContext/index.tsx create mode 100644 src/components/tx/security/redefine/RedefineBalanceChange/index.tsx create mode 100644 src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css create mode 100644 src/components/tx/security/redefine/RedefineScanResult/RedefineScanResult.tsx create mode 100644 src/components/tx/security/redefine/useDelegateCallModule.ts create mode 100644 src/components/tx/security/redefine/useRecipientModule.ts create mode 100644 src/components/tx/security/redefine/useRedefine.test.ts create mode 100644 src/components/tx/security/redefine/useRedefine.ts create mode 100644 src/components/tx/security/shared/LoadingLabel.tsx create mode 100644 src/components/tx/security/shared/SecurityWarnings/index.test.ts create mode 100644 src/components/tx/security/shared/SecurityWarnings/index.tsx create mode 100644 src/components/tx/security/shared/SecurityWarnings/styles.module.css create mode 100644 src/services/security/modules/ApprovalModule/index.ts create mode 100644 src/services/security/modules/DelegateCallModule/index.test.ts create mode 100644 src/services/security/modules/DelegateCallModule/index.ts create mode 100644 src/services/security/modules/RecipientAddressModule/index.test.ts create mode 100644 src/services/security/modules/RecipientAddressModule/index.ts create mode 100644 src/services/security/modules/RedefineModule/index.ts create mode 100644 src/services/security/modules/types.ts create mode 100644 src/tests/transactions.ts create mode 100644 src/utils/transaction-calldata.ts diff --git a/package.json b/package.json index a8d14e9a3a..92034bc684 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "cmp": "./scripts/cmp.sh", "routes": "node scripts/generate-routes.js > src/config/routes.ts && prettier -w src/config/routes.ts && cat src/config/routes.ts", "css-vars": "ts-node-esm ./scripts/css-vars.ts > ./src/styles/vars.css && prettier -w src/styles/vars.css", - "generate-types": "typechain --target ethers-v5 --out-dir src/types/contracts ./node_modules/@safe-global/safe-deployments/dist/assets/**/*.json ./node_modules/@safe-global/safe-modules-deployments/dist/assets/**/*.json ./node_modules/@openzeppelin/contracts/build/contracts/ERC20.json", + "generate-types": "typechain --target ethers-v5 --out-dir src/types/contracts ./node_modules/@safe-global/safe-deployments/dist/assets/**/*.json ./node_modules/@safe-global/safe-modules-deployments/dist/assets/**/*.json ./node_modules/@openzeppelin/contracts/build/contracts/ERC20.json ./node_modules/@openzeppelin/contracts/build/contracts/ERC721.json", "postinstall": "yarn patch-package && yarn generate-types && yarn css-vars", "analyze": "cross-env ANALYZE=true yarn build", "cypress:open": "cross-env TZ=UTC cypress open --e2e", diff --git a/public/images/notifications/alert.svg b/public/images/notifications/alert.svg new file mode 100644 index 0000000000..4e19cc1217 --- /dev/null +++ b/public/images/notifications/alert.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/images/transactions/redefine-dark-mode.svg b/public/images/transactions/redefine-dark-mode.svg new file mode 100644 index 0000000000..97ced9293c --- /dev/null +++ b/public/images/transactions/redefine-dark-mode.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/transactions/redefine.svg b/public/images/transactions/redefine.svg new file mode 100644 index 0000000000..449dd63f22 --- /dev/null +++ b/public/images/transactions/redefine.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/balances/TokenListSelect/index.tsx b/src/components/balances/TokenListSelect/index.tsx index 0715850639..e300bc4e16 100644 --- a/src/components/balances/TokenListSelect/index.tsx +++ b/src/components/balances/TokenListSelect/index.tsx @@ -1,7 +1,6 @@ -import { useCurrentChain } from '@/hooks/useChains' import { useAppDispatch, useAppSelector } from '@/store' import { selectSettings, setTokenList, TOKEN_LISTS } from '@/store/settingsSlice' -import { FEATURES, hasFeature } from '@/utils/chains' +import { FEATURES } from '@/utils/chains' import type { SelectChangeEvent } from '@mui/material' import { Box, SvgIcon, Tooltip, Typography, FormControl, InputLabel, Select, MenuItem } from '@mui/material' import InfoIcon from '@/public/images/notifications/info.svg' @@ -10,6 +9,7 @@ import { OnboardingTooltip } from '@/components/common/OnboardingTooltip' import Track from '@/components/common/Track' import { ASSETS_EVENTS, trackEvent } from '@/services/analytics' import { HelpCenterArticle } from '@/config/constants' +import { useHasFeature } from '@/hooks/useChains' const LS_TOKENLIST_ONBOARDING = 'tokenlist_onboarding' @@ -21,8 +21,7 @@ const TokenListLabel = { const TokenListSelect = () => { const dispatch = useAppDispatch() const settings = useAppSelector(selectSettings) - const chain = useCurrentChain() - const hasDefaultTokenlist = chain && hasFeature(chain, FEATURES.DEFAULT_TOKENLIST) + const hasDefaultTokenlist = useHasFeature(FEATURES.DEFAULT_TOKENLIST) const handleSelectTokenList = (event: SelectChangeEvent) => { const selectedString = event.target.value as TOKEN_LISTS diff --git a/src/components/dashboard/index.tsx b/src/components/dashboard/index.tsx index e1ad3c818e..3ac2042ad8 100644 --- a/src/components/dashboard/index.tsx +++ b/src/components/dashboard/index.tsx @@ -8,13 +8,12 @@ import GovernanceSection from '@/components/dashboard/GovernanceSection/Governan import CreationDialog from '@/components/dashboard/CreationDialog' import { useRouter } from 'next/router' import Relaying from '@/components/dashboard/Relaying' -import { useCurrentChain } from '@/hooks/useChains' -import { FEATURES, hasFeature } from '@/utils/chains' +import { FEATURES } from '@/utils/chains' +import { useHasFeature } from '@/hooks/useChains' const Dashboard = (): ReactElement => { const router = useRouter() - const currentChain = useCurrentChain() - const supportsRelaying = currentChain && hasFeature(currentChain, FEATURES.RELAYING) + const supportsRelaying = useHasFeature(FEATURES.RELAYING) const { showCreationModal = '' } = router.query return ( diff --git a/src/components/safe-apps/SafeAppsTxModal/ReviewSafeAppsTx.tsx b/src/components/safe-apps/SafeAppsTxModal/ReviewSafeAppsTx.tsx index c7aa00933c..8e0cc66409 100644 --- a/src/components/safe-apps/SafeAppsTxModal/ReviewSafeAppsTx.tsx +++ b/src/components/safe-apps/SafeAppsTxModal/ReviewSafeAppsTx.tsx @@ -65,7 +65,7 @@ const ReviewSafeAppsTx = ({ <> Error parsing data
  • }> - + diff --git a/src/components/settings/SpendingLimits/index.tsx b/src/components/settings/SpendingLimits/index.tsx index 6962c8e7f3..d79d0fa919 100644 --- a/src/components/settings/SpendingLimits/index.tsx +++ b/src/components/settings/SpendingLimits/index.tsx @@ -4,14 +4,13 @@ import { SpendingLimitsTable } from '@/components/settings/SpendingLimits/Spendi import { useSelector } from 'react-redux' import { selectSpendingLimits, selectSpendingLimitsLoading } from '@/store/spendingLimitsSlice' import { NewSpendingLimit } from '@/components/settings/SpendingLimits/NewSpendingLimit' -import { useCurrentChain } from '@/hooks/useChains' -import { FEATURES, hasFeature } from '@/utils/chains' +import { FEATURES } from '@/utils/chains' +import { useHasFeature } from '@/hooks/useChains' const SpendingLimits = () => { const spendingLimits = useSelector(selectSpendingLimits) const spendingLimitsLoading = useSelector(selectSpendingLimitsLoading) - const currentChain = useCurrentChain() - const isEnabled = currentChain && hasFeature(currentChain, FEATURES.SPENDING_LIMIT) + const isEnabled = useHasFeature(FEATURES.SPENDING_LIMIT) return ( diff --git a/src/components/transactions/TxNavigation/index.tsx b/src/components/transactions/TxNavigation/index.tsx index d17a07b2e4..e60aba1ca9 100644 --- a/src/components/transactions/TxNavigation/index.tsx +++ b/src/components/transactions/TxNavigation/index.tsx @@ -1,13 +1,11 @@ import NavTabs from '@/components/common/NavTabs' import { transactionNavItems } from '@/components/sidebar/SidebarNavigation/config' import { AppRoutes } from '@/config/routes' -import { useCurrentChain } from '@/hooks/useChains' -import { hasFeature, FEATURES } from '@/utils/chains' +import { useHasFeature } from '@/hooks/useChains' +import { FEATURES } from '@/utils/chains' const TxNavigation = () => { - const chain = useCurrentChain() - - const isEIP1271 = chain && hasFeature(chain, FEATURES.EIP1271) + const isEIP1271 = useHasFeature(FEATURES.EIP1271) const navItems = isEIP1271 ? transactionNavItems diff --git a/src/components/tx/AdvancedParams/index.tsx b/src/components/tx/AdvancedParams/index.tsx index 2f79db6ef7..e76189eaaa 100644 --- a/src/components/tx/AdvancedParams/index.tsx +++ b/src/components/tx/AdvancedParams/index.tsx @@ -1,7 +1,7 @@ import GasParams from '@/components/tx/GasParams' -import { useCurrentChain } from '@/hooks/useChains' +import { useHasFeature } from '@/hooks/useChains' import { MODALS_EVENTS, trackEvent } from '@/services/analytics' -import { FEATURES, hasFeature } from '@/utils/chains' +import { FEATURES } from '@/utils/chains' import { useState } from 'react' import AdvancedParamsForm from './AdvancedParamsForm' import { type AdvancedParameters } from './types' @@ -28,8 +28,7 @@ const AdvancedParams = ({ willRelay, }: Props) => { const [isEditing, setIsEditing] = useState(false) - const chain = useCurrentChain() - const isEIP1559 = !!chain && hasFeature(chain, FEATURES.EIP1559) + const isEIP1559 = useHasFeature(FEATURES.EIP1559) const onEditOpen = () => { setIsEditing(true) diff --git a/src/components/tx/ApprovalEditor/ApprovalEditor.test.tsx b/src/components/tx/ApprovalEditor/ApprovalEditor.test.tsx index 1fdf7130f9..f83ab7502c 100644 --- a/src/components/tx/ApprovalEditor/ApprovalEditor.test.tsx +++ b/src/components/tx/ApprovalEditor/ApprovalEditor.test.tsx @@ -10,16 +10,17 @@ import { act, } from '@/tests/test-utils' import ApprovalEditor from '.' -import { type DecodedDataResponse, type SafeBalanceResponse, TokenType } from '@safe-global/safe-gateway-typescript-sdk' +import { type SafeBalanceResponse, TokenType } from '@safe-global/safe-gateway-typescript-sdk' import { hexlify, hexZeroPad, Interface } from 'ethers/lib/utils' -import { ERC20__factory, Multi_send__factory } from '@/types/contracts' +import { ERC20__factory, Multi_send_call_only__factory } from '@/types/contracts' import type { BaseTransaction } from '@safe-global/safe-apps-sdk' import { encodeMultiSendData } from '@safe-global/safe-core-sdk/dist/src/utils/transactions/utils' import { parseUnits } from '@ethersproject/units' +import { getMultiSendCallOnlyContractAddress } from '@/services/contracts/safeContracts' +import { type SafeSignature, type SafeTransaction } from '@safe-global/safe-core-sdk-types' const PREFIX_TEXT = 'Approve access to' const ERC20_INTERFACE = ERC20__factory.createInterface() -const MULTISEND_INTERFACE = Multi_send__factory.createInterface() const createApproveCallData = (spender: string, value: string) => { return ERC20_INTERFACE.encodeFunctionData('approve', [spender, value]) @@ -29,16 +30,54 @@ const createNonApproveCallData = (to: string, value: string) => { return ERC20_INTERFACE.encodeFunctionData('transfer', [to, value]) } -const createMultiSendData = (txs: BaseTransaction[]) => { - return MULTISEND_INTERFACE.encodeFunctionData('multiSend', [encodeMultiSendData(txs)]) -} - const getApprovalSummaryElement = (text: string, result: RenderResult): HTMLElement => { const accordionSummary = result.getByText(PREFIX_TEXT, { exact: false }) expect(accordionSummary.parentElement).not.toBeNull() return accordionSummary.parentElement! } +const renderEditor = async (txs: BaseTransaction[], updateTxs?: (newTxs: BaseTransaction[]) => void) => { + if (txs.length === 0) { + // eslint-disable-next-line react/display-name + return () => + } + + let txData: string + let to: string + if (txs.length > 1) { + const multiSendCallData = encodeMultiSendData(txs.map((tx) => ({ ...tx, operation: 0 }))) + txData = Multi_send_call_only__factory.createInterface().encodeFunctionData('multiSend', [multiSendCallData]) + to = getMultiSendCallOnlyContractAddress('1') || '0x1' + } else { + txData = txs[0].data + to = txs[0].to + } + + const safeTx: SafeTransaction = { + data: { + to, + data: txData, + baseGas: 0, + gasPrice: 0, + gasToken: '0x0', + nonce: 1, + operation: txs.length > 1 ? 1 : 0, + refundReceiver: '0x0', + safeTxGas: 0, + value: '0x0', + }, + signatures: new Map(), + addSignature: function (signature: SafeSignature): void { + throw new Error('Function not implemented.') + }, + encodedSignatures: function (): string { + throw new Error('Function not implemented.') + }, + } + // eslint-disable-next-line react/display-name + return () => +} + describe('ApprovalEditor', () => { beforeEach(() => { jest.clearAllMocks() @@ -51,12 +90,13 @@ describe('ApprovalEditor', () => { const updateCallback = jest.fn() describe('should render null', () => { - it('for empty txs', () => { - const result = render() + it('for empty txs', async () => { + const Editor = await renderEditor([], updateCallback) + const result = render() expect(result.container).toBeEmptyDOMElement() }) - it('for a single tx containing an approve call with wrong params', () => { + it('for a single tx containing an approve call with wrong params', async () => { const testInterface = new Interface(['function approve(address, uint256, uint8)']) const txs = [ { @@ -65,11 +105,12 @@ describe('ApprovalEditor', () => { value: '0', }, ] - const result = render() + const Editor = await renderEditor(txs, updateCallback) + const result = render() expect(result.container).toBeEmptyDOMElement() }) - it('for multiple non approve txs', () => { + it('for multiple non approve txs', async () => { const txs = [ { to: hexZeroPad('0x123', 20), @@ -82,7 +123,9 @@ describe('ApprovalEditor', () => { value: '0', }, ] - const result = render() + const Editor = await renderEditor(txs, updateCallback) + + const result = render() expect(result.container).toBeEmptyDOMElement() }) }) @@ -139,7 +182,9 @@ describe('ApprovalEditor', () => { value: '0', }, ] - const result = render(, { + const Editor = await renderEditor(txs, updateCallback) + + const result = render(, { initialReduxState: { balances: { data: mockBalances, loading: false }, }, @@ -277,7 +322,10 @@ describe('ApprovalEditor', () => { value: '0', }, ] - const result = render(, { + + const Editor = await renderEditor(txs, updateCallback) + + const result = render(, { initialReduxState: { balances: { data: mockBalances, loading: false }, }, @@ -329,232 +377,63 @@ describe('ApprovalEditor', () => { // It passes decodedTxData and txDetails instead of an array of base transactions and no update function describe('in readonly mode', () => { describe('should render null', () => { - it('for a single tx containing no approve call', () => { - const txs: DecodedDataResponse & { to: string } = { - method: 'transfer', - to: hexZeroPad('0x123', 20), - parameters: [ - { name: 'to', type: 'address', value: hexZeroPad('0x2', 20) }, - { name: 'value', type: 'uint256', value: '420' }, - ], - } - const result = render() - expect(result.container).toBeEmptyDOMElement() - }) - - it('for a single tx containing an approve call with wrong params', () => { - const txs: DecodedDataResponse & { to: string } = { - method: 'approve', - to: hexZeroPad('0x123', 20), - parameters: [ - { name: 'value1', type: 'uint256', value: '123' }, - { name: 'value2', type: 'uint256', value: '456' }, - ], - } - const result = render() - expect(result.container).toBeEmptyDOMElement() - }) - - it('for a single tx containing approve call with too many params', () => { - const txs: DecodedDataResponse & { to: string } = { - method: 'approve', - to: hexZeroPad('0x123', 20), - parameters: [ - { name: 'spender', type: 'address', value: hexZeroPad('0x2', 20) }, - { name: 'value', type: 'uint256', value: '420' }, - { name: 'id', type: 'uint256', value: '1' }, - ], - } - const result = render() - expect(result.container).toBeEmptyDOMElement() - }) - - it('for multisend txs with a wrong number of parameters', () => { - const approvalTx = { - data: createApproveCallData(hexZeroPad('0x2', 20), '10'), - to: hexZeroPad('0x3', 20), - operation: 0, - value: '0', - } as const - - const txs: DecodedDataResponse & { to: string } = { - method: 'multiSend', - to: hexZeroPad('0x123', 20), - parameters: [ - { - name: 'transactions', - type: 'bytes', - value: createMultiSendData([approvalTx]), - valueDecoded: [approvalTx], - }, - { name: 'unexpectedSecondParam', type: 'uint256', value: '420' }, - ], - } - const result = render() - expect(result.container).toBeEmptyDOMElement() - }) - - it('for multisend txs contains without approvals', () => { - const innerTx = { - data: createNonApproveCallData(hexZeroPad('0x2', 20), '10'), - to: hexZeroPad('0x3', 20), - operation: 0, - value: '0', - } as const - - const txs: DecodedDataResponse & { to: string } = { - method: 'multiSend', - to: hexZeroPad('0x123', 20), - parameters: [ - { - name: 'transactions', - type: 'bytes', - value: createMultiSendData([innerTx]), - valueDecoded: [innerTx], - }, - ], - } - const result = render() + it('for a single tx containing no approve call', async () => { + const txs: BaseTransaction[] = [ + { + to: hexZeroPad('0x123', 20), + data: createNonApproveCallData(hexZeroPad('0x2', 20), '20'), + value: '420', + }, + ] + const Editor = await renderEditor(txs) + const result = render() expect(result.container).toBeEmptyDOMElement() }) - }) - describe('should render approval(s)', () => { - it('for single approval tx of token in balances', async () => { - const tokenAddress = hexZeroPad('0x123', 20) - const mockBalance: SafeBalanceResponse = { - fiatTotal: '100', - items: [ - { - balance: '100', - fiatBalance: '100', - fiatConversion: '1', - tokenInfo: { - address: tokenAddress, - decimals: 18, - logoUri: '', - name: 'Test', - symbol: 'TST', - type: TokenType.ERC20, + describe('should render approval(s)', () => { + it('for single approval tx of token in balances', async () => { + const tokenAddress = hexZeroPad('0x123', 20) + const mockBalance: SafeBalanceResponse = { + fiatTotal: '100', + items: [ + { + balance: '100', + fiatBalance: '100', + fiatConversion: '1', + tokenInfo: { + address: tokenAddress, + decimals: 18, + logoUri: '', + name: 'Test', + symbol: 'TST', + type: TokenType.ERC20, + }, }, + ], + } + const txs: BaseTransaction[] = [ + { + to: tokenAddress, + data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('420', 18))), + value: '0', }, - ], - } - const txs: DecodedDataResponse & { to: string } = { - method: 'approve', - to: tokenAddress, - parameters: [ - { name: 'spender', type: 'address', value: hexZeroPad('0x2', 20) }, - { name: 'value', type: 'uint256', value: hexlify(parseUnits('420', 18)) }, - ], - } - const result = render(, { - initialReduxState: { - balances: { - loading: false, - data: mockBalance, - }, - }, - }) - await waitFor(() => { - const accordionSummary = getApprovalSummaryElement(PREFIX_TEXT, result) - getByText(accordionSummary, '420', { exact: false }) - getByText(accordionSummary, 'TST', { exact: false }) - }) - }) + ] - it('for single approval tx of token outside of balances', async () => { - mockWeb3Provider([ - { - returnType: 'uint8', - returnValue: '8', - signature: 'decimals()', - }, - { - returnType: 'string', - returnValue: 'TST', - signature: 'symbol()', - }, - ]) - const tokenAddress = hexZeroPad('0x123', 20) - const mockBalance: SafeBalanceResponse = { - fiatTotal: '0', - items: [], - } - const txs: DecodedDataResponse & { to: string } = { - method: 'approve', - to: tokenAddress, - parameters: [ - { name: 'spender', type: 'address', value: hexZeroPad('0x2', 20) }, - { name: 'value', type: 'uint256', value: hexlify(parseUnits('420', 8)) }, - ], - } - const result = render(, { - initialReduxState: { - balances: { - loading: false, - data: mockBalance, - }, - }, - }) - await waitFor(() => { - const accordionSummary = getApprovalSummaryElement(PREFIX_TEXT, result) - getByText(accordionSummary, '420', { exact: false }) - getByText(accordionSummary, 'TST', { exact: false }) - }) - }) + const Editor = await renderEditor(txs) - it('for multisend tx with one approval of token in balances', async () => { - const tokenAddress = hexZeroPad('0x123', 20) - const mockBalance: SafeBalanceResponse = { - fiatTotal: '100', - items: [ - { - balance: '100', - fiatBalance: '100', - fiatConversion: '1', - tokenInfo: { - address: tokenAddress, - decimals: 18, - logoUri: '', - name: 'Test', - symbol: 'TST', - type: TokenType.ERC20, + const result = render(, { + initialReduxState: { + balances: { + loading: false, + data: mockBalance, }, }, - ], - } - const approvalTx = { - data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('69', 18))), - to: tokenAddress, - operation: 0, - value: '0', - } as const - - const txs: DecodedDataResponse & { to: string } = { - method: 'multiSend', - to: hexZeroPad('0x456', 20), - parameters: [ - { - name: 'transactions', - type: 'bytes', - value: createMultiSendData([approvalTx]), - valueDecoded: [approvalTx], - }, - ], - } - const result = render(, { - initialReduxState: { - balances: { - loading: false, - data: mockBalance, - }, - }, - }) - await waitFor(() => { - const accordionSummary = getApprovalSummaryElement(PREFIX_TEXT, result) - getByText(accordionSummary, '69', { exact: false }) - getByText(accordionSummary, 'TST', { exact: false }) + }) + await waitFor(() => { + const accordionSummary = getApprovalSummaryElement(PREFIX_TEXT, result) + getByText(accordionSummary, '420', { exact: false }) + getByText(accordionSummary, 'TST', { exact: false }) + }) }) }) }) diff --git a/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts b/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts index 586516f05c..0d60122677 100644 --- a/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts +++ b/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts @@ -1,8 +1,9 @@ import useAsync from '@/hooks/useAsync' import useBalances from '@/hooks/useBalances' -import { ERC20__factory } from '@/types/contracts' +import { ApprovalModule, type ApprovalModuleResponse } from '@/services/security/modules/ApprovalModule' +import type { SecurityResponse } from '@/services/security/modules/types' import { getERC20TokenInfoOnChain, UNLIMITED_APPROVAL_AMOUNT } from '@/utils/tokens' -import { type BaseTransaction } from '@safe-global/safe-apps-sdk' +import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' import { type TokenInfo } from '@safe-global/safe-gateway-typescript-sdk' import { ethers } from 'ethers' import { PSEUDO_APPROVAL_VALUES } from '../utils/approvals' @@ -15,37 +16,45 @@ export type ApprovalInfo = { amountFormatted: string } -const ERC20_INTERFACE = ERC20__factory.createInterface() +const ApprovalModuleInstance = new ApprovalModule() + +const useApprovalData = (safeTransaction: SafeTransaction | undefined) => { + return useAsync>(() => { + if (!safeTransaction) { + return + } + + return ApprovalModuleInstance.scanTransaction({ safeTransaction }) + }, [safeTransaction]) +} + +export const useApprovalInfos = (safeTransaction: SafeTransaction | undefined) => { + const [approvals] = useApprovalData(safeTransaction) -export const useApprovalInfos = (approvalTxs: BaseTransaction[]) => { const { balances } = useBalances() return useAsync( - async () => - Promise.all( - approvalTxs.map(async (tx) => { - const [spender, amount] = ERC20_INTERFACE.decodeFunctionData('approve', tx.data) + async () => { + if (!approvals || !approvals.payload || approvals.payload.length === 0) return Promise.resolve([]) + + return Promise.all( + approvals.payload.map(async (approval) => { let tokenInfo: Omit | undefined = balances.items.find( - (item) => item.tokenInfo.address === tx.to, + (item) => item.tokenInfo.address === approval.tokenAddress, )?.tokenInfo if (!tokenInfo) { - tokenInfo = await getERC20TokenInfoOnChain(tx.to) + tokenInfo = await getERC20TokenInfoOnChain(approval.tokenAddress) } - const amountFormatted = UNLIMITED_APPROVAL_AMOUNT.eq(amount) + const amountFormatted = UNLIMITED_APPROVAL_AMOUNT.eq(approval.amount) ? PSEUDO_APPROVAL_VALUES.UNLIMITED - : ethers.utils.formatUnits(amount, tokenInfo?.decimals) - - return { - tokenInfo: tokenInfo, - tokenAddress: tx.to, - spender: spender, - amount: amount, - amountFormatted, - } + : ethers.utils.formatUnits(approval.amount, tokenInfo?.decimals) + + return { ...approval, tokenInfo: tokenInfo, amountFormatted } }), - ), - [balances.items.length, approvalTxs], + ) + }, + [balances.items.length, approvals], false, // Do not clear data on balance updates ) } diff --git a/src/components/tx/ApprovalEditor/index.tsx b/src/components/tx/ApprovalEditor/index.tsx index 5c4bd0a6fb..d7271092f6 100644 --- a/src/components/tx/ApprovalEditor/index.tsx +++ b/src/components/tx/ApprovalEditor/index.tsx @@ -1,76 +1,75 @@ import TokenIcon from '@/components/common/TokenIcon' -import type { BaseTransaction } from '@safe-global/safe-apps-sdk' import ExpandMoreIcon from '@mui/icons-material/ExpandMore' import { Accordion, AccordionDetails, AccordionSummary, Box, IconButton, Skeleton, Typography } from '@mui/material' -import type { DecodedDataResponse } from '@safe-global/safe-gateway-typescript-sdk' import { groupBy } from 'lodash' import css from './styles.module.css' import { UNLIMITED_APPROVAL_AMOUNT } from '@/utils/tokens' import { ApprovalEditorForm } from './ApprovalEditorForm' -import { useMemo } from 'react' -import { type ApprovalInfo, APPROVAL_SIGNATURE_HASH, extractTxs, updateApprovalTxs } from './utils/approvals' +import { type ReactNode } from 'react' +import { type ApprovalInfo, updateApprovalTxs } from './utils/approvals' import { useApprovalInfos } from './hooks/useApprovalInfos' +import { decodeSafeTxToBaseTransactions } from '@/utils/transactions' +import { type MetaTransactionData, type SafeTransaction } from '@safe-global/safe-core-sdk-types' -const Summary = ({ approvalInfos, approvalTxs }: { approvalInfos: ApprovalInfo[]; approvalTxs: BaseTransaction[] }) => { - const uniqueTokens = groupBy(approvalTxs, (tx) => tx.to) +const SummaryWrapper = ({ children }: { children: ReactNode | ReactNode[] }) => { + return ( + + + Approve access to + + + {children} + + + ) +} + +const Summary = ({ approvalInfos }: { approvalInfos: ApprovalInfo[] }) => { + const uniqueTokens = groupBy(approvalInfos, (approvalInfo) => approvalInfo.tokenAddress) const uniqueTokenCount = Object.keys(uniqueTokens).length if (approvalInfos.length === 1) { const approval = approvalInfos[0] const amount = UNLIMITED_APPROVAL_AMOUNT.eq(approval.amount) ? 'unlimited' : approval.amountFormatted return ( - - - Approve access to - - - {amount} - - {approval.tokenInfo?.symbol} - - + + {amount} + + {approval.tokenInfo?.symbol} + ) } return ( - - - Approve access to - - - {uniqueTokenCount} Token{uniqueTokenCount > 1 ? 's' : ''} - - + + {uniqueTokenCount} Token{uniqueTokenCount > 1 ? 's' : ''} + ) } export const ApprovalEditor = ({ - txs, - updateTxs, + safeTransaction, + updateTransaction, }: { - txs: BaseTransaction[] | (DecodedDataResponse & { to: string }) - updateTxs?: (txs: BaseTransaction[]) => void + safeTransaction: SafeTransaction | undefined + updateTransaction?: (txs: MetaTransactionData[]) => void }) => { - const extractedTxs = useMemo(() => extractTxs(txs), [txs]) - const approvalTxs = useMemo( - () => extractedTxs.filter((tx) => tx.data.startsWith(APPROVAL_SIGNATURE_HASH)), - [extractedTxs], - ) - - const [approvalInfos, error, loading] = useApprovalInfos(approvalTxs) + const [readableApprovals, error, loading] = useApprovalInfos(safeTransaction) - if (approvalTxs.length === 0) { + if (!readableApprovals || readableApprovals.length === 0 || !safeTransaction) { return null } + const extractedTxs = decodeSafeTxToBaseTransactions(safeTransaction) + // If a callback is handed in, we update the txs on change, otherwise a `undefined` callback will change the form to readonly const updateApprovals = - updateTxs === undefined + updateTransaction === undefined ? undefined : (approvals: string[]) => { - const updatedTxs = updateApprovalTxs(approvals, approvalInfos, extractedTxs) - updateTxs(updatedTxs) + const updatedTxs = updateApprovalTxs(approvals, readableApprovals, extractedTxs) + updateTransaction(updatedTxs) } return ( @@ -85,21 +84,19 @@ export const ApprovalEditor = ({ {' '} {error ? ( Error while decoding approval transactions. - ) : loading || !approvalInfos ? ( + ) : loading || !readableApprovals ? ( ) : ( - + )} - - {loading || !approvalInfos ? null : ( + {loading || !readableApprovals ? null : ( <> This allows contracts to spend the selected amounts of your asset balance. - - + )} diff --git a/src/components/tx/DecodedTx/index.tsx b/src/components/tx/DecodedTx/index.tsx index 63b60ff739..44294248ee 100644 --- a/src/components/tx/DecodedTx/index.tsx +++ b/src/components/tx/DecodedTx/index.tsx @@ -61,7 +61,7 @@ const DecodedTx = ({ tx, txId }: DecodedTxProps): ReactElement | null => { {approvalEditorTx && ( Error parsing data
    }> - + )} diff --git a/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx b/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx index 63735c7b7a..b0719ffdce 100644 --- a/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx +++ b/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx @@ -20,8 +20,10 @@ import * as wrongChain from '@/hooks/useIsWrongChain' import * as useIsValidExecutionHook from '@/hooks/useIsValidExecution' import * as useChains from '@/hooks/useChains' import * as useRelaysBySafe from '@/hooks/useRemainingRelays' +import * as useRedefine from '@/components/tx/security/redefine/useRedefine' import { FEATURES } from '@/utils/chains' import { type OnboardAPI } from '@web3-onboard/core' +import { SecuritySeverity } from '@/services/security/modules/types' jest.mock('@/hooks/useIsWrongChain', () => ({ __esModule: true, @@ -99,7 +101,7 @@ describe('SignOrExecuteForm', () => { .spyOn(txSenderDispatch, 'dispatchTxProposal') .mockImplementation(jest.fn(() => Promise.resolve({ txId: '0x12' } as TransactionDetails))) jest.spyOn(useChains, 'useCurrentChain').mockReturnValue({ - features: [FEATURES.RELAYING], + features: [FEATURES.RELAYING, FEATURES.RISK_MITIGATION], chainId: '5', } as unknown as ChainInfo) jest.spyOn(walletUtils, 'isSmartContractWallet').mockResolvedValue(false) @@ -624,7 +626,7 @@ describe('SignOrExecuteForm', () => { await waitFor(() => expect(executionSpy).toHaveBeenCalledTimes(1)) }) - it('signs a transactions', async () => { + it('signs a transaction', async () => { const mockTx = createSafeTx() const signSpy = jest.fn(() => Promise.resolve({} as SafeTransaction)) @@ -718,4 +720,117 @@ describe('SignOrExecuteForm', () => { expect(result.getByText('Error submitting the transaction. Please try again.')).toBeInTheDocument() }) }) + + it('requires a confirmation for high risk transactions', async () => { + const mockTx = createSafeTx() + + const signSpy = jest.fn(() => Promise.resolve({} as SafeTransaction)) + const proposeSpy = jest.fn(() => Promise.resolve({} as TransactionDetails)) + + jest.spyOn(txSenderDispatch, 'dispatchTxSigning').mockImplementation(signSpy) + jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(proposeSpy) + jest.spyOn(walletUtils, 'isSmartContractWallet').mockImplementation(() => Promise.resolve(false)) + jest.spyOn(useChains, 'useHasFeature').mockImplementation((feature: FEATURES) => { + return feature === FEATURES.RISK_MITIGATION + }) + jest.spyOn(useRedefine, 'useRedefine').mockReturnValue([ + { + severity: SecuritySeverity.HIGH, + payload: { + errors: [], + issues: [ + { + category: 'TEST_CATEGORY', + description: { + short: 'High test issue', + long: 'This is just a test', + }, + severity: SecuritySeverity.HIGH, + }, + ], + }, + }, + undefined, + false, + ]) + + const result = render() + + await act(() => Promise.resolve()) + + const submitButton = result.getByText('Submit') + expect(submitButton).toBeDisabled() + + expect(result.baseElement).toHaveTextContent('High issue') + expect(result.baseElement).toHaveTextContent('High test issue') + expect(result.baseElement).toHaveTextContent('I understand the risks and would like to continue this transaction') + + await act(() => { + const confirmationBox = result.getByText('I understand the risks and would like to continue this transaction') + fireEvent.click(confirmationBox) + expect(submitButton).toBeEnabled() + fireEvent.click(submitButton) + }) + + await waitFor(() => { + expect(signSpy).toHaveBeenCalledTimes(1) + expect(proposeSpy).toHaveBeenCalledTimes(1) + }) + }) + + it('requires no confirmation for low / no risk transactions', async () => { + const mockTx = createSafeTx() + + const signSpy = jest.fn(() => Promise.resolve({} as SafeTransaction)) + const proposeSpy = jest.fn(() => Promise.resolve({} as TransactionDetails)) + + jest.spyOn(txSenderDispatch, 'dispatchTxSigning').mockImplementation(signSpy) + jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(proposeSpy) + jest.spyOn(walletUtils, 'isSmartContractWallet').mockImplementation(() => Promise.resolve(false)) + jest.spyOn(useChains, 'useHasFeature').mockImplementation((feature: FEATURES) => { + return feature === FEATURES.RISK_MITIGATION + }) + jest.spyOn(useRedefine, 'useRedefine').mockReturnValue([ + { + severity: SecuritySeverity.LOW, + payload: { + errors: [], + issues: [ + { + category: 'TEST_CATEGORY', + description: { + short: 'Low test issue', + long: 'This is just a test', + }, + severity: SecuritySeverity.LOW, + }, + ], + }, + }, + undefined, + false, + ]) + + const result = render() + + await act(() => Promise.resolve()) + + const submitButton = result.getByText('Submit') + expect(submitButton).toBeEnabled() + + expect(result.baseElement).toHaveTextContent('Low issue') + expect(result.baseElement).toHaveTextContent('Low test issue') + expect(result.baseElement).not.toHaveTextContent( + 'I understand the risks and would like to continue this transaction', + ) + + await act(() => { + fireEvent.click(submitButton) + }) + + await waitFor(() => { + expect(signSpy).toHaveBeenCalledTimes(1) + expect(proposeSpy).toHaveBeenCalledTimes(1) + }) + }) }) diff --git a/src/components/tx/SignOrExecuteForm/SubmitButton.tsx b/src/components/tx/SignOrExecuteForm/SubmitButton.tsx new file mode 100644 index 0000000000..a3fa52476c --- /dev/null +++ b/src/components/tx/SignOrExecuteForm/SubmitButton.tsx @@ -0,0 +1,29 @@ +import CheckWallet from '@/components/common/CheckWallet' +import { Button } from '@mui/material' +import { useContext } from 'react' +import { TransactionSecurityContext } from '../security/TransactionSecurityContext' + +const SubmitButton = ({ + willExecute, + submitDisabled, + isEstimating, +}: { + willExecute: boolean + submitDisabled: boolean + isEstimating: boolean +}) => { + const { needsRiskConfirmation, isRiskConfirmed } = useContext(TransactionSecurityContext) + + const disableButton = submitDisabled || (needsRiskConfirmation && !isRiskConfirmed) + return ( + + {(isOk) => ( + + )} + + ) +} + +export default SubmitButton diff --git a/src/components/tx/SignOrExecuteForm/index.tsx b/src/components/tx/SignOrExecuteForm/index.tsx index 1fbb16c641..1918625d6f 100644 --- a/src/components/tx/SignOrExecuteForm/index.tsx +++ b/src/components/tx/SignOrExecuteForm/index.tsx @@ -1,5 +1,5 @@ import { type ReactElement, type ReactNode, type SyntheticEvent, useEffect, useState } from 'react' -import { Box, Button, DialogContent, Typography } from '@mui/material' +import { Box, DialogContent, Typography } from '@mui/material' import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' import useGasLimit from '@/hooks/useGasLimit' @@ -14,7 +14,6 @@ import { TxSimulation } from '@/components/tx/TxSimulation' import useIsSafeOwner from '@/hooks/useIsSafeOwner' import useIsValidExecution from '@/hooks/useIsValidExecution' import { createTx } from '@/services/tx/tx-sender' -import CheckWallet from '@/components/common/CheckWallet' import { WrongChainWarning } from '../WrongChainWarning' import { useImmediatelyExecutable, useIsExecutionLoop, useTxActions, useValidateNonce } from './hooks' import UnknownContractError from './UnknownContractError' @@ -22,6 +21,10 @@ import { useRelaysBySafe } from '@/hooks/useRemainingRelays' import useWalletCanRelay from '@/hooks/useWalletCanRelay' import { ExecutionMethod, ExecutionMethodSelector } from '../ExecutionMethodSelector' import { hasRemainingRelays } from '@/utils/relaying' +import { TransactionSecurityProvider } from '../security/TransactionSecurityContext' +import { RedefineBalanceChanges } from '../security/redefine/RedefineBalanceChange' +import { RedefineScanResult } from '../security/redefine/RedefineScanResult/RedefineScanResult' +import SubmitButton from './SubmitButton' import { useAppDispatch, useAppSelector } from '@/store' import { selectSettings, setTransactionExecution } from '@/store/settingsSlice' @@ -176,88 +179,88 @@ const SignOrExecuteForm = ({ {children} - - - {canExecute && ( - - )} - - - - {canRelay && ( - div': { - marginTop: '-1px', - borderTopLeftRadius: 0, - borderTopRightRadius: 0, - }, - }} - > - + <> + + + + {canExecute && ( + + )} + + - - )} - - - - {/* Warning message and switch button */} - - - {/* Error messages */} - {isSubmittable && cannotPropose ? ( - - You are currently not an owner of this Safe Account and won't be able to submit this transaction. - - ) : willExecute && isExecutionLoop ? ( - - Cannot execute a transaction from the Safe Account itself, please connect a different account. - - ) : error ? ( - - This transaction will most likely fail.{' '} - {isNewExecutableTx - ? 'To save gas costs, avoid creating the transaction.' - : 'To save gas costs, reject this transaction.'} - - ) : submitError ? ( - Error submitting the transaction. Please try again. - ) : ( - willExecute && - )} - - {/* Info text */} - - You're about to {txId ? '' : 'create and '} - {willExecute ? 'execute' : 'sign'} a transaction and will need to confirm it with your currently connected - wallet. - - - {/* Submit button */} - - {(isOk) => ( - - )} - + + {canRelay && ( + div': { + marginTop: '-1px', + borderTopLeftRadius: 0, + borderTopRightRadius: 0, + }, + }} + > + + + )} + + + + + + {/* Warning message and switch button */} + + + {/* Error messages */} + {isSubmittable && cannotPropose ? ( + + You are currently not an owner of this Safe Account and won't be able to submit this transaction. + + ) : willExecute && isExecutionLoop ? ( + + Cannot execute a transaction from the Safe Account itself, please connect a different account. + + ) : error ? ( + + This transaction will most likely fail.{' '} + {isNewExecutableTx + ? 'To save gas costs, avoid creating the transaction.' + : 'To save gas costs, reject this transaction.'} + + ) : submitError ? ( + Error submitting the transaction. Please try again. + ) : ( + willExecute && + )} + + {/* Info text */} + + You're about to {txId ? '' : 'create and '} + {willExecute ? 'execute' : 'sign'} a transaction and will need to confirm it with your currently connected + wallet. + + + + + ) diff --git a/src/components/tx/security/TransactionSecurityContext/index.tsx b/src/components/tx/security/TransactionSecurityContext/index.tsx new file mode 100644 index 0000000000..58d54f5d6d --- /dev/null +++ b/src/components/tx/security/TransactionSecurityContext/index.tsx @@ -0,0 +1,55 @@ +import { type RedefineModuleResponse } from '@/services/security/modules/RedefineModule' +import { SecuritySeverity } from '@/services/security/modules/types' +import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { createContext, type Dispatch, type SetStateAction, useMemo, useState } from 'react' +import { useRedefine } from '../redefine/useRedefine' + +export const TransactionSecurityContext = createContext<{ + warnings: NonNullable + simulationUuid: string | undefined + balanceChange: RedefineModuleResponse['balanceChange'] + severity: SecuritySeverity | undefined + isLoading: boolean + error: Error | undefined + needsRiskConfirmation: boolean + isRiskConfirmed: boolean + setIsRiskConfirmed: Dispatch> +}>({ + warnings: [], + simulationUuid: undefined, + balanceChange: undefined, + severity: SecuritySeverity.NONE, + isLoading: false, + error: undefined, + needsRiskConfirmation: false, + isRiskConfirmed: false, + setIsRiskConfirmed: () => {}, +}) + +export const TransactionSecurityProvider = ({ + children, + safeTx, +}: { + children: JSX.Element + safeTx: SafeTransaction | undefined +}) => { + const [redefineResponse, redefineError, redefineLoading] = useRedefine(safeTx) + const [isRiskConfirmed, setIsRiskConfirmed] = useState(false) + + const providedValue = useMemo( + () => ({ + severity: redefineResponse?.severity, + simulationUuid: redefineResponse?.payload?.simulation?.uuid, + warnings: redefineResponse?.payload?.issues || [], + balanceChange: redefineResponse?.payload?.balanceChange, + error: redefineError, + isLoading: redefineLoading, + needsRiskConfirmation: !!redefineResponse && redefineResponse.severity >= SecuritySeverity.HIGH, + isRiskConfirmed, + setIsRiskConfirmed, + }), + [isRiskConfirmed, redefineError, redefineLoading, redefineResponse], + ) + + return {children} +} diff --git a/src/components/tx/security/redefine/RedefineBalanceChange/index.tsx b/src/components/tx/security/redefine/RedefineBalanceChange/index.tsx new file mode 100644 index 0000000000..4cea2fd0c5 --- /dev/null +++ b/src/components/tx/security/redefine/RedefineBalanceChange/index.tsx @@ -0,0 +1,157 @@ +import EthHashInfo from '@/components/common/EthHashInfo' +import TokenIcon from '@/components/common/TokenIcon' +import useBalances from '@/hooks/useBalances' +import useChainId from '@/hooks/useChainId' +import { useHasFeature } from '@/hooks/useChains' +import { type RedefineModuleResponse } from '@/services/security/modules/RedefineModule' +import { sameAddress } from '@/utils/addresses' +import { FEATURES } from '@/utils/chains' +import { formatVisualAmount } from '@/utils/formatters' +import { Box, Chip, Grid, SvgIcon, Typography } from '@mui/material' +import { TokenType } from '@safe-global/safe-gateway-typescript-sdk' +import { ErrorBoundary } from '@sentry/react' +import { useContext } from 'react' +import { LoadingLabel } from '../../shared/LoadingLabel' +import { TransactionSecurityContext } from '../../TransactionSecurityContext' +import RedefineLogo from '@/public/images/transactions/redefine.svg' +import RedefineLogoDark from '@/public/images/transactions/redefine-dark-mode.svg' +import ArrowOutwardIcon from '@/public/images/transactions/outgoing.svg' +import ArrowDownwardIcon from '@/public/images/transactions/incoming.svg' + +import css from './styles.module.css' +import { useDarkMode } from '@/hooks/useDarkMode' + +const FungibleBalanceChange = ({ + change, +}: { + change: NonNullable['in' | 'out'][number] & { type: 'ERC20' | 'NATIVE' } +}) => { + const { balances } = useBalances() + + const logoUri = balances.items.find((item) => { + return change.type === 'NATIVE' + ? item.tokenInfo.type === TokenType.NATIVE_TOKEN + : sameAddress(item.tokenInfo.address, change.address) + })?.tokenInfo.logoUri + + return ( + <> + + {formatVisualAmount(change.amount.value, change.decimals)} + + + + {change.symbol} + + + + ) +} + +const NFTBalanceChange = ({ + change, +}: { + change: NonNullable['in' | 'out'][number] & { type: 'ERC721' } +}) => { + const chainId = useChainId() + + return ( + <> + {change.symbol ? ( + + {change.symbol} + + ) : ( + + + + )} + + #{change.tokenId} + + + + ) +} + +const BalanceChange = ({ + change, + positive = false, +}: { + change: NonNullable['in' | 'out'][number] + positive?: boolean +}) => { + return ( + + + {positive ? : } + {change.type === 'ERC721' ? : } + + + ) +} + +const BalanceChanges = () => { + const { balanceChange, isLoading } = useContext(TransactionSecurityContext) + const totalBalanceChanges = balanceChange ? balanceChange.in.length + balanceChange.out.length : 0 + + if (isLoading && !balanceChange) { + return + } + + if (totalBalanceChanges === 0) { + return ( + + None + + ) + } + + return ( + + <> + {balanceChange?.in.map((change, idx) => ( + + ))} + {balanceChange?.out.map((change, idx) => ( + + ))} + + + ) +} + +export const RedefineBalanceChanges = () => { + const isFeatureEnabled = useHasFeature(FEATURES.RISK_MITIGATION) + const isDarkMode = useDarkMode() + + if (!isFeatureEnabled) { + return null + } + + return ( + + + + Balance change + + + + Error showing balance changes
    }> + + + + ) +} diff --git a/src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css b/src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css new file mode 100644 index 0000000000..a91e897fef --- /dev/null +++ b/src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css @@ -0,0 +1,47 @@ +.balanceChanges { + padding: var(--space-2); + max-height: 300px; + overflow-y: auto; + align-items: center; +} + +.balanceChange { + display: flex; + border-radius: 6px; + align-items: center; + margin-bottom: 6px; +} + +.balanceChange:last-child { + margin-bottom: 0; +} + +.nftId { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.categoryChip { + border-radius: 4px; + margin-left: auto; + height: auto; +} + +.head { + border-bottom: 1px solid var(--color-border-light); + padding: var(--space-1) var(--space-2); + + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} + +.box { + border-radius: 6px; + border: 1px solid var(--color-border-light); + margin: var(--space-2) 0; + display: flex; + flex-direction: column; +} diff --git a/src/components/tx/security/redefine/RedefineScanResult/RedefineScanResult.tsx b/src/components/tx/security/redefine/RedefineScanResult/RedefineScanResult.tsx new file mode 100644 index 0000000000..a800657b45 --- /dev/null +++ b/src/components/tx/security/redefine/RedefineScanResult/RedefineScanResult.tsx @@ -0,0 +1,86 @@ +import { useContext } from 'react' +import { SecurityHint, SecurityWarning } from '../../shared/SecurityWarnings' +import { TransactionSecurityContext } from '../../TransactionSecurityContext' +import { SecuritySeverity } from '@/services/security/modules/types' +import { groupBy } from 'lodash' +import { Box, Typography } from '@mui/material' +import ExternalLink from '@/components/common/ExternalLink' +import { FEATURES } from '@/utils/chains' +import { useHasFeature } from '@/hooks/useChains' +import { ErrorBoundary } from '@sentry/react' +import { REDEFINE_SIMULATION_URL } from '@/config/constants' + +const MAX_SHOWN_WARNINGS = 3 + +const ScanWarnings = () => { + /* Hooks */ + const { + warnings, + severity, + isLoading, + error, + simulationUuid, + needsRiskConfirmation, + isRiskConfirmed, + setIsRiskConfirmed, + } = useContext(TransactionSecurityContext) + + /* Evaluate security warnings */ + const relevantWarnings = warnings.filter((warning) => warning.severity !== SecuritySeverity.NONE) + const shownWarnings = relevantWarnings.slice(0, MAX_SHOWN_WARNINGS) + const hiddenWarningCount = warnings.length - shownWarnings.length + const hiddenMaxSeverity = hiddenWarningCount > 0 ? relevantWarnings[MAX_SHOWN_WARNINGS]?.severity : 0 + + const groupedShownWarnings = groupBy(shownWarnings, (warning) => warning.severity) + const sortedSeverities = Object.keys(groupedShownWarnings).sort((a, b) => (Number(a) < Number(b) ? 1 : -1)) + + return ( + + + {sortedSeverities.map((key) => ( + warning.description.short)} + /> + ))} + {hiddenWarningCount > 0 && ( + 1 ? 's' : ''}`]} + /> + )} + + {simulationUuid && ( + + For a comprehensive risk overview,{' '} + + see the full report on Redefine + + + )} + + + ) +} + +export const RedefineScanResult = () => { + const isFeatureEnabled = useHasFeature(FEATURES.RISK_MITIGATION) + + if (!isFeatureEnabled) { + return null + } + + return ( + Error showing scan result
    }> + + + ) +} diff --git a/src/components/tx/security/redefine/useDelegateCallModule.ts b/src/components/tx/security/redefine/useDelegateCallModule.ts new file mode 100644 index 0000000000..4a70f17e82 --- /dev/null +++ b/src/components/tx/security/redefine/useDelegateCallModule.ts @@ -0,0 +1,25 @@ +import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' + +import useAsync from '@/hooks/useAsync' +import useSafeInfo from '@/hooks/useSafeInfo' +import { DelegateCallModule } from '@/services/security/modules/DelegateCallModule' +import type { DelegateCallModuleResponse } from '@/services/security/modules/DelegateCallModule' +import type { SecurityResponse } from '@/services/security/modules/types' + +const DelegateCallModuleInstance = new DelegateCallModule() + +export const useDelegateCallModule = (safeTransaction: SafeTransaction | undefined) => { + const { safe, safeLoaded } = useSafeInfo() + + return useAsync>(() => { + if (!safeTransaction || !safeLoaded) { + return + } + + return DelegateCallModuleInstance.scanTransaction({ + safeTransaction, + safeVersion: safe.version, + chainId: safe.chainId, + }) + }, [safeTransaction, safeLoaded, safe.version, safe.chainId]) +} diff --git a/src/components/tx/security/redefine/useRecipientModule.ts b/src/components/tx/security/redefine/useRecipientModule.ts new file mode 100644 index 0000000000..85702eaa0c --- /dev/null +++ b/src/components/tx/security/redefine/useRecipientModule.ts @@ -0,0 +1,38 @@ +import { useMemo } from 'react' +import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' + +import useAddressBook from '@/hooks/useAddressBook' +import useAsync from '@/hooks/useAsync' +import useSafeInfo from '@/hooks/useSafeInfo' +import { useWeb3ReadOnly } from '@/hooks/wallets/web3' +import { RecipientAddressModule } from '@/services/security/modules/RecipientAddressModule' +import type { RecipientAddressModuleResponse } from '@/services/security/modules/RecipientAddressModule' +import type { SecurityResponse } from '@/services/security/modules/types' + +const RecipientAddressModuleInstance = new RecipientAddressModule() + +export const useRecipientModule = (safeTransaction: SafeTransaction | undefined) => { + const { safe, safeLoaded } = useSafeInfo() + const web3ReadOnly = useWeb3ReadOnly() + const addressBook = useAddressBook() + + const knownAddresses = useMemo(() => { + const owners = safe.owners.map((owner) => owner.value) + const addressBookAddresses = Object.keys(addressBook) + + return Array.from(new Set(owners.concat(addressBookAddresses))) + }, [addressBook, safe.owners]) + + return useAsync>(() => { + if (!safeTransaction || !web3ReadOnly || !safeLoaded) { + return + } + + return RecipientAddressModuleInstance.scanTransaction({ + chainId: safe.chainId, + safeTransaction, + knownAddresses, + provider: web3ReadOnly, + }) + }, [safeTransaction, web3ReadOnly, safeLoaded, safe.chainId, knownAddresses, web3ReadOnly]) +} diff --git a/src/components/tx/security/redefine/useRedefine.test.ts b/src/components/tx/security/redefine/useRedefine.test.ts new file mode 100644 index 0000000000..10a16cb91d --- /dev/null +++ b/src/components/tx/security/redefine/useRedefine.test.ts @@ -0,0 +1,402 @@ +import { act, renderHook, waitFor } from '@/tests/test-utils' +import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' +import { REDEFINE_RETRY_TIMEOUT, useRedefine } from './useRedefine' +import * as useWallet from '@/hooks/wallets/useWallet' +import * as useChains from '@/hooks/useChains' +import type { ConnectedWallet } from '@/hooks/wallets/useOnboard' +import { hexZeroPad } from 'ethers/lib/utils' +import { type RedefineResponse, REDEFINE_ERROR_CODES } from '@/services/security/modules/RedefineModule' +import { SecuritySeverity } from '@/services/security/modules/types' + +const setupFetchStub = (data: any) => (_url: string) => { + return Promise.resolve({ + json: () => Promise.resolve(data), + status: 200, + ok: true, + }) +} + +describe('useRedefine', () => { + let mockUseWallet: jest.SpyInstance + + beforeEach(() => { + jest.resetAllMocks() + jest.useFakeTimers() + mockUseWallet = jest.spyOn(useWallet, 'default') + mockUseWallet.mockImplementation(() => null) + + global.fetch = jest.fn() + }) + it('should return undefined without safeTx', async () => { + const { result } = renderHook(() => useRedefine(undefined)) + + await waitFor(() => { + expect(result.current[0]).toBeUndefined() + expect(result.current[1]).toBeUndefined() + expect(result.current[2]).toBeFalsy() + }) + }) + + it('should return undefined without connected wallet', async () => { + const safeTx: SafeTransaction = { + data: { + baseGas: 0, + data: '0x', + gasPrice: 0, + gasToken: ZERO_ADDRESS, + nonce: 0, + operation: 0, + refundReceiver: ZERO_ADDRESS, + safeTxGas: 0, + to: ZERO_ADDRESS, + value: '0', + }, + signatures: new Map(), + addSignature: () => {}, + encodedSignatures: () => '', + } + + const { result } = renderHook(() => useRedefine(safeTx)) + + await waitFor(() => { + expect(result.current[0]).toBeUndefined() + expect(result.current[1]).toBeUndefined() + expect(result.current[2]).toBeFalsy() + }) + }) + + it('should return undefined without feature enabled', async () => { + const walletAddress = hexZeroPad('0x1', 20) + const safeTx: SafeTransaction = { + data: { + baseGas: 0, + data: '0x', + gasPrice: 0, + gasToken: ZERO_ADDRESS, + nonce: 0, + operation: 0, + refundReceiver: ZERO_ADDRESS, + safeTxGas: 0, + to: ZERO_ADDRESS, + value: '0', + }, + signatures: new Map(), + addSignature: () => {}, + encodedSignatures: () => '', + } + + mockUseWallet.mockImplementation(() => ({ + address: walletAddress, + chainId: '1', + label: 'Testwallet', + provider: {} as any, + })) + + jest.spyOn(useChains, 'useHasFeature').mockReturnValue(false) + + const { result } = renderHook(() => useRedefine(safeTx)) + + await waitFor(() => { + expect(result.current[0]).toBeUndefined() + expect(result.current[1]).toEqual(undefined) + expect(result.current[2]).toBeFalsy() + }) + }) + + it('should handle request errors', async () => { + const walletAddress = hexZeroPad('0x1', 20) + const safeTx: SafeTransaction = { + data: { + baseGas: 0, + data: '0x', + gasPrice: 0, + gasToken: ZERO_ADDRESS, + nonce: 0, + operation: 0, + refundReceiver: ZERO_ADDRESS, + safeTxGas: 0, + to: ZERO_ADDRESS, + value: '0', + }, + signatures: new Map(), + addSignature: () => {}, + encodedSignatures: () => '', + } + + mockUseWallet.mockImplementation(() => ({ + address: walletAddress, + chainId: '1', + label: 'Testwallet', + provider: {} as any, + })) + + jest.spyOn(useChains, 'useHasFeature').mockReturnValue(true) + + const mockFetch = jest.spyOn(global, 'fetch') + mockFetch.mockImplementation(() => Promise.reject({ message: '403 not authorized' })) + + const { result } = renderHook(() => useRedefine(safeTx)) + + await waitFor(() => { + expect(result.current[0]).toBeUndefined() + expect(result.current[1]).toEqual(new Error('Unavailable')) + expect(result.current[2]).toBeFalsy() + }) + }) + + it('should return the redefine issues', async () => { + const walletAddress = hexZeroPad('0x1', 20) + const safeTx: SafeTransaction = { + data: { + baseGas: 0, + data: '0x', + gasPrice: 0, + gasToken: ZERO_ADDRESS, + nonce: 0, + operation: 0, + refundReceiver: ZERO_ADDRESS, + safeTxGas: 0, + to: ZERO_ADDRESS, + value: '0', + }, + signatures: new Map(), + addSignature: () => {}, + encodedSignatures: () => '', + } + + const mockRedefineResponse: RedefineResponse = { + data: { + insights: { + verdict: { + code: 1, + label: 'LOW', + }, + issues: [ + { + category: 'SOME_FAKE_WARNING', + description: { + short: 'Test', + long: 'Just a test', + }, + severity: { + code: 1, + label: 'LOW', + }, + }, + ], + }, + simulation: { + block: '123', + time: '2023-01-01-23:00', + uuid: '123-456-789', + }, + balanceChange: { + in: [ + { + address: hexZeroPad('0x2', 20), + amount: { + normalizedValue: '0.1', + value: '100000000000000000', + }, + decimals: 18, + name: 'Test', + symbol: 'TST', + type: 'ERC20', + }, + ], + out: [], + }, + }, + errors: [], + } + + mockUseWallet.mockImplementation(() => ({ + address: walletAddress, + chainId: '1', + label: 'Testwallet', + provider: {} as any, + })) + + jest.spyOn(useChains, 'useHasFeature').mockReturnValue(true) + + global.fetch = jest.fn().mockImplementation(setupFetchStub(mockRedefineResponse)) + + const mockFetch = jest.spyOn(global, 'fetch') + const { result } = renderHook(() => useRedefine(safeTx)) + + await waitFor(() => { + expect(result.current[0]).toBeDefined() + const response = result.current[0] + expect(response?.severity).toEqual(SecuritySeverity.LOW) + expect(response?.payload?.issues).toHaveLength(1) + expect(response?.payload?.balanceChange?.in).toHaveLength(1) + expect(result.current[1]).toBeUndefined() + expect(result.current[2]).toBeFalsy() + expect(mockFetch).toHaveBeenCalledTimes(1) + }) + + // Should not poll again without error 1000 + await act(() => { + jest.advanceTimersByTime(REDEFINE_RETRY_TIMEOUT) + }) + + expect(mockFetch).toHaveBeenCalledTimes(1) + }) + + it('should poll again on error code 1000', async () => { + const walletAddress = hexZeroPad('0x1', 20) + const safeTx: SafeTransaction = { + data: { + baseGas: 0, + data: '0x', + gasPrice: 0, + gasToken: ZERO_ADDRESS, + nonce: 0, + operation: 0, + refundReceiver: ZERO_ADDRESS, + safeTxGas: 0, + to: ZERO_ADDRESS, + value: '0', + }, + signatures: new Map(), + addSignature: () => {}, + encodedSignatures: () => '', + } + + const mockPartialRedefineResponse: RedefineResponse = { + data: { + insights: { + verdict: { + code: 1, + label: 'LOW', + }, + issues: [ + { + category: 'SOME_FAKE_WARNING', + description: { + short: 'Test', + long: 'Just a test', + }, + severity: { + code: 1, + label: 'LOW', + }, + }, + ], + }, + simulation: { + block: '123', + time: '2023-01-01-23:00', + uuid: '123-456-789', + }, + }, + errors: [ + { + code: REDEFINE_ERROR_CODES.ANALYSIS_IN_PROGRESS, + message: 'Analysis still in progress.', + }, + ], + } + + const mockFullRedefineResponse: RedefineResponse = { + data: { + balanceChange: { + in: [ + { + address: hexZeroPad('0x2', 20), + amount: { + normalizedValue: '0.1', + value: '100000000000000000', + }, + decimals: 18, + name: 'Test', + symbol: 'TST', + type: 'ERC20', + }, + ], + out: [], + }, + simulation: { + block: '123', + time: '2023-01-01-23:00', + uuid: '123-456-789', + }, + insights: { + verdict: { + code: 1, + label: 'LOW', + }, + issues: [ + { + category: 'SOME_FAKE_WARNING', + description: { + short: 'Test', + long: 'Just a test', + }, + severity: { + code: 1, + label: 'LOW', + }, + }, + ], + }, + }, + errors: [], + } + + mockUseWallet.mockImplementation(() => ({ + address: walletAddress, + chainId: '1', + label: 'Testwallet', + provider: {} as any, + })) + + jest.spyOn(useChains, 'useHasFeature').mockReturnValue(true) + + global.fetch = jest.fn().mockImplementation(setupFetchStub(mockPartialRedefineResponse)) + + let mockFetch = jest.spyOn(global, 'fetch') + const { result } = renderHook(() => useRedefine(safeTx)) + + await waitFor(() => { + expect(result.current[0]).toBeDefined() + const response = result.current[0] + expect(response?.severity).toEqual(SecuritySeverity.LOW) + expect(response?.payload?.issues).toHaveLength(1) + expect(response?.payload?.balanceChange).toBeUndefined() + expect(result.current[1]).toBeUndefined() + expect(result.current[2]).toBeTruthy() + + expect(mockFetch).toHaveBeenCalledTimes(1) + }) + + global.fetch = jest.fn().mockImplementation(setupFetchStub(mockFullRedefineResponse)) + + mockFetch = jest.spyOn(global, 'fetch') + + // Should poll again on error 1000 + await act(() => { + jest.advanceTimersByTime(REDEFINE_RETRY_TIMEOUT) + }) + + await waitFor(() => { + expect(result.current[0]).toBeDefined() + const response = result.current[0] + expect(response?.severity).toEqual(SecuritySeverity.LOW) + expect(response?.payload?.issues).toHaveLength(1) + expect(response?.payload?.balanceChange?.in).toHaveLength(1) + expect(result.current[1]).toBeUndefined() + expect(result.current[2]).toBeFalsy() + + expect(mockFetch).toHaveBeenCalledTimes(1) + }) + + // Should not poll again after full result without error 1000 + // Should not poll again without error 1000 + await act(() => { + jest.advanceTimersByTime(REDEFINE_RETRY_TIMEOUT) + }) + expect(mockFetch).toHaveBeenCalledTimes(1) + }) +}) diff --git a/src/components/tx/security/redefine/useRedefine.ts b/src/components/tx/security/redefine/useRedefine.ts new file mode 100644 index 0000000000..d2b1f5ab2a --- /dev/null +++ b/src/components/tx/security/redefine/useRedefine.ts @@ -0,0 +1,86 @@ +import useAsync, { type AsyncResult } from '@/hooks/useAsync' +import { useHasFeature } from '@/hooks/useChains' +import useSafeInfo from '@/hooks/useSafeInfo' +import useWallet from '@/hooks/wallets/useWallet' +import { MODALS_EVENTS, trackEvent } from '@/services/analytics' +import { + RedefineModule, + type RedefineModuleResponse, + REDEFINE_ERROR_CODES, +} from '@/services/security/modules/RedefineModule' +import type { SecurityResponse } from '@/services/security/modules/types' +import { FEATURES } from '@/utils/chains' +import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { useState, useEffect, useMemo } from 'react' + +export const REDEFINE_RETRY_TIMEOUT = 2_000 +const RedefineModuleInstance = new RedefineModule() + +const DEFAULT_ERROR_MESSAGE = 'Unavailable' + +const CRITICAL_ERRORS: Record = { + [1001]: 'Simulation failed', + [2000]: DEFAULT_ERROR_MESSAGE, + [3000]: DEFAULT_ERROR_MESSAGE, +} + +export const useRedefine = ( + safeTransaction: SafeTransaction | undefined, +): AsyncResult> => { + const { safe, safeAddress } = useSafeInfo() + const wallet = useWallet() + const [retryCounter, setRetryCounter] = useState(0) + const isFeatureEnabled = useHasFeature(FEATURES.RISK_MITIGATION) + + const [redefinePayload, redefineErrors, redefineLoading] = useAsync>( + () => { + if (!isFeatureEnabled || !safeTransaction || !wallet?.address) { + return + } + + return RedefineModuleInstance.scanTransaction({ + chainId: Number(safe.chainId), + safeTransaction, + safeAddress, + walletAddress: wallet.address, + threshold: safe.threshold, + }) + }, + [safe.chainId, safe.threshold, safeAddress, safeTransaction, wallet?.address, retryCounter], + false, + ) + + const isAnalyzing = !!redefinePayload?.payload?.errors.some( + (error) => error.code === REDEFINE_ERROR_CODES.ANALYSIS_IN_PROGRESS, + ) + + const loading = redefineLoading || isAnalyzing + + const error = useMemo(() => { + const simulationErrors = + redefinePayload?.payload?.errors.filter((error) => CRITICAL_ERRORS[error.code] !== undefined) ?? [] + const errorMessage = redefineErrors + ? DEFAULT_ERROR_MESSAGE + : simulationErrors.length > 0 + ? CRITICAL_ERRORS[simulationErrors[0].code] + : undefined + return errorMessage ? new Error(errorMessage) : undefined + }, [redefineErrors, redefinePayload?.payload?.errors]) + + useEffect(() => { + if (!isAnalyzing) { + return + } + + let timeoutId = setTimeout(() => setRetryCounter((prev) => prev + 1), REDEFINE_RETRY_TIMEOUT) + return () => clearTimeout(timeoutId) + }, [redefinePayload, isAnalyzing]) + + useEffect(() => { + if (!loading && !error && redefinePayload) { + trackEvent({ ...MODALS_EVENTS.REDEFINE_RESULT, label: redefinePayload.severity }) + } + }, [error, loading, redefinePayload]) + + return [redefinePayload, error, loading] +} diff --git a/src/components/tx/security/shared/LoadingLabel.tsx b/src/components/tx/security/shared/LoadingLabel.tsx new file mode 100644 index 0000000000..268b01dff1 --- /dev/null +++ b/src/components/tx/security/shared/LoadingLabel.tsx @@ -0,0 +1,16 @@ +import { Typography, CircularProgress } from '@mui/material' + +export const LoadingLabel = () => { + return ( + + palette.text.secondary, + }} + /> + Calculating... + + ) +} diff --git a/src/components/tx/security/shared/SecurityWarnings/index.test.ts b/src/components/tx/security/shared/SecurityWarnings/index.test.ts new file mode 100644 index 0000000000..b646fbd37d --- /dev/null +++ b/src/components/tx/security/shared/SecurityWarnings/index.test.ts @@ -0,0 +1,46 @@ +import { SecuritySeverity } from '@/services/security/modules/types' +import { mapSeverityComponentProps } from '.' + +describe('SecurityWarnings', () => { + describe('mapSeverity', () => { + it('should return "error" when the severity is "HIGH', () => { + expect(mapSeverityComponentProps[SecuritySeverity.HIGH].color).toBe('error') + }) + + it('should return "warning" when the severity is "LOW', () => { + expect(mapSeverityComponentProps[SecuritySeverity.LOW].color).toBe('warning') + }) + + it('should return "info" when the severity is "NONE', () => { + expect(mapSeverityComponentProps[SecuritySeverity.NONE].color).toBe('info') + }) + }) + + describe('mapRisk', () => { + it('should return "Critical risk" when the severity is "HIGH', () => { + expect(mapSeverityComponentProps[SecuritySeverity.HIGH].label).toBe('High issue') + }) + + it('should return "Low risk" when the severity is "LOW', () => { + expect(mapSeverityComponentProps[SecuritySeverity.LOW].label).toBe('Low issue') + }) + + it('should return "No issues found" when the severity is "NONE', () => { + expect(mapSeverityComponentProps[SecuritySeverity.NONE].label).toBe('No issues found') + }) + }) + + describe('mapAction', () => { + it('should return "Reject this transaction" when the severity is "HIGH', () => { + expect(mapSeverityComponentProps[SecuritySeverity.HIGH].action).toBe('Reject this transaction') + }) + + it('should return "Review before processing" when the severity is "LOW', () => { + expect(mapSeverityComponentProps[SecuritySeverity.LOW].action).toBe('Review before processing') + }) + + it('should return undefined when the severity is "NONE', () => { + expect(mapSeverityComponentProps[SecuritySeverity.NONE].action).toBe(undefined) + }) + }) +}) diff --git a/src/components/tx/security/shared/SecurityWarnings/index.tsx b/src/components/tx/security/shared/SecurityWarnings/index.tsx new file mode 100644 index 0000000000..f5966d3006 --- /dev/null +++ b/src/components/tx/security/shared/SecurityWarnings/index.tsx @@ -0,0 +1,185 @@ +import { + Alert, + type AlertColor, + SvgIcon, + Typography, + Box, + Grid, + Checkbox, + Accordion, + AccordionSummary, + AccordionDetails, + FormControlLabel, + List, + ListItem, +} from '@mui/material' + +import { SecuritySeverity } from '@/services/security/modules/types' +import AlertIcon from '@/public/images/notifications/alert.svg' + +import css from './styles.module.css' +import { LoadingLabel } from '../LoadingLabel' +import { type Dispatch, type ReactElement, type SetStateAction, useCallback } from 'react' +import RedefineLogo from '@/public/images/transactions/redefine.svg' +import RedefineLogoDark from '@/public/images/transactions/redefine-dark-mode.svg' + +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import Track from '@/components/common/Track' +import { MODALS_EVENTS } from '@/services/analytics' +import { useDarkMode } from '@/hooks/useDarkMode' + +type SecurityWarningProps = { + color: AlertColor + label: string + action?: string +} + +const ACTION_REJECT = 'Reject this transaction' +const ACTION_REVIEW = 'Review before processing' + +export const mapSeverityComponentProps: Record = { + [SecuritySeverity.CRITICAL]: { + action: ACTION_REJECT, + color: 'error', + label: 'Critical issue', + }, + [SecuritySeverity.HIGH]: { + action: ACTION_REJECT, + color: 'error', + label: 'High issue', + }, + [SecuritySeverity.MEDIUM]: { + action: ACTION_REVIEW, + color: 'warning', + label: 'Medium issue', + }, + [SecuritySeverity.LOW]: { + action: ACTION_REVIEW, + color: 'warning', + label: 'Low issue', + }, + [SecuritySeverity.NONE]: { + color: 'info', + label: 'No issues found', + }, +} + +export const SecurityHint = ({ severity, warnings }: { severity: SecuritySeverity; warnings: string[] }) => { + const severityProps = mapSeverityComponentProps[severity] + const pluralizedLabel = `${severityProps.label}${warnings.length > 1 ? 's' : ''}` + return ( + <> + palette[severityProps.color].background }} + icon={ + palette[severityProps.color].main, + }, + }} + /> + } + > + {severity !== SecuritySeverity.NONE && {pluralizedLabel}} + + + {warnings.map((warning) => ( + + {warning} + + ))} + + + + + ) +} + +export const SecurityWarning = ({ + severity, + isLoading, + error, + children, + needsConfirmation, + isConfirmed, + setIsConfirmed, +}: { + severity: SecuritySeverity | undefined + isLoading: boolean + error: Error | undefined + children: ReactElement + needsConfirmation: boolean + isConfirmed: boolean + setIsConfirmed: Dispatch> +}) => { + const isDarkMode = useDarkMode() + const severityProps = severity !== undefined ? mapSeverityComponentProps[severity] : undefined + + const toggleConfirmation = useCallback(() => { + setIsConfirmed((prev) => !prev) + }, [setIsConfirmed]) + + return ( + + + }> + + + + Scan for risks + + + + Powered by{' '} + + + + + {isLoading ? ( + + ) : severityProps ? ( + + {severityProps.label} + + ) : error ? ( + + {error.message} + + ) : null} + + + + {children} + + + {needsConfirmation && ( + + + } + /> + + + )} + + ) +} diff --git a/src/components/tx/security/shared/SecurityWarnings/styles.module.css b/src/components/tx/security/shared/SecurityWarnings/styles.module.css new file mode 100644 index 0000000000..697205454c --- /dev/null +++ b/src/components/tx/security/shared/SecurityWarnings/styles.module.css @@ -0,0 +1,60 @@ +.hint { + padding: var(--space-2); + border: unset; +} + +.hint :global .MuiAlert-icon { + padding: 0; +} + +.hint :global .MuiAlert-message { + padding: 0; +} + +.warning { + padding: var(--space-2) var(--space-4); + background-color: unset; +} + +.warning :global .MuiAlert-message { + padding: 0; +} + +.checkbox { + margin: var(--space-2) 0; +} + +.checkbox :global .MuiCheckbox-root { + padding: 0 12px; +} + +.verdictBox { + border: none; + border-radius: 6px; + border-bottom: 1px solid var(--color-border-light); +} + +.verdictBox :global .Mui-expanded.MuiAccordionSummary-root { + background-color: var(--color-background-paper); + border-bottom: 1px solid var(--color-border-light); +} + +.verdictBox :global .MuiAccordionSummary-root:hover { + background-color: var(--color-background-paper); +} + +.verdictBox:hover { + border-color: var(--color-border-light); +} + +.wrapperBox :global .MuiAccordion-root.Mui-expanded { + border-color: var(--color-border-light) !important; +} + +.wrapperBox { + border-radius: 6px; + border: 1px solid var(--color-border-light); + padding: 0; + margin-top: var(--space-2); + background-color: var(--color-background-main); +} diff --git a/src/config/constants.ts b/src/config/constants.ts index aebb3569b5..db19d1f9d3 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -89,3 +89,7 @@ export const TWITTER_URL = 'https://twitter.com/safe' // Legal export const IS_OFFICIAL_HOST = process.env.NEXT_PUBLIC_IS_OFFICIAL_HOST || false + +// Risk mitigation (Redefine) +export const REDEFINE_SIMULATION_URL = 'https://dashboard.redefine.net/reports/' +export const REDEFINE_REQUEST_URL = 'https://risk-analysis.safe.global/messages' diff --git a/src/hooks/__tests__/useAddressResolver.test.ts b/src/hooks/__tests__/useAddressResolver.test.ts index e0807504b3..f2356f1e6d 100644 --- a/src/hooks/__tests__/useAddressResolver.test.ts +++ b/src/hooks/__tests__/useAddressResolver.test.ts @@ -5,8 +5,6 @@ import * as domains from '@/services/ens' import * as web3 from '@/hooks/wallets/web3' import * as useChains from '@/hooks/useChains' import { renderHook, waitFor } from '@/tests/test-utils' -import type { ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' -import { FEATURES } from '@safe-global/safe-gateway-typescript-sdk' import { JsonRpcProvider } from '@ethersproject/providers' const ADDRESS1 = ethers.utils.hexZeroPad('0x1', 20) @@ -41,10 +39,8 @@ describe('useAddressResolver', () => { const domainsMock = jest.spyOn(domains, 'lookupAddress').mockImplementation(() => { return Promise.resolve('test.eth') }) - jest.spyOn(useChains, 'useCurrentChain').mockReturnValue({ - features: [FEATURES.DOMAIN_LOOKUP], - chainId: '1', - } as ChainInfo) + + jest.spyOn(useChains, 'useHasFeature').mockReturnValue(true) const { result } = renderHook(() => useAddressResolver(ADDRESS1)) @@ -61,10 +57,7 @@ describe('useAddressResolver', () => { const domainsMock = jest.spyOn(domains, 'lookupAddress').mockImplementation(() => { return Promise.resolve('test.eth') }) - jest.spyOn(useChains, 'useCurrentChain').mockReturnValue({ - features: [FEATURES.EIP1559], - chainId: '1', - } as ChainInfo) + jest.spyOn(useChains, 'useHasFeature').mockReturnValue(false) const { result } = renderHook(() => useAddressResolver(ADDRESS1)) diff --git a/src/hooks/useAddressResolver.ts b/src/hooks/useAddressResolver.ts index 09ea0a3c9e..2a44464c7a 100644 --- a/src/hooks/useAddressResolver.ts +++ b/src/hooks/useAddressResolver.ts @@ -1,19 +1,18 @@ import useAddressBook from '@/hooks/useAddressBook' import { useWeb3ReadOnly } from '@/hooks/wallets/web3' import { lookupAddress } from '@/services/ens' -import { FEATURES, hasFeature } from '@/utils/chains' +import { FEATURES } from '@/utils/chains' import { useMemo } from 'react' -import { useCurrentChain } from './useChains' import useAsync from '@/hooks/useAsync' import useDebounce from './useDebounce' +import { useHasFeature } from './useChains' export const useAddressResolver = (address: string) => { const addressBook = useAddressBook() const ethersProvider = useWeb3ReadOnly() const debouncedValue = useDebounce(address, 200) const addressBookName = addressBook[address] - const currentChain = useCurrentChain() - const isDomainLookupEnabled = !!currentChain && hasFeature(currentChain, FEATURES.DOMAIN_LOOKUP) + const isDomainLookupEnabled = useHasFeature(FEATURES.DOMAIN_LOOKUP) const shouldResolve = !addressBookName && isDomainLookupEnabled && !!ethersProvider && !!debouncedValue const [ens, _, isResolving] = useAsync(() => { diff --git a/src/hooks/useChains.ts b/src/hooks/useChains.ts index 88753ce4bb..e6a06c6dd0 100644 --- a/src/hooks/useChains.ts +++ b/src/hooks/useChains.ts @@ -4,6 +4,7 @@ import { type ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' import { useAppSelector } from '@/store' import { selectChainById, selectChains } from '@/store/chainsSlice' import { useChainId } from './useChainId' +import { type FEATURES, hasFeature } from '@/utils/chains' const useChains = (): { configs: ChainInfo[]; error?: string; loading?: boolean } => { const state = useAppSelector(selectChains, isEqual) @@ -25,3 +26,14 @@ export const useCurrentChain = (): ChainInfo | undefined => { const chainInfo = useAppSelector((state) => selectChainById(state, chainId), isEqual) return chainInfo } + +/** + * Checks if a feature is enabled on the current chain. + * + * @param feature name of the feature to check for + * @returns `true`, if the feature is enabled on the current chain. Otherwise `false` + */ +export const useHasFeature = (feature: FEATURES): boolean => { + const currentChain = useCurrentChain() + return !!currentChain && hasFeature(currentChain, feature) +} diff --git a/src/hooks/useIsOnlySpendingLimitBeneficiary.tsx b/src/hooks/useIsOnlySpendingLimitBeneficiary.tsx index 5276527f0f..544d865c34 100644 --- a/src/hooks/useIsOnlySpendingLimitBeneficiary.tsx +++ b/src/hooks/useIsOnlySpendingLimitBeneficiary.tsx @@ -1,13 +1,12 @@ -import { useCurrentChain } from '@/hooks/useChains' -import { FEATURES, hasFeature } from '@/utils/chains' +import { FEATURES } from '@/utils/chains' import { useAppSelector } from '@/store' import { selectSpendingLimits } from '@/store/spendingLimitsSlice' import useWallet from '@/hooks/wallets/useWallet' import useIsSafeOwner from '@/hooks/useIsSafeOwner' +import { useHasFeature } from './useChains' const useIsOnlySpendingLimitBeneficiary = (): boolean => { - const currentChain = useCurrentChain() - const isEnabled = currentChain && hasFeature(currentChain, FEATURES.SPENDING_LIMIT) + const isEnabled = useHasFeature(FEATURES.SPENDING_LIMIT) const spendingLimits = useAppSelector(selectSpendingLimits) const wallet = useWallet() const isSafeOwner = useIsSafeOwner() diff --git a/src/hooks/wallets/web3.ts b/src/hooks/wallets/web3.ts index 768c266b39..f5d20570ad 100644 --- a/src/hooks/wallets/web3.ts +++ b/src/hooks/wallets/web3.ts @@ -3,6 +3,7 @@ import { INFURA_TOKEN, SAFE_APPS_INFURA_TOKEN } from '@/config/constants' import { type EIP1193Provider } from '@web3-onboard/core' import { JsonRpcProvider, Web3Provider } from '@ethersproject/providers' import ExternalStore from '@/services/ExternalStore' +import { EMPTY_DATA } from '@safe-global/safe-core-sdk/dist/src/utils/constants' // RPC helpers const formatRpcServiceUrl = ({ authentication, value }: RpcUri, TOKEN: string): string => { @@ -46,3 +47,9 @@ export const getUserNonce = async (userAddress: string): Promise => { return Promise.reject(error) } } + +export const isSmartContract = async (provider: JsonRpcProvider, address: string): Promise => { + const code = await provider.getCode(address) + + return code !== EMPTY_DATA +} diff --git a/src/services/analytics/events/modals.ts b/src/services/analytics/events/modals.ts index cde5efb841..d13418b99c 100644 --- a/src/services/analytics/events/modals.ts +++ b/src/services/analytics/events/modals.ts @@ -56,4 +56,13 @@ export const MODALS_EVENTS = { action: 'Propose transaction', category: MODALS_CATEGORY, }, + ACCEPT_RISK: { + action: 'Accept transaction risk', + category: MODALS_CATEGORY, + }, + REDEFINE_RESULT: { + action: 'Redefine scan result', + category: MODALS_CATEGORY, + event: EventType.META, + }, } diff --git a/src/services/analytics/gtm.ts b/src/services/analytics/gtm.ts index 85a27d250f..ffc9d18719 100644 --- a/src/services/analytics/gtm.ts +++ b/src/services/analytics/gtm.ts @@ -110,7 +110,7 @@ export const gtmTrack = (eventData: AnalyticsEvent): void => { gtmEvent.eventType = undefined } - if (eventData.label) { + if (eventData.label !== undefined) { gtmEvent.eventLabel = eventData.label } else { // Otherwise, whatever was in the datalayer before will be reused diff --git a/src/services/security/modules/ApprovalModule/index.ts b/src/services/security/modules/ApprovalModule/index.ts new file mode 100644 index 0000000000..b2b8087da6 --- /dev/null +++ b/src/services/security/modules/ApprovalModule/index.ts @@ -0,0 +1,61 @@ +import { APPROVAL_SIGNATURE_HASH } from '@/components/tx/ApprovalEditor/utils/approvals' +import { ERC20__factory } from '@/types/contracts' +import { decodeMultiSendTxs } from '@/utils/transactions' +import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { id } from 'ethers/lib/utils' +import { type SecurityResponse, type SecurityModule, SecuritySeverity } from '../types' + +export type ApprovalModuleResponse = Approval[] + +export type ApprovalModuleRequest = { + safeTransaction: SafeTransaction +} + +export type Approval = { + spender: any + amount: any + tokenAddress: string +} + +const MULTISEND_SIGNATURE_HASH = id('multiSend(bytes)').slice(0, 10) +const ERC20_INTERFACE = ERC20__factory.createInterface() + +export class ApprovalModule implements SecurityModule { + private scanInnerTransaction(txPartial: { to: string; data: string }): Approval[] { + if (txPartial.data.startsWith(APPROVAL_SIGNATURE_HASH)) { + const [spender, amount] = ERC20_INTERFACE.decodeFunctionData('approve', txPartial.data) + return [ + { + amount, + spender, + tokenAddress: txPartial.to, + }, + ] + } + return [] + } + + async scanTransaction(request: ApprovalModuleRequest): Promise> { + const { safeTransaction } = request + const safeTxData = safeTransaction.data.data + const approvalInfos: Approval[] = [] + + if (safeTxData.startsWith(MULTISEND_SIGNATURE_HASH)) { + const innerTxs = decodeMultiSendTxs(safeTxData) + approvalInfos.push(...innerTxs.flatMap((tx) => this.scanInnerTransaction(tx))) + } else { + approvalInfos.push(...this.scanInnerTransaction({ to: safeTransaction.data.to, data: safeTxData })) + } + + if (approvalInfos.length > 0) { + return { + severity: SecuritySeverity.NONE, + payload: approvalInfos, + } + } + + return { + severity: SecuritySeverity.NONE, + } + } +} diff --git a/src/services/security/modules/DelegateCallModule/index.test.ts b/src/services/security/modules/DelegateCallModule/index.test.ts new file mode 100644 index 0000000000..f45b0091c3 --- /dev/null +++ b/src/services/security/modules/DelegateCallModule/index.test.ts @@ -0,0 +1,87 @@ +import { OperationType } from '@safe-global/safe-core-sdk-types' +import { getMultiSendCallOnlyDeployment } from '@safe-global/safe-deployments' +import { hexZeroPad } from 'ethers/lib/utils' + +import { DelegateCallModule } from '.' +import { createMockSafeTransaction, getMockMultiSendCalldata } from '@/tests/transactions' + +describe('DelegateCallModule', () => { + const DelegateCallModuleInstance = new DelegateCallModule() + + it('should not warn about Call operation transactions', async () => { + const recipient = hexZeroPad('0x1', 20) + + const safeTransaction = createMockSafeTransaction({ + to: recipient, + data: '0x', + operation: OperationType.Call, + }) + + const result = await DelegateCallModuleInstance.scanTransaction({ + safeTransaction, + chainId: '5', + safeVersion: '1.3.0', + }) + + expect(result).toEqual({ + severity: 0, + }) + }) + + it('should not warn about MultiSendCallOnly DelegateCall operation transactions', async () => { + const CHAIN_ID = '5' + const SAFE_VERSION = '1.3.0' + + const multiSend = getMultiSendCallOnlyDeployment({ + network: CHAIN_ID, + version: SAFE_VERSION, + })!.defaultAddress + + const recipient1 = hexZeroPad('0x2', 20) + const recipient2 = hexZeroPad('0x3', 20) + + const data = getMockMultiSendCalldata([recipient1, recipient2]) + + const safeTransaction = createMockSafeTransaction({ + to: multiSend, + data, + operation: OperationType.DelegateCall, + }) + + const result = await DelegateCallModuleInstance.scanTransaction({ + safeTransaction, + chainId: CHAIN_ID, + safeVersion: SAFE_VERSION, + }) + + expect(result).toEqual({ + severity: 0, + }) + }) + + it('should warn about non-MultiSendCallOnly DelegateCall operation transactions', async () => { + const recipient = hexZeroPad('0x1', 20) + + const safeTransaction = createMockSafeTransaction({ + to: recipient, + data: '0x', + operation: OperationType.DelegateCall, + }) + + const result = await DelegateCallModuleInstance.scanTransaction({ + safeTransaction, + chainId: '5', + safeVersion: '1.3.0', + }) + + expect(result).toEqual({ + severity: 3, + payload: { + description: { + long: 'This transaction is a DelegateCall. It calls a smart contract that will be able to modify your Safe Account.', + short: 'Unexpected DelegateCall', + }, + }, + }) + }) +}) diff --git a/src/services/security/modules/DelegateCallModule/index.ts b/src/services/security/modules/DelegateCallModule/index.ts new file mode 100644 index 0000000000..489f5a5ab9 --- /dev/null +++ b/src/services/security/modules/DelegateCallModule/index.ts @@ -0,0 +1,53 @@ +import { OperationType } from '@safe-global/safe-core-sdk-types' +import { getMultiSendCallOnlyDeployment } from '@safe-global/safe-deployments' +import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' +import type { SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' + +import { SecuritySeverity } from '../types' +import type { SecurityModule, SecurityResponse } from '../types' + +type DelegateCallModuleRequest = { + chainId: string + safeVersion: SafeInfo['version'] + safeTransaction: SafeTransaction +} + +export type DelegateCallModuleResponse = { + description: { + short: string + long: string + } +} + +export class DelegateCallModule implements SecurityModule { + private isUnexpectedDelegateCall(request: DelegateCallModuleRequest): boolean { + const { chainId, safeTransaction, safeVersion } = request + + if (safeTransaction.data.operation !== OperationType.DelegateCall) { + return false + } + + // We need not check for nested delegate calls as we only use MultiSendCallOnly in the UI + const multiSendDeployment = getMultiSendCallOnlyDeployment({ network: chainId, version: safeVersion ?? undefined }) + + return multiSendDeployment?.defaultAddress !== safeTransaction.data.to + } + + async scanTransaction(request: DelegateCallModuleRequest): Promise> { + if (!this.isUnexpectedDelegateCall(request)) { + return { + severity: SecuritySeverity.NONE, + } + } + + return { + severity: SecuritySeverity.HIGH, + payload: { + description: { + short: 'Unexpected DelegateCall', + long: 'This transaction is a DelegateCall. It calls a smart contract that will be able to modify your Safe Account.', + }, + }, + } + } +} diff --git a/src/services/security/modules/RecipientAddressModule/index.test.ts b/src/services/security/modules/RecipientAddressModule/index.test.ts new file mode 100644 index 0000000000..93005099dd --- /dev/null +++ b/src/services/security/modules/RecipientAddressModule/index.test.ts @@ -0,0 +1,992 @@ +import * as sdk from '@safe-global/safe-gateway-typescript-sdk' +import { OperationType } from '@safe-global/safe-core-sdk-types' +import { ethers } from 'ethers' +import { hexZeroPad } from 'ethers/lib/utils' +import type { JsonRpcProvider } from '@ethersproject/providers' +import type { SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' + +import * as web3 from '@/hooks/wallets/web3' +import { RecipientAddressModule } from '.' +import { + createMockSafeTransaction, + getMockErc20TransferCalldata, + getMockErc721TransferFromCalldata, + getMockErc721SafeTransferFromCalldata, + getMockErc721SafeTransferFromWithBytesCalldata, + getMockMultiSendCalldata, +} from '@/tests/transactions' + +describe('RecipientAddressModule', () => { + const isSmartContractSpy = jest.spyOn(web3, 'isSmartContract') + + const mockGetBalance = jest.fn() + const mockProvider = { + getBalance: mockGetBalance, + } as unknown as JsonRpcProvider + + const mockGetSafeInfo = jest.spyOn(sdk, 'getSafeInfo') + + beforeEach(() => { + jest.clearAllMocks() + }) + + const RecipientAddressModuleInstance = new RecipientAddressModule() + + it('should not warn if the address(es) is/are known', async () => { + isSmartContractSpy.mockImplementation(() => Promise.resolve(false)) + mockGetBalance.mockImplementation(() => Promise.resolve(ethers.BigNumber.from(1))) + mockGetSafeInfo.mockImplementation(() => Promise.reject('Safe not found')) + + const recipient = hexZeroPad('0x1', 20) + + const safeTransaction = createMockSafeTransaction({ + to: recipient, + data: '0x', + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [recipient], + }) + + expect(result).toEqual({ + severity: 0, + }) + + // Don't check further if the recipient is known + expect(isSmartContractSpy).not.toHaveBeenCalled() + }) + + describe('it should warn if the address(es) is/are not known', () => { + beforeEach(() => { + isSmartContractSpy.mockImplementation(() => Promise.resolve(false)) + mockGetBalance.mockImplementation(() => Promise.resolve(ethers.BigNumber.from(1))) + mockGetSafeInfo.mockImplementation(() => Promise.reject('Safe not found')) + }) + + // ERC-20 + it('should warn about recipient of ERC-20 transfer recipients', async () => { + const erc20 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc20TransferCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc20, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + ], + }) + }) + + // ERC-721 + it('should warn about recipient of ERC-721 transferFrom recipients', async () => { + const erc721 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc721TransferFromCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc721, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + ], + }) + }) + + it('should warn about recipient of ERC-721 safeTransferFrom(address,address,uint256) recipients', async () => { + const erc721 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc721SafeTransferFromCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc721, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + ], + }) + }) + + it('should warn about recipient of ERC-721 safeTransferFrom(address,address,uint256,bytes) recipients', async () => { + const erc721 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc721SafeTransferFromWithBytesCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc721, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + ], + }) + }) + + // multiSend + it('should warn about recipient(s) of multiSend recipients', async () => { + const multiSend = hexZeroPad('0x1', 20) + + const recipient1 = hexZeroPad('0x2', 20) + const recipient2 = hexZeroPad('0x3', 20) + + const data = getMockMultiSendCalldata([recipient1, recipient2]) + + const safeTransaction = createMockSafeTransaction({ + to: multiSend, + data, + operation: OperationType.DelegateCall, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(2) + expect(mockGetBalance).toHaveBeenCalledTimes(2) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient1, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 1, + address: recipient2, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + ], + }) + }) + + // Other + // Covered in test below: "should warn about recipient of native transfer recipients / should not warn if the address(es) is/are used" + }) + + it('should warn about recipient of native transfer recipients / should not warn if the address(es) is/are used', async () => { + isSmartContractSpy.mockImplementation(() => Promise.resolve(false)) + mockGetBalance.mockImplementation(() => Promise.resolve(ethers.BigNumber.from(1))) + mockGetSafeInfo.mockImplementation(() => Promise.reject('Safe not found')) + + const recipient = hexZeroPad('0x1', 20) + + const safeTransaction = createMockSafeTransaction({ + to: recipient, + data: '0x', + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + ], + }) + }) + + describe('it should warn if the address(es) is/are unused', () => { + beforeEach(() => { + isSmartContractSpy.mockImplementation(() => Promise.resolve(false)) + mockGetBalance.mockImplementation(() => Promise.resolve(ethers.BigNumber.from(0))) + mockGetSafeInfo.mockImplementation(() => Promise.reject('Safe not found')) + }) + + // ERC-20 + it('should warn about recipient of ERC-20 transfer recipients', async () => { + const erc20 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc20TransferCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc20, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 1, + address: recipient, + description: { + short: 'Address seems to be unused', + long: 'The address has no native token balance and is not a smart contract', + }, + type: 'UNUSED_ADDRESS', + }, + ], + }) + }) + + // ERC-721 + it('should warn about recipient of ERC-721 transferFrom recipients', async () => { + const erc721 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc721TransferFromCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc721, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 1, + address: recipient, + description: { + short: 'Address seems to be unused', + long: 'The address has no native token balance and is not a smart contract', + }, + type: 'UNUSED_ADDRESS', + }, + ], + }) + }) + + it('should warn about recipient of ERC-721 safeTransferFrom(address,address,uint256) recipients', async () => { + const erc721 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc721SafeTransferFromCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc721, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 1, + address: recipient, + description: { + short: 'Address seems to be unused', + long: 'The address has no native token balance and is not a smart contract', + }, + type: 'UNUSED_ADDRESS', + }, + ], + }) + }) + + it('should warn about recipient of ERC-721 safeTransferFrom(address,address,uint256,bytes) recipients', async () => { + const erc721 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc721SafeTransferFromWithBytesCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc721, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 1, + address: recipient, + description: { + short: 'Address seems to be unused', + long: 'The address has no native token balance and is not a smart contract', + }, + type: 'UNUSED_ADDRESS', + }, + ], + }) + }) + + // multiSend + it('should warn about recipient(s) of multiSend recipients', async () => { + const multiSend = hexZeroPad('0x1', 20) + + const recipient1 = hexZeroPad('0x2', 20) + const recipient2 = hexZeroPad('0x3', 20) + + const data = getMockMultiSendCalldata([recipient1, recipient2]) + + const safeTransaction = createMockSafeTransaction({ + to: multiSend, + data, + operation: OperationType.DelegateCall, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(2) + expect(mockGetBalance).toHaveBeenCalledTimes(2) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient1, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 1, + address: recipient1, + description: { + short: 'Address seems to be unused', + long: 'The address has no native token balance and is not a smart contract', + }, + type: 'UNUSED_ADDRESS', + }, + { + severity: 1, + address: recipient2, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 1, + address: recipient2, + description: { + short: 'Address seems to be unused', + long: 'The address has no native token balance and is not a smart contract', + }, + type: 'UNUSED_ADDRESS', + }, + ], + }) + }) + + // Other + it('should warn about recipient of native transfer recipients', async () => { + const recipient = hexZeroPad('0x1', 20) + + const safeTransaction = createMockSafeTransaction({ + to: recipient, + data: '0x', + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 1, + address: recipient, + description: { + short: 'Address seems to be unused', + long: 'The address has no native token balance and is not a smart contract', + }, + type: 'UNUSED_ADDRESS', + }, + ], + }) + }) + }) + + it('should not warn if the address(s) is/are Safe(s) deployed on the current network', async () => { + isSmartContractSpy.mockImplementation(() => Promise.resolve(false)) + mockGetBalance.mockImplementation(() => Promise.resolve(ethers.BigNumber.from(1))) + mockGetSafeInfo.mockImplementation(() => Promise.resolve({} as SafeInfo)) + + const recipient = hexZeroPad('0x1', 20) + + const safeTransaction = createMockSafeTransaction({ + to: recipient, + data: '0x', + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '1', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + // Don't check as on mainnet + expect(mockGetSafeInfo).not.toHaveBeenCalled() + + expect(result).toEqual({ + severity: 1, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + ], + }) + }) + + describe('it should warn if the address(es) is/are Safe(s) deployed on mainnet but not the current network', () => { + beforeEach(() => { + isSmartContractSpy.mockImplementation(() => Promise.resolve(false)) + mockGetBalance.mockImplementation(() => Promise.resolve(ethers.BigNumber.from(1))) + mockGetSafeInfo.mockImplementation(() => Promise.resolve({} as SafeInfo)) + }) + + // ERC-20 + it('should warn about recipient of ERC-20 transfer recipients', async () => { + const erc20 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc20TransferCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc20, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '5', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + expect(mockGetSafeInfo).toHaveBeenCalledTimes(1) + + expect(result).toEqual({ + severity: 3, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 3, + address: recipient, + description: { + short: 'Target Safe not deployed on current network', + long: 'The address is a Safe on mainnet, but it is not deployed on the current network', + }, + type: 'SAFE_ON_WRONG_CHAIN', + }, + ], + }) + }) + + // ERC-721 + it('should warn about recipient of ERC-721 transferFrom recipients', async () => { + const erc721 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc721TransferFromCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc721, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '5', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + expect(mockGetSafeInfo).toHaveBeenCalledTimes(1) + + expect(result).toEqual({ + severity: 3, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 3, + address: recipient, + description: { + short: 'Target Safe not deployed on current network', + long: 'The address is a Safe on mainnet, but it is not deployed on the current network', + }, + type: 'SAFE_ON_WRONG_CHAIN', + }, + ], + }) + }) + + it('should warn about recipient of ERC-721 safeTransferFrom(address,address,uint256) recipients', async () => { + const erc721 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc721SafeTransferFromCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc721, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '5', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + expect(mockGetSafeInfo).toHaveBeenCalledTimes(1) + + expect(result).toEqual({ + severity: 3, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 3, + address: recipient, + description: { + short: 'Target Safe not deployed on current network', + long: 'The address is a Safe on mainnet, but it is not deployed on the current network', + }, + type: 'SAFE_ON_WRONG_CHAIN', + }, + ], + }) + }) + + it('should warn about recipient of ERC-721 safeTransferFrom(address,address,uint256,bytes) recipients', async () => { + const erc721 = hexZeroPad('0x1', 20) + + const recipient = hexZeroPad('0x2', 20) + const data = getMockErc721SafeTransferFromWithBytesCalldata(recipient) + + const safeTransaction = createMockSafeTransaction({ + to: erc721, + data, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '5', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + expect(mockGetSafeInfo).toHaveBeenCalledTimes(1) + + expect(result).toEqual({ + severity: 3, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 3, + address: recipient, + description: { + short: 'Target Safe not deployed on current network', + long: 'The address is a Safe on mainnet, but it is not deployed on the current network', + }, + type: 'SAFE_ON_WRONG_CHAIN', + }, + ], + }) + }) + + // multiSend + it('should warn about recipient(s) of multiSend recipients', async () => { + const multiSend = hexZeroPad('0x1', 20) + + const recipient1 = hexZeroPad('0x2', 20) + const recipient2 = hexZeroPad('0x3', 20) + + const data = getMockMultiSendCalldata([recipient1, recipient2]) + + const safeTransaction = createMockSafeTransaction({ + to: multiSend, + data, + operation: OperationType.DelegateCall, + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '5', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(2) + expect(mockGetBalance).toHaveBeenCalledTimes(2) + expect(mockGetSafeInfo).toHaveBeenCalledTimes(2) + + expect(result).toEqual({ + severity: 3, + payload: [ + { + severity: 1, + address: recipient1, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 3, + address: recipient1, + description: { + short: 'Target Safe not deployed on current network', + long: 'The address is a Safe on mainnet, but it is not deployed on the current network', + }, + type: 'SAFE_ON_WRONG_CHAIN', + }, + { + severity: 1, + address: recipient2, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 3, + address: recipient2, + description: { + short: 'Target Safe not deployed on current network', + long: 'The address is a Safe on mainnet, but it is not deployed on the current network', + }, + type: 'SAFE_ON_WRONG_CHAIN', + }, + ], + }) + }) + + // Other + it('should warn about recipient of native transfer recipients', async () => { + const recipient = hexZeroPad('0x1', 20) + + const safeTransaction = createMockSafeTransaction({ + to: recipient, + data: '0x', + }) + + const result = await RecipientAddressModuleInstance.scanTransaction({ + safeTransaction, + provider: mockProvider, + chainId: '5', + knownAddresses: [], + }) + + expect(isSmartContractSpy).toHaveBeenCalledTimes(1) + expect(mockGetBalance).toHaveBeenCalledTimes(1) + expect(mockGetSafeInfo).toHaveBeenCalledTimes(1) + + expect(result).toEqual({ + severity: 3, + payload: [ + { + severity: 1, + address: recipient, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: 'UNKNOWN_ADDRESS', + }, + { + severity: 3, + address: recipient, + description: { + short: 'Target Safe not deployed on current network', + long: 'The address is a Safe on mainnet, but it is not deployed on the current network', + }, + type: 'SAFE_ON_WRONG_CHAIN', + }, + ], + }) + }) + }) +}) diff --git a/src/services/security/modules/RecipientAddressModule/index.ts b/src/services/security/modules/RecipientAddressModule/index.ts new file mode 100644 index 0000000000..aa514baea2 --- /dev/null +++ b/src/services/security/modules/RecipientAddressModule/index.ts @@ -0,0 +1,143 @@ +import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' +import type { JsonRpcProvider } from '@ethersproject/providers' + +import { getSafeInfo } from '@safe-global/safe-gateway-typescript-sdk' +import { isSmartContract } from '@/hooks/wallets/web3' +import { sameAddress } from '@/utils/addresses' +import { getTransactionRecipients } from '@/utils/transaction-calldata' +import { SecuritySeverity } from '../types' +import type { SecurityResponse, SecurityModule } from '../types' + +type RecipientAddressModuleWarning = { + severity: SecuritySeverity + type: RecipietAddressIssueType + address: string + description: { + short: string + long: string + } +} + +export type RecipientAddressModuleResponse = Array + +export type RecipientAddressModuleRequest = { + knownAddresses: string[] + safeTransaction: SafeTransaction + provider: JsonRpcProvider + chainId: string +} + +export const enum RecipietAddressIssueType { + UNKNOWN_ADDRESS = 'UNKNOWN_ADDRESS', + UNUSED_ADDRESS = 'UNUSED_ADDRESS', + SAFE_ON_WRONG_CHAIN = 'SAFE_ON_WRONG_CHAIN', +} + +const MAINNET_CHAIN_ID = '1' + +export class RecipientAddressModule + implements SecurityModule +{ + private isKnownAddress(knownAddresses: string[], address: string): boolean { + return knownAddresses.some((knownAddress) => sameAddress(knownAddress, address)) + } + + private async shouldWarnOfMainnetSafe(currentChainId: string, address: string): Promise { + // We only check if the address is a Safe on mainnet to reduce the number of requests + if (currentChainId === MAINNET_CHAIN_ID) { + return false + } + + try { + await getSafeInfo(MAINNET_CHAIN_ID, address) + return true + } catch { + return false + } + } + + private async checkAddress( + chainId: string, + knownAddresses: Array, + address: string, + provider: JsonRpcProvider, + ): Promise> { + const warnings: Array = [] + + if (this.isKnownAddress(knownAddresses, address)) { + return warnings + } + + if (await isSmartContract(provider, address)) { + return warnings + } + + warnings.push({ + severity: SecuritySeverity.LOW, + address, + description: { + short: 'Address is not known', + long: 'The address is not an owner or present in your address book and is not a smart contract', + }, + type: RecipietAddressIssueType.UNKNOWN_ADDRESS, + }) + + const [balance, shouldWarnOfMainnetSafe] = await Promise.all([ + provider.getBalance(address), + this.shouldWarnOfMainnetSafe(chainId, address), + ]) + + if (balance.eq(0)) { + warnings.push({ + severity: SecuritySeverity.LOW, + address, + description: { + short: 'Address seems to be unused', + long: 'The address has no native token balance and is not a smart contract', + }, + type: RecipietAddressIssueType.UNUSED_ADDRESS, + }) + } + + if (shouldWarnOfMainnetSafe) { + warnings.push({ + severity: SecuritySeverity.HIGH, + address, + description: { + short: 'Target Safe not deployed on current network', + long: 'The address is a Safe on mainnet, but it is not deployed on the current network', + }, + type: RecipietAddressIssueType.SAFE_ON_WRONG_CHAIN, + }) + } + + return warnings + } + + async scanTransaction( + request: RecipientAddressModuleRequest, + ): Promise> { + const { safeTransaction, provider, chainId, knownAddresses } = request + + const uniqueRecipients = Array.from(new Set(getTransactionRecipients(safeTransaction.data))) + + const warnings = ( + await Promise.all( + uniqueRecipients.map((address) => this.checkAddress(chainId, knownAddresses, address, provider)), + ) + ).flat() + + if (warnings.length === 0) { + return { + severity: SecuritySeverity.NONE, + } + } + + const severity = Math.max(...warnings.map((warning) => warning.severity)) + + return { + severity, + payload: warnings, + } + } +} diff --git a/src/services/security/modules/RedefineModule/index.ts b/src/services/security/modules/RedefineModule/index.ts new file mode 100644 index 0000000000..e3dd54a5bf --- /dev/null +++ b/src/services/security/modules/RedefineModule/index.ts @@ -0,0 +1,154 @@ +import { REDEFINE_REQUEST_URL } from '@/config/constants' +import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { generateTypedData } from '@safe-global/safe-core-sdk-utils' +import { type SecurityResponse, type SecurityModule, SecuritySeverity } from '../types' + +export const enum REDEFINE_ERROR_CODES { + ANALYSIS_IN_PROGRESS = 1000, + SIMULATION_FAILED = 1001, + INPUT_VALIDATION = 2000, + BAD_REQUEST = 3000, +} + +const redefineSeverityMap: Record = { + CRITICAL: SecuritySeverity.CRITICAL, + HIGH: SecuritySeverity.HIGH, + MEDIUM: SecuritySeverity.MEDIUM, + LOW: SecuritySeverity.LOW, + NO_ISSUES: SecuritySeverity.NONE, +} + +export type RedefineModuleRequest = { + chainId: number + safeAddress: string + walletAddress: string + safeTransaction: SafeTransaction + threshold: number +} + +export type RedefineModuleResponse = { + issues?: Array< + Omit['insights']['issues'][number], 'severity'> & { + severity: SecuritySeverity + } + > + balanceChange?: NonNullable['balanceChange'] + simulation?: NonNullable['simulation'] + errors: RedefineResponse['errors'] +} + +type RedefinePayload = { + chainId: number + domain?: string + payload: { + method: 'eth_signTypedData_v4' + params: [string, string] + } +} + +type RedefineSeverity = { + code: number + label: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | 'NO_ISSUES' +} + +type RedefineBalanceChange = + | { + address: string + amount: { + value: string + normalizedValue: string + } + type: 'ERC20' + symbol: string + decimals: number + name: string + } + | { + amount: { + value: string + normalizedValue: string + } + type: 'NATIVE' + symbol: string + decimals: number + name: string + } + | { type: 'ERC721'; address: string; tokenId: string; name?: string; symbol?: string } + +export type RedefineResponse = { + data?: { + balanceChange?: { + in: RedefineBalanceChange[] + out: RedefineBalanceChange[] + } + insights: { + issues: { + description: { + short: string + long: string + } + severity: RedefineSeverity + category: string + }[] + verdict: RedefineSeverity + } + simulation: { + uuid: string + time: string + block: string + } + } + errors: { + code: number + message: string + extendedInfo?: Record + }[] +} + +export class RedefineModule implements SecurityModule { + async scanTransaction(request: RedefineModuleRequest): Promise> { + const { chainId, safeAddress } = request + + const txTypedData = generateTypedData({ + safeAddress, + safeVersion: '1.3.0', // TODO: pass to module, taking into account that lower Safe versions don't have chainId in payload + chainId, + safeTransactionData: request.safeTransaction.data, + }) + + const payload: RedefinePayload = { + chainId, + payload: { + method: 'eth_signTypedData_v4', + params: [safeAddress, JSON.stringify(txTypedData)], + }, + } + + const res = await fetch(REDEFINE_REQUEST_URL, { + method: 'POST', + headers: { + 'content-type': 'application/JSON', + }, + body: JSON.stringify(payload), + }) + + if (!res.ok) { + throw new Error('Redefine scan failed', await res.json()) + } + + const result = (await res.json()) as RedefineResponse + + return { + severity: result.data ? redefineSeverityMap[result.data.insights.verdict.label] : SecuritySeverity.NONE, + payload: { + issues: result.data?.insights.issues.map((issue) => ({ + ...issue, + severity: redefineSeverityMap[issue.severity.label], + })), + balanceChange: result.data?.balanceChange, + simulation: result.data?.simulation, + errors: result.errors, + }, + } + } +} diff --git a/src/services/security/modules/types.ts b/src/services/security/modules/types.ts new file mode 100644 index 0000000000..4c46aafac3 --- /dev/null +++ b/src/services/security/modules/types.ts @@ -0,0 +1,21 @@ +export const enum SecuritySeverity { + NONE, + LOW, + MEDIUM, + HIGH, + CRITICAL, +} + +export type SecurityResponse = + | { + severity: SecuritySeverity + payload: Res + } + | { + severity: SecuritySeverity.NONE + payload?: never + } + +export interface SecurityModule { + scanTransaction(request: Req): Promise> +} diff --git a/src/tests/transactions.ts b/src/tests/transactions.ts new file mode 100644 index 0000000000..3bc0d1bb23 --- /dev/null +++ b/src/tests/transactions.ts @@ -0,0 +1,97 @@ +import { ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' +import { ethers } from 'ethers' +import { OperationType } from '@safe-global/safe-core-sdk-types' +import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' + +import { ERC20__factory, ERC721__factory, Multi_send__factory } from '@/types/contracts' + +export const getMockErc20TransferCalldata = (to: string) => { + const erc20Interface = ERC20__factory.createInterface() + return erc20Interface.encodeFunctionData('transfer', [ + to, + 0, // value + ]) +} + +export const getMockErc721TransferFromCalldata = (to: string) => { + const erc721Interface = ERC721__factory.createInterface() + return erc721Interface.encodeFunctionData('transferFrom', [ + ZERO_ADDRESS, // from + to, + 0, // value + ]) +} + +export const getMockErc721SafeTransferFromCalldata = (to: string) => { + const erc721Interface = ERC721__factory.createInterface() + return erc721Interface.encodeFunctionData('safeTransferFrom(address,address,uint256)', [ + ZERO_ADDRESS, // from + to, + 0, // value + ]) +} + +export const getMockErc721SafeTransferFromWithBytesCalldata = (to: string) => { + const erc721Interface = ERC721__factory.createInterface() + return erc721Interface.encodeFunctionData('safeTransferFrom(address,address,uint256,bytes)', [ + ZERO_ADDRESS, // from + to, + 0, // value + '0x', // bytes + ]) +} + +export const getMockMultiSendCalldata = (recipients: Array): string => { + // MultiSendCallOnly + const OPERATION = 0 + + const data = '0x' + + const internalTransactions = recipients.map((recipient) => { + return ethers.utils.solidityPack( + ['uint8', 'address', 'uint256', 'uint256', 'bytes'], + [ + OPERATION, + recipient, + 0, // value + data.length, // dataLength + data, // data + ], + ) + }) + + const multiSendInterface = Multi_send__factory.createInterface() + return multiSendInterface.encodeFunctionData('multiSend', [ethers.utils.concat(internalTransactions)]) +} + +export const createMockSafeTransaction = ({ + to, + data, + operation = OperationType.Call, +}: { + to: string + data: string + operation?: OperationType +}): SafeTransaction => { + return { + data: { + to, + data, + baseGas: 0, + gasPrice: 0, + gasToken: ZERO_ADDRESS, + nonce: 1, + operation, + refundReceiver: ZERO_ADDRESS, + safeTxGas: 0, + value: '0x0', + }, + signatures: new Map(), + addSignature: () => { + throw new Error('Function not implemented.') + }, + encodedSignatures: () => { + throw new Error('Function not implemented.') + }, + } +} diff --git a/src/utils/chains.ts b/src/utils/chains.ts index 79c6d0eac5..bbecb4d5f4 100644 --- a/src/utils/chains.ts +++ b/src/utils/chains.ts @@ -13,6 +13,7 @@ export enum FEATURES { DEFAULT_TOKENLIST = 'DEFAULT_TOKENLIST', RELAYING = 'RELAYING', EIP1271 = 'EIP1271', + RISK_MITIGATION = 'RISK_MITIGATION', } export const hasFeature = (chain: ChainInfo, feature: FEATURES): boolean => { diff --git a/src/utils/transaction-calldata.ts b/src/utils/transaction-calldata.ts new file mode 100644 index 0000000000..5a4caff286 --- /dev/null +++ b/src/utils/transaction-calldata.ts @@ -0,0 +1,77 @@ +import { id } from 'ethers/lib/utils' +import type { FunctionFragment } from 'ethers/lib/utils' +import type { BaseTransaction } from '@safe-global/safe-apps-sdk' + +import { Multi_send__factory } from '@/types/contracts/factories/@safe-global/safe-deployments/dist/assets/v1.3.0' +import { ERC20__factory } from '@/types/contracts/factories/@openzeppelin/contracts/build/contracts/ERC20__factory' +import { ERC721__factory } from '@/types/contracts/factories/@openzeppelin/contracts/build/contracts/ERC721__factory' +import { decodeMultiSendTxs } from '@/utils/transactions' + +const isCalldata = (data: string, fragment: FunctionFragment): boolean => { + const signature = fragment.format() + const signatureId = id(signature).slice(0, 10) + return data.startsWith(signatureId) +} + +// ERC-20 +const erc20Interface = ERC20__factory.createInterface() +const transferFragment = erc20Interface.getFunction('transfer') +const isErc20TransferCalldata = (data: string): boolean => { + return isCalldata(data, transferFragment) +} + +// ERC-721 +const erc721Interface = ERC721__factory.createInterface() +const transferFromFragment = erc721Interface.getFunction('transferFrom') +const isErc721TransferFromCalldata = (data: string): boolean => { + return isCalldata(data, transferFromFragment) +} + +const safeTransferFromFragment = erc721Interface.getFunction('safeTransferFrom(address,address,uint256)') +const isErc721SafeTransferFromCalldata = (data: string): boolean => { + return isCalldata(data, safeTransferFromFragment) +} + +const safeTransferFromWithBytesFragment = erc721Interface.getFunction('safeTransferFrom(address,address,uint256,bytes)') +const isErc721SafeTransferFromWithBytesCalldata = (data: string): boolean => { + return isCalldata(data, safeTransferFromWithBytesFragment) +} + +// MultiSend +const multiSendInterface = Multi_send__factory.createInterface() +const multiSendFragment = multiSendInterface.getFunction('multiSend') +const isMultiSendCalldata = (data: string): boolean => { + return isCalldata(data, multiSendFragment) +} + +export const getTransactionRecipients = ({ data, to }: BaseTransaction): Array => { + // ERC-20 + if (isErc20TransferCalldata(data)) { + const [to] = erc20Interface.decodeFunctionData(transferFragment, data) + return [to] + } + + // ERC-721 + if (isErc721TransferFromCalldata(data)) { + const [, to] = erc721Interface.decodeFunctionData(transferFromFragment, data) + return [to] + } + + if (isErc721SafeTransferFromCalldata(data)) { + const [, to] = erc721Interface.decodeFunctionData(safeTransferFromFragment, data) + return [to] + } + + if (isErc721SafeTransferFromWithBytesCalldata(data)) { + const [, to] = erc721Interface.decodeFunctionData(safeTransferFromWithBytesFragment, data) + return [to] + } + + // multiSend + if (isMultiSendCalldata(data)) { + return decodeMultiSendTxs(data).flatMap(getTransactionRecipients) + } + + // Other (e.g. native transfer) + return [to] +} diff --git a/src/utils/transactions.ts b/src/utils/transactions.ts index 4477269a99..f5dd81f4a2 100644 --- a/src/utils/transactions.ts +++ b/src/utils/transactions.ts @@ -26,6 +26,10 @@ import type { TransactionOptions, SafeTransaction } from '@safe-global/safe-core import { FEATURES, hasFeature } from '@/utils/chains' import uniqBy from 'lodash/uniqBy' import { Errors, logError } from '@/services/exceptions' +import { Multi_send__factory } from '@/types/contracts' +import { ethers } from 'ethers' +import { type BaseTransaction } from '@safe-global/safe-apps-sdk' +import { id } from 'ethers/lib/utils' export const makeTxFromDetails = (txDetails: TransactionDetails): Transaction => { const getMissingSigners = ({ @@ -191,3 +195,74 @@ export const getTxOrigin = (app?: SafeAppData): string | undefined => { } export const hasEnoughSignatures = (tx: SafeTransaction, safe: SafeInfo) => tx.signatures.size >= safe.threshold + +const multiSendInterface = Multi_send__factory.createInterface() + +const multiSendFragment = multiSendInterface.getFunction('multiSend') + +const MULTISEND_SIGNATURE_HASH = id('multiSend(bytes)').slice(0, 10) + +export const decodeSafeTxToBaseTransactions = (safeTx: SafeTransaction): BaseTransaction[] => { + const txs: BaseTransaction[] = [] + const safeTxData = safeTx.data.data + if (safeTxData.startsWith(MULTISEND_SIGNATURE_HASH)) { + txs.push(...decodeMultiSendTxs(safeTxData)) + } else { + txs.push({ + data: safeTxData, + value: safeTx.data.value, + to: safeTx.data.to, + }) + } + return txs +} + +/** + * TODO: Use core-sdk + * Decodes the transactions contained in `multiSend` call data + * + * @param encodedMultiSendData `multiSend` call data + * @returns array of individual transaction data + */ +export const decodeMultiSendTxs = (encodedMultiSendData: string): BaseTransaction[] => { + // uint8 operation, address to, uint256 value, uint256 dataLength + const INDIVIDUAL_TX_DATA_LENGTH = 2 + 40 + 64 + 64 + + const [decodedMultiSendData] = multiSendInterface.decodeFunctionData(multiSendFragment, encodedMultiSendData) + + const txs: BaseTransaction[] = [] + + // Decode after 0x + let index = 2 + + while (index < decodedMultiSendData.length) { + const txDataEncoded = `0x${decodedMultiSendData.slice( + index, + // Traverse next transaction + (index += INDIVIDUAL_TX_DATA_LENGTH), + )}` + + // Decode operation, to, value, dataLength + const [, txTo, txValue, txDataBytesLength] = ethers.utils.defaultAbiCoder.decode( + ['uint8', 'address', 'uint256', 'uint256'], + ethers.utils.hexZeroPad(txDataEncoded, 32 * 4), + ) + + // Each byte is represented by two characters + const dataLength = Number(txDataBytesLength) * 2 + + const txData = `0x${decodedMultiSendData.slice( + index, + // Traverse data length + (index += dataLength), + )}` + + txs.push({ + to: txTo, + value: txValue.toString(), + data: txData, + }) + } + + return txs +} diff --git a/src/utils/wallets.ts b/src/utils/wallets.ts index b9aa80ef7c..7c493ae92f 100644 --- a/src/utils/wallets.ts +++ b/src/utils/wallets.ts @@ -5,8 +5,7 @@ import { E2E_WALLET_NAME } from '@/tests/e2e-wallet' import type { EthersError } from '@/utils/ethers-utils' import { ErrorCode } from '@ethersproject/logger' import { type ConnectedWallet } from '@/hooks/wallets/useOnboard' -import { getWeb3ReadOnly } from '@/hooks/wallets/web3' -import { EMPTY_DATA } from '@safe-global/safe-core-sdk/dist/src/utils/constants' +import { getWeb3ReadOnly, isSmartContract } from '@/hooks/wallets/web3' import { WALLET_KEYS } from '@/hooks/wallets/consts' const isWCRejection = (err: Error): boolean => { @@ -70,7 +69,5 @@ export const isSmartContractWallet = async (wallet: ConnectedWallet) => { throw new Error('Provider not found') } - const code = await provider.getCode(wallet.address) - - return code !== EMPTY_DATA + return isSmartContract(provider, wallet.address) } From 58d03b46a23b939f7f1316cf449aebd831e1d360 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Wed, 21 Jun 2023 14:31:03 +0200 Subject: [PATCH 326/422] fix: update claiming app data URL (#2133) --- src/hooks/useSafeTokenAllocation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useSafeTokenAllocation.ts b/src/hooks/useSafeTokenAllocation.ts index 8dc53ce8c9..81b50d94ba 100644 --- a/src/hooks/useSafeTokenAllocation.ts +++ b/src/hooks/useSafeTokenAllocation.ts @@ -8,7 +8,7 @@ import useAsync from './useAsync' import useSafeInfo from './useSafeInfo' import { getWeb3ReadOnly } from './wallets/web3' -export const VESTING_URL = 'https://safe-claiming-app-data.gnosis-safe.io/allocations/' +export const VESTING_URL = 'https://safe-claiming-app-data.safe.global/allocations/' type VestingData = { tag: 'user' | 'ecosystem' | 'investor' From b6fa202f88de8adb1fb765178e5dab2d5c55d924 Mon Sep 17 00:00:00 2001 From: katspaugh Date: Wed, 21 Jun 2023 14:33:04 +0200 Subject: [PATCH 327/422] v1.13.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 92034bc684..caa21a82b1 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/safe-global/safe-wallet-web", "license": "GPL-3.0", "type": "module", - "version": "1.12.0", + "version": "1.13.0", "scripts": { "dev": "next dev", "start": "next dev", From 9ea271c1a18d6a6cac681ce18505c2e7c4ec15e6 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Wed, 21 Jun 2023 15:26:16 +0200 Subject: [PATCH 328/422] refactor: Remove promise workaround in tests (#2144) --- .../transactions/SingleTx/SingleTx.test.tsx | 14 +-- src/components/tx/DecodedTx/index.test.tsx | 43 +++---- .../SignOrExecuteForm.test.tsx | 118 +++++------------- src/hooks/__tests__/useAsync.test.ts | 20 ++- .../__tests__/useInitSafeCoreSDK.test.ts | 8 +- 5 files changed, 66 insertions(+), 137 deletions(-) diff --git a/src/components/transactions/SingleTx/SingleTx.test.tsx b/src/components/transactions/SingleTx/SingleTx.test.tsx index 0c775c02eb..eca17836e4 100644 --- a/src/components/transactions/SingleTx/SingleTx.test.tsx +++ b/src/components/transactions/SingleTx/SingleTx.test.tsx @@ -1,4 +1,4 @@ -import { act, fireEvent, render } from '@/tests/test-utils' +import { fireEvent, render } from '@/tests/test-utils' import SingleTx from '@/pages/transactions/tx' import * as useSafeInfo from '@/hooks/useSafeInfo' import type { SafeInfo, TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' @@ -49,12 +49,10 @@ describe('SingleTx', () => { it('renders ', async () => { const screen = render() - await act(() => Promise.resolve()) - const button = screen.queryByText('Details') expect(button).not.toBeInTheDocument() - expect(screen.getByText('Contract interaction')).toBeInTheDocument() + expect(await screen.findByText('Contract interaction')).toBeInTheDocument() }) it('shows an error when the transaction has failed to load', async () => { @@ -66,9 +64,7 @@ describe('SingleTx', () => { const screen = render() - await act(() => Promise.resolve()) - - expect(screen.getByText('Failed to load transaction')).toBeInTheDocument() + expect(await screen.findByText('Failed to load transaction')).toBeInTheDocument() const button = screen.getByText('Details') fireEvent.click(button!) @@ -90,9 +86,7 @@ describe('SingleTx', () => { const screen = render() - await act(() => Promise.resolve()) - - expect(screen.getByText('Failed to load transaction')).toBeInTheDocument() + expect(await screen.findByText('Failed to load transaction')).toBeInTheDocument() const button = screen.getByText('Details') fireEvent.click(button!) diff --git a/src/components/tx/DecodedTx/index.test.tsx b/src/components/tx/DecodedTx/index.test.tsx index a9a2f30ecf..9637f14617 100644 --- a/src/components/tx/DecodedTx/index.test.tsx +++ b/src/components/tx/DecodedTx/index.test.tsx @@ -1,7 +1,8 @@ -import { act, fireEvent, render } from '@/tests/test-utils' +import { fireEvent, render } from '@/tests/test-utils' import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' import * as gatewayMethods from '@safe-global/safe-gateway-typescript-sdk' import DecodedTx from '.' +import { waitFor } from '@testing-library/react' describe('DecodedTx', () => { it('should render a native transfer', async () => { @@ -26,9 +27,7 @@ describe('DecodedTx', () => { />, ) - act(() => { - fireEvent.click(result.getByText('Transaction details')) - }) + fireEvent.click(result.getByText('Transaction details')) expect(result.queryByText('Native token transfer')).toBeInTheDocument() expect(result.queryByText('to(address):')).toBeInTheDocument() @@ -77,16 +76,15 @@ describe('DecodedTx', () => { />, ) - await act(() => { - fireEvent.click(result.getByText('Transaction details')) - return Promise.resolve() - }) + fireEvent.click(result.getByText('Transaction details')) - expect(result.queryByText('transfer')).toBeInTheDocument() - expect(result.queryByText('to(address):')).toBeInTheDocument() - expect(result.queryByText('0x474e...78C8')).toBeInTheDocument() - expect(result.queryByText('value(uint256):')).toBeInTheDocument() - expect(result.queryByText('16745726664999765048')).toBeInTheDocument() + await waitFor(() => { + expect(result.queryByText('transfer')).toBeInTheDocument() + expect(result.queryByText('to(address):')).toBeInTheDocument() + expect(result.queryByText('0x474e...78C8')).toBeInTheDocument() + expect(result.queryByText('value(uint256):')).toBeInTheDocument() + expect(result.queryByText('16745726664999765048')).toBeInTheDocument() + }) }) it('should render a multisend transaction', async () => { @@ -178,12 +176,12 @@ describe('DecodedTx', () => { />, ) - await act(() => Promise.resolve()) - - expect(result.queryByText('multi Send')).toBeInTheDocument() - expect(result.queryByText('transactions(bytes):')).toBeInTheDocument() - expect(result.queryByText('Action 1')).toBeInTheDocument() - expect(result.queryByText('Action 2')).toBeInTheDocument() + await waitFor(() => { + expect(result.queryByText('multi Send')).toBeInTheDocument() + expect(result.queryByText('transactions(bytes):')).toBeInTheDocument() + expect(result.queryByText('Action 1')).toBeInTheDocument() + expect(result.queryByText('Action 2')).toBeInTheDocument() + }) }) it('should render a function call without parameters', async () => { @@ -216,11 +214,8 @@ describe('DecodedTx', () => { />, ) - await act(() => { - fireEvent.click(result.getByText('Transaction details')) - return Promise.resolve() - }) + fireEvent.click(result.getByText('Transaction details')) - expect(result.queryByText('deposit')).toBeInTheDocument() + expect(await result.findByText('deposit')).toBeInTheDocument() }) }) diff --git a/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx b/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx index b0719ffdce..2685496be0 100644 --- a/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx +++ b/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx @@ -1,4 +1,4 @@ -import { act, fireEvent, render } from '@/tests/test-utils' +import { fireEvent, render } from '@/tests/test-utils' import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm/index' import type { SafeSignature, SafeTransaction } from '@safe-global/safe-core-sdk-types' import * as useSafeInfoHook from '@/hooks/useSafeInfo' @@ -9,6 +9,7 @@ import * as wallet from '@/hooks/wallets/useWallet' import * as onboard from '@/hooks/wallets/useOnboard' import * as walletUtils from '@/utils/wallets' import * as web3 from '@/hooks/wallets/web3' +import * as canRelay from '@/hooks/useWalletCanRelay' import type { ChainInfo, SafeInfo, TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' import { waitFor } from '@testing-library/react' import type { ConnectedWallet } from '@/services/onboard' @@ -106,6 +107,7 @@ describe('SignOrExecuteForm', () => { } as unknown as ChainInfo) jest.spyOn(walletUtils, 'isSmartContractWallet').mockResolvedValue(false) jest.spyOn(useRelaysBySafe, 'useRelaysBySafe').mockReturnValue([{ remaining: 5, limit: 5 }, undefined, false]) + jest.spyOn(canRelay, 'default').mockReturnValue([false, undefined, false]) }) it('displays decoded data if there is a tx', () => { @@ -192,9 +194,7 @@ describe('SignOrExecuteForm', () => { result.getByText('This transaction will most likely fail. To save gas costs, reject this transaction.'), ).toBeInTheDocument() - act(() => { - fireEvent.click(result.getByText('Execute transaction')) - }) + fireEvent.click(result.getByText('Execute transaction')) expect( result.queryByText('This transaction will most likely fail. To save gas costs, reject this transaction.'), @@ -215,9 +215,7 @@ describe('SignOrExecuteForm', () => { result.getByText('This transaction will most likely fail. To save gas costs, reject this transaction.'), ).toBeInTheDocument() - act(() => { - fireEvent.click(result.getByText('Execute transaction')) - }) + fireEvent.click(result.getByText('Execute transaction')) expect( result.queryByText('This transaction will most likely fail. To save gas costs, reject this transaction.'), @@ -379,16 +377,13 @@ describe('SignOrExecuteForm', () => { ) const submitButton = result.getByText('Submit') - - act(() => { - expect(submitButton).not.toBeDisabled() - fireEvent.click(submitButton) - }) + expect(submitButton).not.toBeDisabled() + fireEvent.click(submitButton) await waitFor(() => expect(submitButton).toBeDisabled()) }) - it('disables the submit button if gas limit/execution validity is estimating', () => { + it('disables the submit button if gas limit/execution validity is estimating', async () => { jest.spyOn(useGasLimitHook, 'default').mockReturnValue({ gasLimit: undefined, gasLimitError: undefined, @@ -416,6 +411,7 @@ describe('SignOrExecuteForm', () => { jest.spyOn(txSenderDispatch, 'dispatchTxSigning').mockImplementation(signSpy as any) jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(proposeSpy as any) jest.spyOn(txSenderDispatch, 'dispatchTxRelay').mockImplementation(relaySpy) + jest.spyOn(canRelay, 'default').mockReturnValue([true, undefined, false]) const mockTx = createSafeTx() @@ -434,13 +430,8 @@ describe('SignOrExecuteForm', () => { const result = render() - await act(() => Promise.resolve()) - const submitButton = result.getByText('Submit') - - act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => { expect(signSpy).not.toHaveBeenCalledTimes(1) @@ -453,6 +444,7 @@ describe('SignOrExecuteForm', () => { const relaySpy = jest.fn() jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(jest.fn(() => Promise.resolve({})) as any) jest.spyOn(txSenderDispatch, 'dispatchTxRelay').mockImplementation(relaySpy) + jest.spyOn(canRelay, 'default').mockReturnValue([true, undefined, false]) // SC wallet connected jest.spyOn(walletUtils, 'isSmartContractWallet').mockResolvedValue(true) @@ -468,13 +460,8 @@ describe('SignOrExecuteForm', () => { const result = render() - await act(() => Promise.resolve()) - const submitButton = result.getByText('Submit') - - act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => expect(relaySpy).toHaveBeenCalledTimes(0)) }) @@ -483,6 +470,7 @@ describe('SignOrExecuteForm', () => { const relaySpy = jest.fn() jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(jest.fn(() => Promise.resolve({})) as any) jest.spyOn(txSenderDispatch, 'dispatchTxRelay').mockImplementation(relaySpy) + jest.spyOn(canRelay, 'default').mockReturnValue([true, undefined, false]) // SC wallet connected jest.spyOn(walletUtils, 'isSmartContractWallet').mockResolvedValue(true) @@ -505,13 +493,8 @@ describe('SignOrExecuteForm', () => { const result = render() - await act(() => Promise.resolve()) - const submitButton = result.getByText('Submit') - - act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => expect(relaySpy).toHaveBeenCalledTimes(1)) }) @@ -520,6 +503,7 @@ describe('SignOrExecuteForm', () => { const relaySpy = jest.fn() jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(jest.fn(() => Promise.resolve({})) as any) jest.spyOn(txSenderDispatch, 'dispatchTxRelay').mockImplementation(relaySpy) + jest.spyOn(canRelay, 'default').mockReturnValue([true, undefined, false]) const mockTx = createSafeTx() @@ -539,19 +523,15 @@ describe('SignOrExecuteForm', () => { const result = render() - await act(() => Promise.resolve()) - const submitButton = result.getByText('Submit') - - act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => expect(relaySpy).toHaveBeenCalledTimes(1)) }) it('executes a transaction with the connected wallet if chosen instead of relaying', async () => { jest.spyOn(useRelaysBySafe, 'useRelaysBySafe').mockReturnValue([{ remaining: 5, limit: 5 }, undefined, false]) + jest.spyOn(canRelay, 'default').mockReturnValue([true, undefined, false]) const executionSpy = jest.fn() jest @@ -563,21 +543,12 @@ describe('SignOrExecuteForm', () => { const mockTx = createSafeTx() const result = render() - await act(() => Promise.resolve()) - - const walletOptionRadio = result.getByText('Connected wallet') - + const walletOptionRadio = await result.findByText('Connected wallet') expect(walletOptionRadio).toBeInTheDocument() - - act(() => { - fireEvent.click(walletOptionRadio) - }) + fireEvent.click(walletOptionRadio) const submitButton = result.getByText('Submit') - - act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => expect(executionSpy).toHaveBeenCalledTimes(1)) }) @@ -595,8 +566,6 @@ describe('SignOrExecuteForm', () => { const mockTx = createSafeTx() const result = render() - await act(() => Promise.resolve()) - const walletOptionRadio = result.queryByText('Connected wallet') expect(walletOptionRadio).not.toBeInTheDocument() @@ -615,13 +584,8 @@ describe('SignOrExecuteForm', () => { const mockTx = createSafeTx() const result = render() - await act(() => Promise.resolve()) - const submitButton = result.getByText('Submit') - - act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => expect(executionSpy).toHaveBeenCalledTimes(1)) }) @@ -639,10 +603,7 @@ describe('SignOrExecuteForm', () => { const result = render() const submitButton = result.getByText('Submit') - - act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => expect(signSpy).toHaveBeenCalledTimes(1)) expect(proposeSpy).toHaveBeenCalledTimes(1) @@ -661,10 +622,7 @@ describe('SignOrExecuteForm', () => { const result = render() const submitButton = result.getByText('Submit') - - act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => expect(onChainSignSpy).toHaveBeenCalledTimes(1)) expect(proposeSpy).toHaveBeenCalled() @@ -683,10 +641,7 @@ describe('SignOrExecuteForm', () => { const result = render() const submitButton = result.getByText('Submit') - - act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => expect(onChainSignSpy).toHaveBeenCalledTimes(1)) expect(proposeSpy).not.toHaveBeenCalled() @@ -708,13 +663,8 @@ describe('SignOrExecuteForm', () => { , ) - await act(() => Promise.resolve()) - const submitButton = result.getByText('Submit') - - act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => { expect(result.getByText('Error submitting the transaction. Please try again.')).toBeInTheDocument() @@ -756,8 +706,6 @@ describe('SignOrExecuteForm', () => { const result = render() - await act(() => Promise.resolve()) - const submitButton = result.getByText('Submit') expect(submitButton).toBeDisabled() @@ -765,12 +713,10 @@ describe('SignOrExecuteForm', () => { expect(result.baseElement).toHaveTextContent('High test issue') expect(result.baseElement).toHaveTextContent('I understand the risks and would like to continue this transaction') - await act(() => { - const confirmationBox = result.getByText('I understand the risks and would like to continue this transaction') - fireEvent.click(confirmationBox) - expect(submitButton).toBeEnabled() - fireEvent.click(submitButton) - }) + const confirmationBox = result.getByText('I understand the risks and would like to continue this transaction') + fireEvent.click(confirmationBox) + expect(submitButton).toBeEnabled() + fireEvent.click(submitButton) await waitFor(() => { expect(signSpy).toHaveBeenCalledTimes(1) @@ -813,8 +759,6 @@ describe('SignOrExecuteForm', () => { const result = render() - await act(() => Promise.resolve()) - const submitButton = result.getByText('Submit') expect(submitButton).toBeEnabled() @@ -824,9 +768,7 @@ describe('SignOrExecuteForm', () => { 'I understand the risks and would like to continue this transaction', ) - await act(() => { - fireEvent.click(submitButton) - }) + fireEvent.click(submitButton) await waitFor(() => { expect(signSpy).toHaveBeenCalledTimes(1) diff --git a/src/hooks/__tests__/useAsync.test.ts b/src/hooks/__tests__/useAsync.test.ts index 85fc33a77f..05c24fd773 100644 --- a/src/hooks/__tests__/useAsync.test.ts +++ b/src/hooks/__tests__/useAsync.test.ts @@ -1,6 +1,7 @@ import { useEffect, useState } from 'react' import { act, renderHook } from '@/tests/test-utils' import useAsync from '@/hooks/useAsync' +import { waitFor } from '@testing-library/react' // Jest tests for the useAsync hook describe('useAsync hook', () => { @@ -13,9 +14,9 @@ describe('useAsync hook', () => { expect(result.current).toEqual([undefined, undefined, false]) - await act(() => Promise.resolve()) - - expect(result.current).toEqual([undefined, undefined, false]) + await waitFor(() => { + expect(result.current).toEqual([undefined, undefined, false]) + }) }) it('should return the correct state when the promise resolves', async () => { @@ -23,9 +24,9 @@ describe('useAsync hook', () => { expect(result.current).toEqual([undefined, undefined, true]) - await act(() => Promise.resolve()) - - expect(result.current).toEqual(['foo', undefined, false]) + await waitFor(() => { + expect(result.current).toEqual(['foo', undefined, false]) + }) }) it('should return the correct state when the promise rejects', async () => { @@ -33,12 +34,9 @@ describe('useAsync hook', () => { expect(result.current).toEqual([undefined, undefined, true]) - // Wait for the promise to resolve - await act(async () => { - await Promise.resolve() + await waitFor(() => { + expect(result.current).toEqual([undefined, 'test', false]) }) - - expect(result.current).toEqual([undefined, 'test', false]) }) it('should clear the data between reloads', async () => { diff --git a/src/hooks/coreSDK/__tests__/useInitSafeCoreSDK.test.ts b/src/hooks/coreSDK/__tests__/useInitSafeCoreSDK.test.ts index 268367ac58..8a4a64ae4e 100644 --- a/src/hooks/coreSDK/__tests__/useInitSafeCoreSDK.test.ts +++ b/src/hooks/coreSDK/__tests__/useInitSafeCoreSDK.test.ts @@ -6,7 +6,7 @@ import * as useSafeInfo from '@/hooks/useSafeInfo' import * as coreSDK from '@/hooks/coreSDK/safeCoreSDK' import type { SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' import { ImplementationVersionState } from '@safe-global/safe-gateway-typescript-sdk' -import { act } from '@testing-library/react' +import { waitFor } from '@testing-library/react' import type Safe from '@safe-global/safe-core-sdk' import type { JsonRpcProvider } from '@ethersproject/providers' @@ -60,9 +60,9 @@ describe('useInitSafeCoreSDK hook', () => { implementation: mockSafeInfo.safe.implementation.value, }) - await act(() => Promise.resolve()) - - expect(setSDKMock).toHaveBeenCalledWith(mockSafe) + await waitFor(() => { + expect(setSDKMock).toHaveBeenCalledWith(mockSafe) + }) }) it('does not initialize a Core SDK instance if the safe info is not loaded', async () => { From d3fa6de8132124125e604e4f5828b78ad83cc518 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Wed, 21 Jun 2023 19:21:31 +0200 Subject: [PATCH 329/422] chore: Fix modularized imports (#2147) --- next.config.mjs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index e9bfd3afc7..722e9f3c76 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -22,19 +22,19 @@ const nextConfig = { images: { unoptimized: true, }, - }, - modularizeImports: { - '@mui/material': { - transform: '@mui/material/{{member}}', - }, - '@mui/icons-material/?(((\\w*)?/?)*)': { - transform: '@mui/icons-material/{{ matches.[1] }}/{{member}}', - }, - lodash: { - transform: 'lodash/{{member}}', - }, - 'date-fns': { - transform: 'date-fns/{{member}}', + modularizeImports: { + '@mui/material': { + transform: '@mui/material/{{member}}', + }, + '@mui/icons-material/?(((\\w*)?/?)*)': { + transform: '@mui/icons-material/{{ matches.[1] }}/{{member}}', + }, + lodash: { + transform: 'lodash/{{member}}', + }, + 'date-fns': { + transform: 'date-fns/{{member}}', + }, }, }, async rewrites() { From 11e8906d9a8e0325bc15b5dc7da0e34eb092e066 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Thu, 22 Jun 2023 09:15:35 +0200 Subject: [PATCH 330/422] Fix: a tiny fix for balance changes CSS (#2148) --- .../redefine/RedefineBalanceChange/styles.module.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css b/src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css index a91e897fef..e94196cc52 100644 --- a/src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css +++ b/src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css @@ -3,6 +3,7 @@ max-height: 300px; overflow-y: auto; align-items: center; + gap: 1px; } .balanceChange { @@ -16,6 +17,10 @@ margin-bottom: 0; } +.balanceChange svg { + flex-shrink: 0; +} + .nftId { overflow: hidden; white-space: nowrap; From a80992c287e90c864bcc5867b5c395ae81ab8a62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Jun 2023 07:17:57 +0200 Subject: [PATCH 331/422] chore(deps): bump semver from 7.3.8 to 7.5.2 (#2158) Bumps [semver](https://github.com/npm/node-semver) from 7.3.8 to 7.5.2. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v7.3.8...v7.5.2) --- updated-dependencies: - dependency-name: semver dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index caa21a82b1..def28b9540 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "react-papaparse": "^4.0.2", "react-qr-reader": "2.2.1", "react-redux": "^8.0.5", - "semver": "^7.3.7" + "semver": "^7.5.2" }, "devDependencies": { "@next/bundle-analyzer": "^13.1.1", diff --git a/yarn.lock b/yarn.lock index e06b21a6bd..93dd1f8dee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12495,10 +12495,10 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2: + version "7.5.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.2.tgz#5b851e66d1be07c1cdaf37dfc856f543325a2beb" + integrity sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ== dependencies: lru-cache "^6.0.0" From 9936a6ae85361067bdf54d7c72d31dcce5e81d3c Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Fri, 23 Jun 2023 10:46:31 +0200 Subject: [PATCH 332/422] Docs: fix readme formatting (#2159) * Docs: fix readme formatting The env vars table was broken * Move Redefine API URL to env vars * REDEFINE_REQUEST_URL -> REDEFINE_API --- .env.example | 3 ++ README.md | 45 ++++++++++--------- .../tx/security/redefine/useRedefine.test.ts | 6 +++ src/config/constants.ts | 2 +- .../security/modules/RedefineModule/index.ts | 8 +++- 5 files changed, 39 insertions(+), 25 deletions(-) diff --git a/.env.example b/.env.example index 712dd0c709..b2804bb7d4 100644 --- a/.env.example +++ b/.env.example @@ -31,3 +31,6 @@ NEXT_PUBLIC_CYPRESS_MNEMONIC= # Safe Gelato relay service NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_PRODUCTION= NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING= + +# Redefine +NEXT_PUBLIC_REDEFINE_API= \ No newline at end of file diff --git a/README.md b/README.md index dbead0c151..89d7f458bc 100644 --- a/README.md +++ b/README.md @@ -19,28 +19,29 @@ Create a `.env` file with environment variables. You can use the `.env.example` Here's the list of all the required and optional variables: -| Env variable | | Description | -| ------------------------------------------------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | -| `NEXT_PUBLIC_INFURA_TOKEN` | **required** | [Infura](https://docs.infura.io/infura/networks/ethereum/how-to/secure-a-project/project-id) RPC API token | -| `NEXT_PUBLIC_SAFE_APPS_INFURA_TOKEN` | optional | Infura token for Safe Apps, falls back to `NEXT_PUBLIC_INFURA_TOKEN` | -| `NEXT_PUBLIC_IS_PRODUCTION` | optional | Set to `true` to build a minified production app | -| `NEXT_PUBLIC_GATEWAY_URL_PRODUCTION` | optional | The base URL for the [Safe Client Gateway](https://github.com/safe-global/safe-client-gateway) | -| `NEXT_PUBLIC_GATEWAY_URL_STAGING` | optional | The base CGW URL on staging | -| `NEXT_PUBLIC_SAFE_VERSION` | optional | The latest version of the Safe contract, defaults to 1.3.0 | | -| `NEXT_PUBLIC_WC_BRIDGE` | optional | [WalletConnect v1](https://docs.walletconnect.com/1.0/bridge-server) bridge URL, falls back to the public WC bridge | -| `NEXT_PUBLIC_WC_PROJECT_ID` | optional | [WalletConnect v2](https://docs.walletconnect.com/2.0/cloud/relay) project ID | -| `NEXT_PUBLIC_TENDERLY_ORG_NAME` | optional | [Tenderly](https://tenderly.co) org name for Transaction Simulation | -| `NEXT_PUBLIC_TENDERLY_PROJECT_NAME` | optional | Tenderly project name | -| `NEXT_PUBLIC_TENDERLY_SIMULATE_ENDPOINT_URL` | optional | Tenderly simulation URL | -| `NEXT_PUBLIC_BEAMER_ID` | optional | [Beamer](https://www.getbeamer.com) is a news feed for in-app announcements | -| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID` | optional | [GTM](https://tagmanager.google.com) project id | -| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_DEVELOPMENT_AUTH` | optional | Dev GTM key | -| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_LATEST_AUTH` | optional | Preview GTM key | -| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_LIVE_AUTH` | optional | Production GTM key | -| `NEXT_PUBLIC_SENTRY_DSN` | optional | [Sentry](https://sentry.io) id for tracking runtime errors | -| `NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_PRODUCTION` | optional | [Safe Gelato Relay Service](https://github.com/safe-global/safe-gelato-relay-service) URL to allow relaying transactions via Gelato | -| `NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING` | optional | Relay URL on staging | -| `NEXT_PUBLIC_IS_OFFICIAL_HOST` | optional | Whether it's the official distribution of the app, or a fork; has legal implications. Set to true only if you also update the legal pages like Imprint and Terms of use | +| Env variable | | Description +| ------------------------------------------------------ | ------------ | ----------- +| `NEXT_PUBLIC_INFURA_TOKEN` | **required** | [Infura](https://docs.infura.io/infura/networks/ethereum/how-to/secure-a-project/project-id) RPC API token +| `NEXT_PUBLIC_SAFE_APPS_INFURA_TOKEN` | optional | Infura token for Safe Apps, falls back to `NEXT_PUBLIC_INFURA_TOKEN` +| `NEXT_PUBLIC_IS_PRODUCTION` | optional | Set to `true` to build a minified production app +| `NEXT_PUBLIC_GATEWAY_URL_PRODUCTION` | optional | The base URL for the [Safe Client Gateway](https://github.com/safe-global/safe-client-gateway) +| `NEXT_PUBLIC_GATEWAY_URL_STAGING` | optional | The base CGW URL on staging +| `NEXT_PUBLIC_SAFE_VERSION` | optional | The latest version of the Safe contract, defaults to 1.3.0 +| `NEXT_PUBLIC_WC_BRIDGE` | optional | [WalletConnect v1](https://docs.walletconnect.com/1.0/bridge-server) bridge URL, falls back to the public WC bridge +| `NEXT_PUBLIC_WC_PROJECT_ID` | optional | [WalletConnect v2](https://docs.walletconnect.com/2.0/cloud/relay) project ID +| `NEXT_PUBLIC_TENDERLY_ORG_NAME` | optional | [Tenderly](https://tenderly.co) org name for Transaction Simulation +| `NEXT_PUBLIC_TENDERLY_PROJECT_NAME` | optional | Tenderly project name +| `NEXT_PUBLIC_TENDERLY_SIMULATE_ENDPOINT_URL` | optional | Tenderly simulation URL +| `NEXT_PUBLIC_BEAMER_ID` | optional | [Beamer](https://www.getbeamer.com) is a news feed for in-app announcements +| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID` | optional | [GTM](https://tagmanager.google.com) project id +| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_DEVELOPMENT_AUTH` | optional | Dev GTM key +| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_LATEST_AUTH` | optional | Preview GTM key +| `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_LIVE_AUTH` | optional | Production GTM key +| `NEXT_PUBLIC_SENTRY_DSN` | optional | [Sentry](https://sentry.io) id for tracking runtime errors +| `NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_PRODUCTION` | optional | [Safe Gelato Relay Service](https://github.com/safe-global/safe-gelato-relay-service) URL to allow relaying transactions via Gelato +| `NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING` | optional | Relay URL on staging +| `NEXT_PUBLIC_IS_OFFICIAL_HOST` | optional | Whether it's the official distribution of the app, or a fork; has legal implications. Set to true only if you also update the legal pages like Imprint and Terms of use +| `NEXT_PUBLIC_REDEFINE_API` | optional | Redefine API base URL If you don't provide some of the optional vars, the corresponding features will be disabled in the UI. diff --git a/src/components/tx/security/redefine/useRedefine.test.ts b/src/components/tx/security/redefine/useRedefine.test.ts index 10a16cb91d..a8ae921495 100644 --- a/src/components/tx/security/redefine/useRedefine.test.ts +++ b/src/components/tx/security/redefine/useRedefine.test.ts @@ -17,6 +17,12 @@ const setupFetchStub = (data: any) => (_url: string) => { }) } +// Mock REDEFINE_API +jest.mock('@/config/constants', () => ({ + ...jest.requireActual('@/config/constants'), + REDEFINE_API: 'https://redefine-api.test', +})) + describe('useRedefine', () => { let mockUseWallet: jest.SpyInstance diff --git a/src/config/constants.ts b/src/config/constants.ts index db19d1f9d3..771e8ed57e 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -92,4 +92,4 @@ export const IS_OFFICIAL_HOST = process.env.NEXT_PUBLIC_IS_OFFICIAL_HOST || fals // Risk mitigation (Redefine) export const REDEFINE_SIMULATION_URL = 'https://dashboard.redefine.net/reports/' -export const REDEFINE_REQUEST_URL = 'https://risk-analysis.safe.global/messages' +export const REDEFINE_API = process.env.NEXT_PUBLIC_REDEFINE_API diff --git a/src/services/security/modules/RedefineModule/index.ts b/src/services/security/modules/RedefineModule/index.ts index e3dd54a5bf..1a1373164c 100644 --- a/src/services/security/modules/RedefineModule/index.ts +++ b/src/services/security/modules/RedefineModule/index.ts @@ -1,4 +1,4 @@ -import { REDEFINE_REQUEST_URL } from '@/config/constants' +import { REDEFINE_API } from '@/config/constants' import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' import { generateTypedData } from '@safe-global/safe-core-sdk-utils' import { type SecurityResponse, type SecurityModule, SecuritySeverity } from '../types' @@ -107,6 +107,10 @@ export type RedefineResponse = { export class RedefineModule implements SecurityModule { async scanTransaction(request: RedefineModuleRequest): Promise> { + if (!REDEFINE_API) { + throw new Error('Redefine API URL is not set') + } + const { chainId, safeAddress } = request const txTypedData = generateTypedData({ @@ -124,7 +128,7 @@ export class RedefineModule implements SecurityModule Date: Sat, 24 Jun 2023 10:19:14 +0200 Subject: [PATCH 333/422] fix: Allow non-owners with spending limit to execute transaction (#2121) --- src/components/common/CheckWallet/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/common/CheckWallet/index.tsx b/src/components/common/CheckWallet/index.tsx index 3caf233e29..c7b17c1a40 100644 --- a/src/components/common/CheckWallet/index.tsx +++ b/src/components/common/CheckWallet/index.tsx @@ -27,7 +27,7 @@ const CheckWallet = ({ children, allowSpendingLimit, allowNonOwner }: CheckWalle ? Message.WalletNotConnected : !isSafeOwner && !isSpendingLimit && !allowNonOwner ? Message.NotSafeOwner - : isSpendingLimit && !allowSpendingLimit + : isSpendingLimit && !allowSpendingLimit && !allowNonOwner ? Message.OnlySpendingLimitBeneficiary : '' From 2f9a077e771b1979a3ac0a8a82292986c3ed14cc Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Mon, 26 Jun 2023 17:54:27 +0200 Subject: [PATCH 334/422] fix: remove creation modal query param on close (#2167) --- src/components/dashboard/CreationDialog/index.tsx | 12 +++++++++++- src/components/dashboard/index.tsx | 3 ++- src/components/new-safe/create/logic/index.ts | 4 +++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/components/dashboard/CreationDialog/index.tsx b/src/components/dashboard/CreationDialog/index.tsx index 404324a2e1..07a417f4e5 100644 --- a/src/components/dashboard/CreationDialog/index.tsx +++ b/src/components/dashboard/CreationDialog/index.tsx @@ -1,5 +1,6 @@ import React, { type ElementType } from 'react' import { Box, Button, Dialog, DialogContent, Grid, SvgIcon, Typography } from '@mui/material' +import { useRouter } from 'next/router' import HomeIcon from '@/public/images/sidebar/home.svg' import TransactionIcon from '@/public/images/sidebar/transactions.svg' @@ -9,6 +10,7 @@ import BeamerIcon from '@/public/images/sidebar/whats-new.svg' import HelpCenterIcon from '@/public/images/sidebar/help-center.svg' import { useRemoteSafeApps } from '@/hooks/safe-apps/useRemoteSafeApps' import { useCurrentChain } from '@/hooks/useChains' +import { CREATION_MODAL_QUERY_PARM } from '@/components/new-safe/create/logic' const HintItem = ({ Icon, title, description }: { Icon: ElementType; title: string; description: string }) => { return ( @@ -26,10 +28,18 @@ const HintItem = ({ Icon, title, description }: { Icon: ElementType; title: stri } const CreationDialog = () => { + const router = useRouter() const [open, setOpen] = React.useState(true) const [remoteSafeApps = []] = useRemoteSafeApps() const chain = useCurrentChain() + const onClose = () => { + const { [CREATION_MODAL_QUERY_PARM]: _, ...query } = router.query + router.replace({ pathname: router.pathname, query }) + + setOpen(false) + } + return ( @@ -64,7 +74,7 @@ const CreationDialog = () => { /> - diff --git a/src/components/dashboard/index.tsx b/src/components/dashboard/index.tsx index 3ac2042ad8..713abbe444 100644 --- a/src/components/dashboard/index.tsx +++ b/src/components/dashboard/index.tsx @@ -10,11 +10,12 @@ import { useRouter } from 'next/router' import Relaying from '@/components/dashboard/Relaying' import { FEATURES } from '@/utils/chains' import { useHasFeature } from '@/hooks/useChains' +import { CREATION_MODAL_QUERY_PARM } from '../new-safe/create/logic' const Dashboard = (): ReactElement => { const router = useRouter() const supportsRelaying = useHasFeature(FEATURES.RELAYING) - const { showCreationModal = '' } = router.query + const { [CREATION_MODAL_QUERY_PARM]: showCreationModal = '' } = router.query return ( <> diff --git a/src/components/new-safe/create/logic/index.ts b/src/components/new-safe/create/logic/index.ts index 4a11e1fbc4..6bb49eaece 100644 --- a/src/components/new-safe/create/logic/index.ts +++ b/src/components/new-safe/create/logic/index.ts @@ -235,6 +235,8 @@ export const checkSafeCreationTx = async ( } } +export const CREATION_MODAL_QUERY_PARM = 'showCreationModal' + export const getRedirect = ( chainPrefix: string, safeAddress: string, @@ -248,7 +250,7 @@ export const getRedirect = ( // Go to the dashboard if no specific redirect is provided if (!redirectUrl) { - return { pathname: AppRoutes.home, query: { safe: address, showCreationModal: true } } + return { pathname: AppRoutes.home, query: { safe: address, [CREATION_MODAL_QUERY_PARM]: true } } } // Otherwise, redirect to the provided URL (e.g. from a Safe App) From e20dcc37ff8a8901d3c498860af89883854eddba Mon Sep 17 00:00:00 2001 From: francovenica Date: Tue, 27 Jun 2023 02:00:05 -0300 Subject: [PATCH 335/422] Tests: change token counter (#2179) --- cypress/e2e/smoke/dashboard.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/e2e/smoke/dashboard.cy.js b/cypress/e2e/smoke/dashboard.cy.js index 4442841459..8b62ed9efa 100644 --- a/cypress/e2e/smoke/dashboard.cy.js +++ b/cypress/e2e/smoke/dashboard.cy.js @@ -23,7 +23,7 @@ describe('Dashboard', () => { cy.contains('2/3') cy.get(`a[href="/balances?safe=${SAFE}"]`).contains('View assets') // Text next to Tokens contains a number greater than 0 - cy.contains('p', 'Tokens').next().contains('3') + cy.contains('p', 'Tokens').next().contains('4') cy.contains('p', 'NFTs').next().contains('0') }) }) From b9e2b18f5ee07dc388b940f53d3ed3049707b24d Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Tue, 27 Jun 2023 07:01:54 +0200 Subject: [PATCH 336/422] Fix: reset tx list pages when Safe is changed (#2168) * Fix: reset tx list pages when Safe is changed * Add the same fix for PaginatedMsgs --- src/components/common/PaginatedTxns/index.tsx | 6 ++++-- src/components/safe-messages/PaginatedMsgs/index.tsx | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/components/common/PaginatedTxns/index.tsx b/src/components/common/PaginatedTxns/index.tsx index edb3fab606..cef80dd98b 100644 --- a/src/components/common/PaginatedTxns/index.tsx +++ b/src/components/common/PaginatedTxns/index.tsx @@ -12,6 +12,7 @@ import { type TxFilter, useTxFilter } from '@/utils/tx-history-filter' import { isTransactionListItem } from '@/utils/transaction-guards' import NoTransactionsIcon from '@/public/images/transactions/no-transactions.svg' import { useHasPendingTxs } from '@/hooks/usePendingTxs' +import useSafeInfo from '@/hooks/useSafeInfo' const NoQueuedTxns = () => { return } text="Queued transactions will appear here" /> @@ -68,11 +69,12 @@ const TxPage = ({ const PaginatedTxns = ({ useTxns }: { useTxns: typeof useTxHistory | typeof useTxQueue }): ReactElement => { const [pages, setPages] = useState(['']) const [filter] = useTxFilter() + const { safeAddress, safe } = useSafeInfo() - // Reset the pages when the filter changes + // Reset the pages when the Safe Account or filter changes useEffect(() => { setPages(['']) - }, [filter, useTxns]) + }, [filter, safe.chainId, safeAddress, useTxns]) // Trigger the next page load const onNextPage = (pageUrl: string) => { diff --git a/src/components/safe-messages/PaginatedMsgs/index.tsx b/src/components/safe-messages/PaginatedMsgs/index.tsx index f7badab225..b572223094 100644 --- a/src/components/safe-messages/PaginatedMsgs/index.tsx +++ b/src/components/safe-messages/PaginatedMsgs/index.tsx @@ -1,6 +1,6 @@ import { Box } from '@mui/material' import { Typography, Link, SvgIcon } from '@mui/material' -import { useState } from 'react' +import { useEffect, useState } from 'react' import type { ReactElement } from 'react' import ErrorMessage from '@/components/tx/ErrorMessage' @@ -12,6 +12,7 @@ import PagePlaceholder from '@/components/common/PagePlaceholder' import MsgList from '@/components/safe-messages/MsgList' import SkeletonTxList from '@/components/common/PaginatedTxns/SkeletonTxList' import { HelpCenterArticle } from '@/config/constants' +import useSafeInfo from '@/hooks/useSafeInfo' const NoMessages = (): ReactElement => { return ( @@ -62,12 +63,18 @@ const MsgPage = ({ const PaginatedMsgs = (): ReactElement => { const [pages, setPages] = useState(['']) + const { safeAddress, safe } = useSafeInfo() // Trigger the next page load const onNextPage = (pageUrl: string) => { setPages((prev) => prev.concat(pageUrl)) } + // Reset the pages when the Safe Account changes + useEffect(() => { + setPages(['']) + }, [safe.chainId, safeAddress]) + return ( {pages.map((pageUrl, index) => ( From bdf01e12ec28e4ea96d5c0cc89473d7469871745 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Tue, 27 Jun 2023 10:37:33 +0200 Subject: [PATCH 337/422] Fix: keystone modal scroll (#2170) --- src/styles/onboard.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/styles/onboard.css b/src/styles/onboard.css index 73345662e4..bbbbfb5e1a 100644 --- a/src/styles/onboard.css +++ b/src/styles/onboard.css @@ -104,6 +104,9 @@ #kv_sdk_container + .ReactModalPortal > div { z-index: 1301 !important; } +#kv_sdk_container + .ReactModalPortal .ReactModal__Content { + padding: 0 !important; +} /* Ledger modal */ .ledger-ck-modal > div#ModalWrapper { From 472923701e0b226a253ddf2ad0af911d79092253 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Wed, 28 Jun 2023 09:01:53 +0200 Subject: [PATCH 338/422] Fix: /apps/open redirect (#2177) --- src/pages/apps/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/apps/index.tsx b/src/pages/apps/index.tsx index 0e76f298e7..347ec4b99e 100644 --- a/src/pages/apps/index.tsx +++ b/src/pages/apps/index.tsx @@ -23,7 +23,7 @@ const SafeApps: NextPage = () => { useEffect(() => { const appUrl = router.query.appUrl as string if (appUrl) { - router.push(AppRoutes.apps.open, { query: { safe: router.query.safe, appUrl } }) + router.push({ pathname: AppRoutes.apps.open, query: { safe: router.query.safe, appUrl } }) } }, [router]) From 19e3aef3db867e87f86c10c9fd729ac4701e7685 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Wed, 28 Jun 2023 09:42:18 +0200 Subject: [PATCH 339/422] fix: don't check WC v1 session for v2 reconnection (#2178) --- src/hooks/wallets/wallets.ts | 5 ++--- src/utils/wallets.ts | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/hooks/wallets/wallets.ts b/src/hooks/wallets/wallets.ts index 77d4f3f1da..60d218bd2c 100644 --- a/src/hooks/wallets/wallets.ts +++ b/src/hooks/wallets/wallets.ts @@ -17,13 +17,12 @@ import { CGW_NAMES, WALLET_KEYS } from './consts' // We need to modify the module name as onboard dedupes modules with the same label and the WC v1 and v2 modules have the same // @see https://github.com/blocknative/web3-onboard/blob/d399e0b76daf7b363d6a74b100b2c96ccb14536c/packages/core/src/store/actions.ts#L419 // TODO: When removing this, also remove the associated CSS in `onboard.css` +export const WALLET_CONNECT_V1_MODULE_NAME = 'WalletConnect v1' const walletConnectV1 = (): WalletInit => { return (helpers) => { - const MODULE_LABEL = 'WalletConnect v1' - const walletConnectModule = walletConnect({ version: 1, bridge: WC_BRIDGE })(helpers) as WalletModule - walletConnectModule.label = MODULE_LABEL + walletConnectModule.label = WALLET_CONNECT_V1_MODULE_NAME return walletConnectModule } diff --git a/src/utils/wallets.ts b/src/utils/wallets.ts index 7c493ae92f..fb952a0074 100644 --- a/src/utils/wallets.ts +++ b/src/utils/wallets.ts @@ -7,6 +7,7 @@ import { ErrorCode } from '@ethersproject/logger' import { type ConnectedWallet } from '@/hooks/wallets/useOnboard' import { getWeb3ReadOnly, isSmartContract } from '@/hooks/wallets/web3' import { WALLET_KEYS } from '@/hooks/wallets/consts' +import { WALLET_CONNECT_V1_MODULE_NAME } from '@/hooks/wallets/wallets' const isWCRejection = (err: Error): boolean => { return /rejected/.test(err?.message) @@ -22,7 +23,7 @@ export const isWalletRejection = (err: EthersError | Error): boolean => { export const WalletNames = { METAMASK: ProviderLabel.MetaMask, - WALLET_CONNECT: 'WalletConnect', + WALLET_CONNECT: WALLET_CONNECT_V1_MODULE_NAME, SAFE_MOBILE_PAIRING: PAIRING_MODULE_LABEL, } From a05c5b7b002becb1c3253d9e37997e0401c0a38d Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Wed, 28 Jun 2023 10:05:54 +0200 Subject: [PATCH 340/422] fix: remove "Where's my wallet?" info (#2171) * fix: onboard warning colours * fix: revert palette + remove element * fix: remove comment * fix: colours * fix: remove condition --- src/hooks/wallets/useOnboard.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index dfee65672a..36e833310f 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -125,7 +125,21 @@ export const connectWallet = async ( let wallets: WalletState[] | undefined try { - wallets = await onboard.connectWallet(options) + // Mount the onboard modal + const promise = onboard.connectWallet(options) + + // Remove "Where's my wallet?" element if not auto-selecting a wallet + setTimeout(() => { + const onboardModal = document.querySelector('onboard-v2')?.shadowRoot + const wheresMyWallet = onboardModal?.querySelector('.wallets-container .notice-container') + + if (wheresMyWallet) { + wheresMyWallet.remove() + } + }, 100) + + // Wait for successful connection + wallets = await promise } catch (e) { logError(Errors._302, (e as Error).message) From 72cb6c7ab027425eb2f5a7915ec28a0cde07358b Mon Sep 17 00:00:00 2001 From: iamacook Date: Wed, 28 Jun 2023 17:12:37 +0200 Subject: [PATCH 341/422] fix: upgrade `web3-onboard/core` --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index def28b9540..c3e162372f 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@sentry/tracing": "^7.28.1", "@truffle/hdwallet-provider": "^2.1.4", "@web3-onboard/coinbase": "^2.2.4", - "@web3-onboard/core": "2.20.1", + "@web3-onboard/core": "2.20.3", "@web3-onboard/injected-wallets": "^2.10.0", "@web3-onboard/keystone": "^2.3.7", "@web3-onboard/ledger": "^2.4.6", diff --git a/yarn.lock b/yarn.lock index 93dd1f8dee..dcec9245ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4728,10 +4728,10 @@ ethers "5.5.4" joi "17.9.1" -"@web3-onboard/core@2.20.1": - version "2.20.1" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.1.tgz#ad3a15aa6c1083d6da83fd9d06d5fe250e750b5a" - integrity sha512-OlNQUYBsbvy389AQD5VggqCRGvmiE7/w0LeLt6yyUwAksGnRPSpLjiPaOOjMAJFq0d3TnSX5yXbAoG1SRJM7ww== +"@web3-onboard/core@2.20.3": + version "2.20.3" + resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.3.tgz#e123979f9360057cd184d715fdedc9f0bbf45941" + integrity sha512-2fm8kJ4T4DXvPNU7rjWCAxFFEZXx2Xz7LiUCg+qXvhiHzJBBxGOBbL81HwZk9hR3eZzWwQt9tLmbFx0G2uREow== dependencies: "@web3-onboard/common" "^2.3.3" bignumber.js "^9.0.0" From 75577113c4c5f5fdb59dd8b829ba94064adf2508 Mon Sep 17 00:00:00 2001 From: iamacook Date: Wed, 28 Jun 2023 17:14:02 +0200 Subject: [PATCH 342/422] Revert "fix: upgrade `web3-onboard/core`" This reverts commit 72cb6c7ab027425eb2f5a7915ec28a0cde07358b. --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c3e162372f..def28b9540 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@sentry/tracing": "^7.28.1", "@truffle/hdwallet-provider": "^2.1.4", "@web3-onboard/coinbase": "^2.2.4", - "@web3-onboard/core": "2.20.3", + "@web3-onboard/core": "2.20.1", "@web3-onboard/injected-wallets": "^2.10.0", "@web3-onboard/keystone": "^2.3.7", "@web3-onboard/ledger": "^2.4.6", diff --git a/yarn.lock b/yarn.lock index dcec9245ca..93dd1f8dee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4728,10 +4728,10 @@ ethers "5.5.4" joi "17.9.1" -"@web3-onboard/core@2.20.3": - version "2.20.3" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.3.tgz#e123979f9360057cd184d715fdedc9f0bbf45941" - integrity sha512-2fm8kJ4T4DXvPNU7rjWCAxFFEZXx2Xz7LiUCg+qXvhiHzJBBxGOBbL81HwZk9hR3eZzWwQt9tLmbFx0G2uREow== +"@web3-onboard/core@2.20.1": + version "2.20.1" + resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.1.tgz#ad3a15aa6c1083d6da83fd9d06d5fe250e750b5a" + integrity sha512-OlNQUYBsbvy389AQD5VggqCRGvmiE7/w0LeLt6yyUwAksGnRPSpLjiPaOOjMAJFq0d3TnSX5yXbAoG1SRJM7ww== dependencies: "@web3-onboard/common" "^2.3.3" bignumber.js "^9.0.0" From 52faa41bd2ffff65c3a5c524c044d2d64485d538 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Thu, 29 Jun 2023 09:25:25 +0200 Subject: [PATCH 343/422] fix: upgrade `@web3-onboard/core` (#2195) --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index def28b9540..c3e162372f 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@sentry/tracing": "^7.28.1", "@truffle/hdwallet-provider": "^2.1.4", "@web3-onboard/coinbase": "^2.2.4", - "@web3-onboard/core": "2.20.1", + "@web3-onboard/core": "2.20.3", "@web3-onboard/injected-wallets": "^2.10.0", "@web3-onboard/keystone": "^2.3.7", "@web3-onboard/ledger": "^2.4.6", diff --git a/yarn.lock b/yarn.lock index 93dd1f8dee..dcec9245ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4728,10 +4728,10 @@ ethers "5.5.4" joi "17.9.1" -"@web3-onboard/core@2.20.1": - version "2.20.1" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.1.tgz#ad3a15aa6c1083d6da83fd9d06d5fe250e750b5a" - integrity sha512-OlNQUYBsbvy389AQD5VggqCRGvmiE7/w0LeLt6yyUwAksGnRPSpLjiPaOOjMAJFq0d3TnSX5yXbAoG1SRJM7ww== +"@web3-onboard/core@2.20.3": + version "2.20.3" + resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.3.tgz#e123979f9360057cd184d715fdedc9f0bbf45941" + integrity sha512-2fm8kJ4T4DXvPNU7rjWCAxFFEZXx2Xz7LiUCg+qXvhiHzJBBxGOBbL81HwZk9hR3eZzWwQt9tLmbFx0G2uREow== dependencies: "@web3-onboard/common" "^2.3.3" bignumber.js "^9.0.0" From 7f56206ddc1979b7c657ebc65dcf78c6c7183fbc Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:31:29 +0200 Subject: [PATCH 344/422] Fix: checked box color in CookieBanner (#2199) --- src/components/common/CookieBanner/styles.module.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/common/CookieBanner/styles.module.css b/src/components/common/CookieBanner/styles.module.css index 50e113c97f..0dafa4fc80 100644 --- a/src/components/common/CookieBanner/styles.module.css +++ b/src/components/common/CookieBanner/styles.module.css @@ -22,3 +22,11 @@ bottom: 0; } } + +.container :global(.Mui-checked) { + color: var(--color-background-paper); +} + +.container :global(.Mui-checked.Mui-disabled) { + opacity: 0.5; +} From 669bab8c5b90d52475c989ecc114d686478b3fc3 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Mon, 3 Jul 2023 09:26:20 +0200 Subject: [PATCH 345/422] fix: upgrade `@web3-onboard/*` + remove patches (#2205) * fix: upgrade `@web3-onboard/*` + remove patches * fix: mocks --- jest.setup.js | 2 +- package.json | 11 +- .../@web3-onboard+walletconnect+2.3.9.patch | 14 - src/hooks/wallets/useOnboard.ts | 16 +- src/hooks/wallets/wallets.ts | 15 +- src/services/onboard.ts | 4 + yarn.lock | 348 +++++++----------- 7 files changed, 144 insertions(+), 266 deletions(-) delete mode 100644 patches/@web3-onboard+walletconnect+2.3.9.patch diff --git a/jest.setup.js b/jest.setup.js index 53b3c298a3..207d62ecb0 100644 --- a/jest.setup.js +++ b/jest.setup.js @@ -9,7 +9,7 @@ import 'whatwg-fetch' jest.mock('@web3-onboard/coinbase', () => jest.fn()) jest.mock('@web3-onboard/injected-wallets', () => ({ ProviderLabel: { MetaMask: 'MetaMask' } })) jest.mock('@web3-onboard/keystone/dist/index', () => jest.fn()) -jest.mock('@web3-onboard/ledger', () => jest.fn()) +jest.mock('@web3-onboard/ledger/dist/index', () => jest.fn()) jest.mock('@web3-onboard/trezor', () => jest.fn()) jest.mock('@web3-onboard/walletconnect', () => jest.fn()) jest.mock('@web3-onboard/taho', () => jest.fn()) diff --git a/package.json b/package.json index c3e162372f..6494e53090 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "routes": "node scripts/generate-routes.js > src/config/routes.ts && prettier -w src/config/routes.ts && cat src/config/routes.ts", "css-vars": "ts-node-esm ./scripts/css-vars.ts > ./src/styles/vars.css && prettier -w src/styles/vars.css", "generate-types": "typechain --target ethers-v5 --out-dir src/types/contracts ./node_modules/@safe-global/safe-deployments/dist/assets/**/*.json ./node_modules/@safe-global/safe-modules-deployments/dist/assets/**/*.json ./node_modules/@openzeppelin/contracts/build/contracts/ERC20.json ./node_modules/@openzeppelin/contracts/build/contracts/ERC721.json", - "postinstall": "yarn patch-package && yarn generate-types && yarn css-vars", + "postinstall": "yarn generate-types && yarn css-vars", "analyze": "cross-env ANALYZE=true yarn build", "cypress:open": "cross-env TZ=UTC cypress open --e2e", "cypress:canary": "cross-env TZ=UTC cypress open --e2e -b chrome:canary", @@ -54,13 +54,13 @@ "@sentry/tracing": "^7.28.1", "@truffle/hdwallet-provider": "^2.1.4", "@web3-onboard/coinbase": "^2.2.4", - "@web3-onboard/core": "2.20.3", + "@web3-onboard/core": "2.20.4", "@web3-onboard/injected-wallets": "^2.10.0", "@web3-onboard/keystone": "^2.3.7", - "@web3-onboard/ledger": "^2.4.6", - "@web3-onboard/taho": "^2.0.4", + "@web3-onboard/ledger": "^2.5.0", + "@web3-onboard/taho": "^2.0.5", "@web3-onboard/trezor": "^2.4.2", - "@web3-onboard/walletconnect": "2.3.9", + "@web3-onboard/walletconnect": "2.4.0", "classnames": "^2.3.1", "date-fns": "^2.29.2", "ethereum-blockies-base64": "^1.0.2", @@ -115,7 +115,6 @@ "eslint-plugin-unused-imports": "^2.0.0", "jest": "^28.1.2", "jest-environment-jsdom": "^28.1.2", - "patch-package": "^7.0.0", "pre-commit": "^1.2.2", "prettier": "^2.7.0", "ts-node": "^10.8.2", diff --git a/patches/@web3-onboard+walletconnect+2.3.9.patch b/patches/@web3-onboard+walletconnect+2.3.9.patch deleted file mode 100644 index 9012fa49f5..0000000000 --- a/patches/@web3-onboard+walletconnect+2.3.9.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/node_modules/@web3-onboard/walletconnect/dist/v2.js b/node_modules/@web3-onboard/walletconnect/dist/v2.js -index 867c4cd..439b599 100644 ---- a/node_modules/@web3-onboard/walletconnect/dist/v2.js -+++ b/node_modules/@web3-onboard/walletconnect/dist/v2.js -@@ -77,7 +77,8 @@ function walletConnect(options) { - fromEvent(this.connector, 'accountsChanged', payload => payload) - .pipe(takeUntil(this.disconnected$)) - .subscribe({ -- next: accounts => { -+ next: payload => { -+ const accounts = Array.isArray(payload) ? payload : [payload] - this.emit('accountsChanged', accounts); - }, - error: console.warn diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index 36e833310f..dfee65672a 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -125,21 +125,7 @@ export const connectWallet = async ( let wallets: WalletState[] | undefined try { - // Mount the onboard modal - const promise = onboard.connectWallet(options) - - // Remove "Where's my wallet?" element if not auto-selecting a wallet - setTimeout(() => { - const onboardModal = document.querySelector('onboard-v2')?.shadowRoot - const wheresMyWallet = onboardModal?.querySelector('.wallets-container .notice-container') - - if (wheresMyWallet) { - wheresMyWallet.remove() - } - }, 100) - - // Wait for successful connection - wallets = await promise + wallets = await onboard.connectWallet(options) } catch (e) { logError(Errors._302, (e as Error).message) diff --git a/src/hooks/wallets/wallets.ts b/src/hooks/wallets/wallets.ts index 60d218bd2c..0220e895d9 100644 --- a/src/hooks/wallets/wallets.ts +++ b/src/hooks/wallets/wallets.ts @@ -5,7 +5,7 @@ import type { ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' import coinbaseModule from '@web3-onboard/coinbase' import injectedWalletModule, { ProviderLabel } from '@web3-onboard/injected-wallets' import keystoneModule from '@web3-onboard/keystone/dist/index' -import ledgerModule from '@web3-onboard/ledger' +import ledgerModule from '@web3-onboard/ledger/dist/index' import trezorModule from '@web3-onboard/trezor' import walletConnect from '@web3-onboard/walletconnect' import tahoModule from '@web3-onboard/taho' @@ -14,6 +14,10 @@ import pairingModule from '@/services/pairing/module' import e2eWalletModule from '@/tests/e2e-wallet' import { CGW_NAMES, WALLET_KEYS } from './consts' +const prefersDarkMode = (): boolean => { + return window?.matchMedia('(prefers-color-scheme: dark)')?.matches +} + // We need to modify the module name as onboard dedupes modules with the same label and the WC v1 and v2 modules have the same // @see https://github.com/blocknative/web3-onboard/blob/d399e0b76daf7b363d6a74b100b2c96ccb14536c/packages/core/src/store/actions.ts#L419 // TODO: When removing this, also remove the associated CSS in `onboard.css` @@ -34,8 +38,9 @@ const walletConnectV2 = (chain: ChainInfo): WalletInit => { projectId: WC_PROJECT_ID, qrModalOptions: { themeVariables: { - '--w3m-z-index': '1302', + '--wcm-z-index': '1302', }, + themeMode: prefersDarkMode() ? 'dark' : 'light', }, requiredChains: [parseInt(chain.chainId)], }) @@ -46,12 +51,12 @@ const WALLET_MODULES: { [key in WALLET_KEYS]: (chain: ChainInfo) => WalletInit } [WALLET_KEYS.PAIRING]: () => pairingModule(), [WALLET_KEYS.WALLETCONNECT]: () => walletConnectV1(), [WALLET_KEYS.WALLETCONNECT_V2]: (chain) => walletConnectV2(chain), - [WALLET_KEYS.LEDGER]: () => ledgerModule(), + [WALLET_KEYS.LEDGER]: (chain) => + ledgerModule({ walletConnectVersion: 2, projectId: WC_PROJECT_ID, requiredChains: [parseInt(chain.chainId)] }), [WALLET_KEYS.TREZOR]: () => trezorModule({ appUrl: TREZOR_APP_URL, email: TREZOR_EMAIL }), [WALLET_KEYS.KEYSTONE]: () => keystoneModule(), [WALLET_KEYS.TAHO]: () => tahoModule(), - [WALLET_KEYS.COINBASE]: () => - coinbaseModule({ darkMode: !!window?.matchMedia('(prefers-color-scheme: dark)')?.matches }), + [WALLET_KEYS.COINBASE]: () => coinbaseModule({ darkMode: prefersDarkMode() }), } export const getAllWallets = (chain: ChainInfo): WalletInit[] => { diff --git a/src/services/onboard.ts b/src/services/onboard.ts index 3907765e99..d50faf53ca 100644 --- a/src/services/onboard.ts +++ b/src/services/onboard.ts @@ -56,6 +56,10 @@ export const createOnboard = ( recommendedInjectedWallets: getRecommendedInjectedWallets(), }, + connect: { + removeWhereIsMyWalletWarning: true, + }, + // TODO: Investigate using `autoConnectLastWallet` instead of our `lastWalletStorage` }) diff --git a/yarn.lock b/yarn.lock index dcec9245ca..a83bec371c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2431,31 +2431,6 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@json-rpc-tools/provider@^1.5.5": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/provider/-/provider-1.7.6.tgz#8a17c34c493fa892632e278fd9331104e8491ec6" - integrity sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA== - dependencies: - "@json-rpc-tools/utils" "^1.7.6" - axios "^0.21.0" - safe-json-utils "^1.1.1" - ws "^7.4.0" - -"@json-rpc-tools/types@^1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.7.6.tgz#5abd5fde01364a130c46093b501715bcce5bdc0e" - integrity sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ== - dependencies: - keyvaluestorage-interface "^1.0.0" - -"@json-rpc-tools/utils@^1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.7.6.tgz#67f04987dbaa2e7adb6adff1575367b75a9a9ba1" - integrity sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw== - dependencies: - "@json-rpc-tools/types" "^1.7.6" - "@pedrouid/environment" "^1.0.1" - "@keystonehq/base-eth-keyring@^0.6.4": version "0.6.4" resolved "https://registry.yarnpkg.com/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.6.4.tgz#16a8b280861a70d096444bbeba236c0001d709d9" @@ -2515,10 +2490,10 @@ rxjs "^6.6.3" typescript "^4.6.2" -"@ledgerhq/connect-kit-loader@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@ledgerhq/connect-kit-loader/-/connect-kit-loader-1.0.2.tgz#8554e16943f86cc2a5f6348a14dfe6e5bd0c572a" - integrity sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g== +"@ledgerhq/connect-kit-loader@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/connect-kit-loader/-/connect-kit-loader-1.1.0.tgz#10343b78ef13436818bf3453568a559c0eeb9d48" + integrity sha512-HUy12FEczoWY2FPubnsm1uOA8tkVWc0j90i47suThV3C9NL2xx69ZAIEU3Ytzs2bwLek9S1Q2S1VQJvA+3Ygkg== "@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": version "1.1.1" @@ -2900,11 +2875,6 @@ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.2.tgz#1cb2d5e4d3360141a17dbc45094a8cad6aac16c1" integrity sha512-mO+y6JaqXjWeMh9glYVzVu8HYPGknAAnWyxTRhGeckOruyXQMNnlcW6w/Dx9ftLeIQk6N+ZJFuVmTwF7lEIFrg== -"@pedrouid/environment@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec" - integrity sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug== - "@pkgr/utils@^2.3.1": version "2.3.1" resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" @@ -4330,7 +4300,7 @@ "@walletconnect/window-metadata" "1.0.0" detect-browser "5.2.0" -"@walletconnect/client@^1.7.1", "@walletconnect/client@^1.8.0": +"@walletconnect/client@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.8.0.tgz#6f46b5499c7c861c651ff1ebe5da5b66225ca696" integrity sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ== @@ -4340,10 +4310,10 @@ "@walletconnect/types" "^1.8.0" "@walletconnect/utils" "^1.8.0" -"@walletconnect/core@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.8.0.tgz#f694e1562413c4eb700f6b3a83fa7964342100c0" - integrity sha512-pl7x4sq1nuU0ixA9wF2ecjDecUzIauKr7ZwC29rs9qTcmDpxgJbbOdZwaSl+dJlf1bHC87adVLf5KAkwwo9PzQ== +"@walletconnect/core@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.8.4.tgz#fc207c8fa35a53e30012b0c85b6ca933cec7d955" + integrity sha512-3CQHud4As0kPRvlW1w/wSWS2F3yXlAo5kSEJyRWLRPqXG+aSCVWM8cVM8ch5yoeyNIfOHhEINdsYMuJG1+yIJQ== dependencies: "@walletconnect/heartbeat" "1.2.1" "@walletconnect/jsonrpc-provider" "1.0.13" @@ -4356,8 +4326,8 @@ "@walletconnect/relay-auth" "^1.0.4" "@walletconnect/safe-json" "^1.0.2" "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.8.0" - "@walletconnect/utils" "2.8.0" + "@walletconnect/types" "2.8.4" + "@walletconnect/utils" "2.8.4" events "^3.3.0" lodash.isequal "4.5.0" uint8arrays "^3.1.0" @@ -4399,19 +4369,19 @@ dependencies: tslib "1.14.1" -"@walletconnect/ethereum-provider@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.8.0.tgz#15e9efa37b7c2455cd30c883f5698c89e481b163" - integrity sha512-nVVJtZUpoeurFjoEPYlrUHkT3YleCpEC9YAMKJyEIB3MZZInttcGxGyi0vwFQ+trCfuX8RrdKUPQ952NvxvCvw== +"@walletconnect/ethereum-provider@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.8.4.tgz#c627c237b479194efc542b8475596bae12fde52d" + integrity sha512-z7Yz4w8t3eEFv8vQ8DLCgDWPah2aIIyC0iQdwhXgJenQTVuz7JJZRrJUUntzudipHK/owA394c1qTPF0rsMSeQ== dependencies: "@walletconnect/jsonrpc-http-connection" "^1.0.7" "@walletconnect/jsonrpc-provider" "^1.0.13" "@walletconnect/jsonrpc-types" "^1.0.3" "@walletconnect/jsonrpc-utils" "^1.0.8" - "@walletconnect/sign-client" "2.8.0" - "@walletconnect/types" "2.8.0" - "@walletconnect/universal-provider" "2.8.0" - "@walletconnect/utils" "2.8.0" + "@walletconnect/sign-client" "2.8.4" + "@walletconnect/types" "2.8.4" + "@walletconnect/universal-provider" "2.8.4" + "@walletconnect/utils" "2.8.4" events "^3.3.0" "@walletconnect/events@^1.0.1": @@ -4525,13 +4495,57 @@ resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== -"@walletconnect/modal@2.4.3": - version "2.4.3" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.4.3.tgz#e213f2129415a059763e1f3d51da3c90eb39498b" - integrity sha512-YcvkfBN7qBdZk0juUxnbPsyA9n0v15PK+7vL55u1v1mgMhPosvUU2dMIcPqlan+TgSPByo7moEBbHtCbYZpLVw== +"@walletconnect/modal-core@2.5.4": + version "2.5.4" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.5.4.tgz#7d739a90a9cf103067eea46507ea649e8dada436" + integrity sha512-ISe4LqmEDFU7b6rLgonqaEtMXzG6ko13HA7S8Ty3d7GgfAEe29LM1dq3zo8ehEOghhofhj1PiiNfvaogZKzT1g== + dependencies: + buffer "6.0.3" + valtio "1.10.6" + +"@walletconnect/modal-core@2.5.5": + version "2.5.5" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.5.5.tgz#dc2ee96b1dd7cd9a1dc5e276c46068ee6349616a" + integrity sha512-M2BKcI5aqnGfMAz+MgTsvnTRzD25uz9YJ3/xuzy+ovgFCl2VCGH2Vdrf6Ptu+UR6UMuPdssG1TXXe1rd907Dxw== + dependencies: + buffer "6.0.3" + valtio "1.10.6" + +"@walletconnect/modal-ui@2.5.4": + version "2.5.4" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.5.4.tgz#0433fb0226dd47e17fede620c5a5ff332baed155" + integrity sha512-5qLLjwbE3YC4AsCVhf8J87otklkApcQ5DCMykOcS0APPv8lKQ46JxpQhfWwRYaUkuIiHonI9h1YxFARDkoaI9g== + dependencies: + "@walletconnect/modal-core" "2.5.4" + lit "2.7.5" + motion "10.16.2" + qrcode "1.5.3" + +"@walletconnect/modal-ui@2.5.5": + version "2.5.5" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.5.5.tgz#f2ab96ab72f0f1325252224560ec610b73d1684c" + integrity sha512-g0LJ/gRhZ5E30gk4GnMpDlQzLFWyRjsJp57s9rZmlVkry5mfhCZ3Oh0mfgv2/ILVxdB4fUo1BjatKyOpSogOmg== + dependencies: + "@walletconnect/modal-core" "2.5.5" + lit "2.7.5" + motion "10.16.2" + qrcode "1.5.3" + +"@walletconnect/modal@2.5.4": + version "2.5.4" + resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.5.4.tgz#66659051f9c0f35c151d3a8d940f8c64d42fab74" + integrity sha512-JAKMcCd4JQvSEr7pNitg3OBke4DN1JyaQ7bdi3x4T7oLgOr9Y88qdkeOXko/0aJonDHJsM88hZ10POQWmKfEMA== + dependencies: + "@walletconnect/modal-core" "2.5.4" + "@walletconnect/modal-ui" "2.5.4" + +"@walletconnect/modal@2.5.5": + version "2.5.5" + resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.5.5.tgz#703eb076af4442dcd14a3b0b87863f17283f6514" + integrity sha512-y1PH1xXzFDtVZErfQErPPJzPU9DKLp4M0IEaza8LfegqHfTFaGa0s3AL+i5+7FIk9+5OHSv0Wv+e5tmSZt96yA== dependencies: - "@web3modal/core" "2.4.3" - "@web3modal/ui" "2.4.3" + "@walletconnect/modal-core" "2.5.5" + "@walletconnect/modal-ui" "2.5.5" "@walletconnect/qrcode-modal@^1.8.0": version "1.8.0" @@ -4587,19 +4601,19 @@ dependencies: tslib "1.14.1" -"@walletconnect/sign-client@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.8.0.tgz#735dc8bf120242584fb2ff22c6a3d672c1fae1a1" - integrity sha512-+l9qwvVeUGk0fBQsgx6yb6hdGYt8uQ3a9jR9GgsJvm8FjFh1oUzTKqFnG7XdhCBnzFnbSoLr41Xe8PbN8qoUSw== +"@walletconnect/sign-client@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.8.4.tgz#35e7cfe9442c65d7f667a7c20f1a5ee7e2a6e576" + integrity sha512-eRvWtKBAgzo/rbIkw+rkKco2ulSW8Wor/58UsOBsl9DKr1rIazZd4ZcUdaTjg9q8AT1476IQakCAIuv+1FvJwQ== dependencies: - "@walletconnect/core" "2.8.0" + "@walletconnect/core" "2.8.4" "@walletconnect/events" "^1.0.1" "@walletconnect/heartbeat" "1.2.1" "@walletconnect/jsonrpc-utils" "1.0.8" "@walletconnect/logger" "^2.0.1" "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.8.0" - "@walletconnect/utils" "2.8.0" + "@walletconnect/types" "2.8.4" + "@walletconnect/utils" "2.8.4" events "^3.3.0" "@walletconnect/socket-transport@^1.8.0": @@ -4618,10 +4632,10 @@ dependencies: tslib "1.14.1" -"@walletconnect/types@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.8.0.tgz#f8a5f09ee2b31abed231966e7e1eebd22be058a2" - integrity sha512-FMeGK3lGXFDwcs5duoN74xL1aLrkgYqnavWE0DnFPt2i1QmSUITU9c8f88EDh8uPXANd2WIYOItm0DVCNxLGGA== +"@walletconnect/types@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.8.4.tgz#23fad8593b094c7564d72f179e33b1cac9324a88" + integrity sha512-Fgqe87R7rjMOGSvx28YPLTtXM6jj+oUOorx8cE+jEw2PfpWp5myF21aCdaMBR39h0QHij5H1Z0/W9e7gm4oC1Q== dependencies: "@walletconnect/events" "^1.0.1" "@walletconnect/heartbeat" "1.2.1" @@ -4635,26 +4649,25 @@ resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.8.0.tgz#3f5e85b2d6b149337f727ab8a71b8471d8d9a195" integrity sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg== -"@walletconnect/universal-provider@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.8.0.tgz#134f6873742f672c2424969335f9cc75d1532d17" - integrity sha512-BMsGiINI3rT7DRyDJM7miuWG6vDVE0PV6zMcCXIMDYYPay7zFvJxv2VHEx9an4MutrvQR76NTRyG//i1K84VOQ== +"@walletconnect/universal-provider@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.8.4.tgz#7b62a76a7d99ea41c67374da54aaa4f1b4bc1d03" + integrity sha512-JRpOXKIciRMzd03zZxM1WDsYHo/ZS86zZrZ1aCHW1d45ZLP7SbGPRHzZgBY3xrST26yTvWIlRfTUEYn50fzB1g== dependencies: "@walletconnect/jsonrpc-http-connection" "^1.0.7" "@walletconnect/jsonrpc-provider" "1.0.13" "@walletconnect/jsonrpc-types" "^1.0.2" "@walletconnect/jsonrpc-utils" "^1.0.7" "@walletconnect/logger" "^2.0.1" - "@walletconnect/sign-client" "2.8.0" - "@walletconnect/types" "2.8.0" - "@walletconnect/utils" "2.8.0" - eip1193-provider "1.0.1" + "@walletconnect/sign-client" "2.8.4" + "@walletconnect/types" "2.8.4" + "@walletconnect/utils" "2.8.4" events "^3.3.0" -"@walletconnect/utils@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.8.0.tgz#c219e78fd2c35062cf3e37f84961afde8da9b9a1" - integrity sha512-Q8OwMtUevIn1+64LXyTMLlhH58k3UOAjU5b3smYZ7CEEmwEGpOTfTDAWrB3v+ZDIhjyqP94+8fuvKIbcVLKLWA== +"@walletconnect/utils@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.8.4.tgz#8dbd3beaef39388be2398145a5f9a061a0317518" + integrity sha512-NGw6BINYNeT9JrQrnxldAPheO2ymRrwGrgfExZMyrkb1MShnIX4nzo4KirKInM4LtrY6AA/v0Lu3ooUdfO+xIg== dependencies: "@stablelib/chacha20poly1305" "1.0.1" "@stablelib/hkdf" "1.0.1" @@ -4664,7 +4677,7 @@ "@walletconnect/relay-api" "^1.0.9" "@walletconnect/safe-json" "^1.0.2" "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.8.0" + "@walletconnect/types" "2.8.4" "@walletconnect/window-getters" "^1.0.1" "@walletconnect/window-metadata" "^1.0.1" detect-browser "5.3.0" @@ -4728,10 +4741,10 @@ ethers "5.5.4" joi "17.9.1" -"@web3-onboard/core@2.20.3": - version "2.20.3" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.3.tgz#e123979f9360057cd184d715fdedc9f0bbf45941" - integrity sha512-2fm8kJ4T4DXvPNU7rjWCAxFFEZXx2Xz7LiUCg+qXvhiHzJBBxGOBbL81HwZk9hR3eZzWwQt9tLmbFx0G2uREow== +"@web3-onboard/core@2.20.4": + version "2.20.4" + resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.4.tgz#ccc9ff509e56720e526b4ceae5459a1f2a435d22" + integrity sha512-IFI3DVq5QgFj5w1TyL61gHmeOlkX8AJiBAARO3cd4zW8I3h9K2+7HeE7LbsfwefZYLILzXCfF0gMB3qRN/GWYQ== dependencies: "@web3-onboard/common" "^2.3.3" bignumber.js "^9.0.0" @@ -4778,21 +4791,22 @@ "@web3-onboard/common" "^2.3.3" "@web3-onboard/hw-common" "^2.3.0" -"@web3-onboard/ledger@^2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@web3-onboard/ledger/-/ledger-2.4.6.tgz#1e92c2a5b59920f9ee70294314854dcea905e18d" - integrity sha512-TuWtZvhaxRXNKHRoqryt6cFRVpmVo3z4Zvos4+FS1/ZaNB5aBgZAH3MGWZhX0OFAKRki8JyOWVFJNdM7yUO4pA== +"@web3-onboard/ledger@^2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@web3-onboard/ledger/-/ledger-2.5.0.tgz#0ed29ece757706caa88a352ef33e63f9b2a0fedb" + integrity sha512-hMgQk/mX+/Ed6T18eEBPy3i8QgN9JYr2brplWRssRLX+pTGtic57CchkxvLRpgm4Qpz5YQyX3IuyoIILwfUjzA== dependencies: - "@ethersproject/providers" "^5.5.0" - "@ledgerhq/connect-kit-loader" "^1.0.2" - "@walletconnect/client" "^1.7.1" + "@ledgerhq/connect-kit-loader" "^1.1.0" + "@walletconnect/client" "^1.8.0" + "@walletconnect/ethereum-provider" "2.8.4" + "@walletconnect/modal" "2.5.4" "@web3-onboard/common" "^2.3.3" rxjs "^7.5.2" -"@web3-onboard/taho@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@web3-onboard/taho/-/taho-2.0.4.tgz#5566531c666c62dba2b95ba1a7c269702ab8c169" - integrity sha512-1cObIJEJZSg9o/SdsNqZP3V9t8/KJ+ZcTuQgc1quExWbUpWMafE7ASusyOU5jsy3gKo4+xI147MAw4AjRJUXiw== +"@web3-onboard/taho@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@web3-onboard/taho/-/taho-2.0.5.tgz#899d147c234d61e1fb81045fc7339182c230c632" + integrity sha512-Z5n2UMumLNppOlDgYM9MhrM+YGyz8Emouaf7htH8l4B2r/meV4F3Wkgol2xYuwwu5SJyPaJH2GxNeh/EAfyBxg== dependencies: "@web3-onboard/common" "^2.3.3" tallyho-detect-provider "^1.0.0" @@ -4813,42 +4827,19 @@ ethereumjs-util "^7.1.3" hdkey "^2.0.1" -"@web3-onboard/walletconnect@2.3.9": - version "2.3.9" - resolved "https://registry.yarnpkg.com/@web3-onboard/walletconnect/-/walletconnect-2.3.9.tgz#a569db39db61c927fee70744c5fcf015dad47042" - integrity sha512-0n1UesJLNNU33j/I0X4QHVL8AhFb6Oyo/ZU3EEYeDBev2Cis1A6Bvl38BfmeBBMdBOZBxeTOC2kNeRjvvvpzhA== +"@web3-onboard/walletconnect@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@web3-onboard/walletconnect/-/walletconnect-2.4.0.tgz#fe446706cde736ca629c56c190bc9b314eaa70b3" + integrity sha512-Qu3uHWsumOedHDzwqOoUrA40rNO0C6Sgw62XeIxSC+JsIB2K4Y5rXhTbMeYtO0lmWmHA8DYXxk8czYkdMZh19Q== dependencies: "@ethersproject/providers" "5.5.0" "@walletconnect/client" "^1.8.0" - "@walletconnect/ethereum-provider" "2.8.0" - "@walletconnect/modal" "2.4.3" + "@walletconnect/ethereum-provider" "2.8.4" + "@walletconnect/modal" "2.5.5" "@walletconnect/qrcode-modal" "^1.8.0" "@web3-onboard/common" "^2.3.3" rxjs "^7.5.2" -"@web3modal/core@2.4.3": - version "2.4.3" - resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-2.4.3.tgz#ea6d3911e52a132c70defb7584f869d09a8af974" - integrity sha512-7Z/sDe9RIYQ2k9ITcxgEa/u7FvlI76vcVVZn9UY4ISivefqrH4JAS3GX4JmVNUUlovwuiZdyqBv4llAQOMK6Rg== - dependencies: - buffer "6.0.3" - valtio "1.10.5" - -"@web3modal/ui@2.4.3": - version "2.4.3" - resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-2.4.3.tgz#986c6bed528dccab679c734ff531e42f6605c5b2" - integrity sha512-J989p8CdtEhI9gZHf/rZ/WFqYlrAHWw9GmAhFoiNODwjAp0BoG/uoaPiijJMchXdngihZOjLGCQwDXU16DHiKg== - dependencies: - "@web3modal/core" "2.4.3" - lit "2.7.5" - motion "10.16.2" - qrcode "1.5.3" - -"@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -5264,13 +5255,6 @@ axe-core@^4.4.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.1.tgz#79cccdee3e3ab61a8f42c458d4123a6768e6fbce" integrity sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w== -axios@^0.21.0: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -5915,7 +5899,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, 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== @@ -5965,11 +5949,6 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.0.tgz#6d01b3696c59915b6ce057e4aa4adfc2fa25f5ef" integrity sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog== -ci-info@^3.7.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== - cids@^0.7.1: version "0.7.5" resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" @@ -6915,13 +6894,6 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -eip1193-provider@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/eip1193-provider/-/eip1193-provider-1.0.1.tgz#420d29cf4f6c443e3f32e718fb16fafb250637c3" - integrity sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g== - dependencies: - "@json-rpc-tools/provider" "^1.5.5" - ejs@^3.1.6: version "3.1.8" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" @@ -8242,13 +8214,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== - dependencies: - micromatch "^4.0.2" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -8262,11 +8227,6 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -follow-redirects@^1.14.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -8330,7 +8290,7 @@ fs-extra@^7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: +fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -8607,11 +8567,6 @@ got@^11.8.5: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.1.11: - 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== - graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" @@ -9268,7 +9223,7 @@ is-what@^3.14.1: resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== -is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -10087,13 +10042,6 @@ keyvaluestorage-interface@^1.0.0: resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -10524,7 +10472,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.2, micromatch@^4.0.4: +micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -11019,14 +10967,6 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - open@^8.4.0: version "8.4.0" resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" @@ -11070,11 +11010,6 @@ os-shim@^0.1.2: resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" integrity sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A== -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - ospath@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" @@ -11195,26 +11130,6 @@ parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -patch-package@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-7.0.0.tgz#5c646b6b4b4bf37e5184a6950777b21dea6bb66e" - integrity sha512-eYunHbnnB2ghjTNc5iL1Uo7TsGMuXk0vibX3RFcE/CdVdXzmdbMsG/4K4IgoSuIkLTI5oHrMQk4+NkFqSed0BQ== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^4.1.2" - ci-info "^3.7.0" - cross-spawn "^7.0.3" - find-yarn-workspace-root "^2.0.0" - fs-extra "^9.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.6" - open "^7.4.2" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - yaml "^2.2.2" - path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" @@ -12655,11 +12570,6 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -13292,13 +13202,6 @@ tiny-secp256k1@^1.1.6: elliptic "^6.4.0" nan "^2.13.2" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -13810,10 +13713,10 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" -valtio@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.10.5.tgz#7852125e3b774b522827d96bd9c76d285c518678" - integrity sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ== +valtio@1.10.6: + version "1.10.6" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.10.6.tgz#80ed00198b949939863a0fa56ae687abb417fc4f" + integrity sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA== dependencies: proxy-compare "2.5.1" use-sync-external-store "1.2.0" @@ -14541,7 +14444,7 @@ ws@7.5.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== -ws@7.5.9, ws@^7.2.0, ws@^7.3.1, ws@^7.4.0, ws@^7.4.5, ws@^7.5.1: +ws@7.5.9, ws@^7.2.0, ws@^7.3.1, ws@^7.4.5, ws@^7.5.1: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== @@ -14654,11 +14557,6 @@ yaml@^1.10.0, yaml@^1.10.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.2.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" - integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== - yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" From d4885e1298b79125cbed186120255b08aa449862 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Mon, 3 Jul 2023 14:11:27 +0200 Subject: [PATCH 346/422] fix: revert Ledger module (#2215) --- package.json | 2 +- src/config/securityHeaders.ts | 2 +- src/hooks/wallets/wallets.ts | 3 +- src/services/pairing/module.ts | 2 + src/styles/onboard.css | 5 - yarn.lock | 270 +++++++++++++++++++++++++++------ 6 files changed, 231 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index 6494e53090..1dee69ab38 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "@web3-onboard/core": "2.20.4", "@web3-onboard/injected-wallets": "^2.10.0", "@web3-onboard/keystone": "^2.3.7", - "@web3-onboard/ledger": "^2.5.0", + "@web3-onboard/ledger": "2.3.2", "@web3-onboard/taho": "^2.0.5", "@web3-onboard/trezor": "^2.4.2", "@web3-onboard/walletconnect": "2.4.0", diff --git a/src/config/securityHeaders.ts b/src/config/securityHeaders.ts index 611f747d95..3da8be5bf0 100644 --- a/src/config/securityHeaders.ts +++ b/src/config/securityHeaders.ts @@ -12,7 +12,7 @@ import { CYPRESS_MNEMONIC, IS_PRODUCTION } from '@/config/constants' export const ContentSecurityPolicy = ` default-src 'self'; connect-src 'self' *; - script-src 'self' https://www.google-analytics.com https://ssl.google-analytics.com 'unsafe-inline' https://*.getbeamer.com https://www.googletagmanager.com https://*.ingest.sentry.io https://sentry.io https://cdn.jsdelivr.net/npm/@ledgerhq/connect-kit@1 ${ + script-src 'self' https://www.google-analytics.com https://ssl.google-analytics.com 'unsafe-inline' https://*.getbeamer.com https://www.googletagmanager.com https://*.ingest.sentry.io https://sentry.io ${ !IS_PRODUCTION || /* TODO: remove after moving cypress to görli and testing in staging again!! */ CYPRESS_MNEMONIC ? "'unsafe-eval'" : '' diff --git a/src/hooks/wallets/wallets.ts b/src/hooks/wallets/wallets.ts index 0220e895d9..8260878602 100644 --- a/src/hooks/wallets/wallets.ts +++ b/src/hooks/wallets/wallets.ts @@ -51,8 +51,7 @@ const WALLET_MODULES: { [key in WALLET_KEYS]: (chain: ChainInfo) => WalletInit } [WALLET_KEYS.PAIRING]: () => pairingModule(), [WALLET_KEYS.WALLETCONNECT]: () => walletConnectV1(), [WALLET_KEYS.WALLETCONNECT_V2]: (chain) => walletConnectV2(chain), - [WALLET_KEYS.LEDGER]: (chain) => - ledgerModule({ walletConnectVersion: 2, projectId: WC_PROJECT_ID, requiredChains: [parseInt(chain.chainId)] }), + [WALLET_KEYS.LEDGER]: () => ledgerModule(), [WALLET_KEYS.TREZOR]: () => trezorModule({ appUrl: TREZOR_APP_URL, email: TREZOR_EMAIL }), [WALLET_KEYS.KEYSTONE]: () => keystoneModule(), [WALLET_KEYS.TAHO]: () => tahoModule(), diff --git a/src/services/pairing/module.ts b/src/services/pairing/module.ts index 74b0e0c7d8..d4187c8644 100644 --- a/src/services/pairing/module.ts +++ b/src/services/pairing/module.ts @@ -75,6 +75,7 @@ const pairingModule = (): WalletInit => { this.disconnected$ = new Subject() this.providers = {} + // @ts-expect-error - `payload` type (`ISessionStatus`) is not correctly `pipe`ed fromEvent(this.connector, ProviderEvents.WC_SESSION_UPDATE, (error, payload) => { if (error) { throw error @@ -93,6 +94,7 @@ const pairingModule = (): WalletInit => { error: console.warn, }) + // @ts-expect-error - `this.connector` does not satisfy the event target type fromEvent(this.connector, ProviderEvents.DISCONNECT, (error, payload) => { if (error) { throw error diff --git a/src/styles/onboard.css b/src/styles/onboard.css index bbbbfb5e1a..f5bf1bd78c 100644 --- a/src/styles/onboard.css +++ b/src/styles/onboard.css @@ -107,8 +107,3 @@ #kv_sdk_container + .ReactModalPortal .ReactModal__Content { padding: 0 !important; } - -/* Ledger modal */ -.ledger-ck-modal > div#ModalWrapper { - z-index: 9999999 !important; -} diff --git a/yarn.lock b/yarn.lock index a83bec371c..4c5b8f8731 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2490,10 +2490,137 @@ rxjs "^6.6.3" typescript "^4.6.2" -"@ledgerhq/connect-kit-loader@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/connect-kit-loader/-/connect-kit-loader-1.1.0.tgz#10343b78ef13436818bf3453568a559c0eeb9d48" - integrity sha512-HUy12FEczoWY2FPubnsm1uOA8tkVWc0j90i47suThV3C9NL2xx69ZAIEU3Ytzs2bwLek9S1Q2S1VQJvA+3Ygkg== +"@ledgerhq/cryptoassets@^9.8.0": + version "9.8.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-9.8.0.tgz#e0b3470ea6bb6a0ea22a4e2abb81b9602a877e0f" + integrity sha512-0ryUC3u50CYXN4bQFMjlXXgID7+v1u/t/rDvmtRETKRxM9zEUDI8bULF5nGyCPR/a4z+I4WAe+GbSzbsGsWAhA== + dependencies: + invariant "2" + +"@ledgerhq/devices@^5.51.1": + version "5.51.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.51.1.tgz#d741a4a5d8f17c2f9d282fd27147e6fe1999edb7" + integrity sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA== + dependencies: + "@ledgerhq/errors" "^5.50.0" + "@ledgerhq/logs" "^5.50.0" + rxjs "6" + semver "^7.3.5" + +"@ledgerhq/devices@^8.0.4": + version "8.0.4" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.4.tgz#ebc7779adbbec2d046424603a481623eb3fbe306" + integrity sha512-dxOiWZmtEv1tgw70+rW8gviCRZUeGDUnxY6HUPiRqTAc0Ts2AXxiJChgAsPvIywWTGW+S67Nxq1oTZdpRbdt+A== + dependencies: + "@ledgerhq/errors" "^6.12.7" + "@ledgerhq/logs" "^6.10.1" + rxjs "6" + semver "^7.3.5" + +"@ledgerhq/domain-service@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@ledgerhq/domain-service/-/domain-service-1.1.4.tgz#305fe076f6d206d56bb2cc107ef900f02b6c8879" + integrity sha512-jKnKqm/rqyAcDBgI/ZYom9kFDsBQkodxy6E14IEUJ5N8OkbPdHmjRfzn973nc5mTFJIafaifx0Arde0sjrBP9g== + dependencies: + "@ledgerhq/cryptoassets" "^9.8.0" + "@ledgerhq/errors" "^6.12.6" + "@ledgerhq/logs" "^6.10.1" + "@ledgerhq/types-live" "^6.35.1" + axios "^1.3.4" + eip55 "^2.1.0" + react "^17.0.2" + react-dom "^17.0.2" + +"@ledgerhq/errors@^5.34.0", "@ledgerhq/errors@^5.50.0": + version "5.50.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.50.0.tgz#e3a6834cb8c19346efca214c1af84ed28e69dad9" + integrity sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow== + +"@ledgerhq/errors@^6.12.6", "@ledgerhq/errors@^6.12.7": + version "6.12.7" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.7.tgz#c7b630488d5713bc7b1e1682d6ab5d08918c69f1" + integrity sha512-1BpjzFErPK7qPFx0oItcX0mNLJMplVAm2Dpl5urZlubewnTyyw5sahIBjU+8LLCWJ2eGEh/0wyvh0jMtR0n2Mg== + +"@ledgerhq/hw-app-eth@^6.19.0": + version "6.33.6" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-6.33.6.tgz#c9893ec5262952ced6d2fddfa12a87f2ccba61cc" + integrity sha512-QzYvr5FNEWWd70Vg04A2i8CY0mtPgJrrX7/KePabjXrR8NjDyJ5Ej8qSQPBTp2dkR4TGiz5Y7+HIcWpdgYzjzg== + dependencies: + "@ethersproject/abi" "^5.5.0" + "@ethersproject/rlp" "^5.5.0" + "@ledgerhq/cryptoassets" "^9.8.0" + "@ledgerhq/domain-service" "^1.1.4" + "@ledgerhq/errors" "^6.12.6" + "@ledgerhq/hw-transport" "^6.28.4" + "@ledgerhq/hw-transport-mocker" "^6.27.15" + "@ledgerhq/logs" "^6.10.1" + axios "^1.3.4" + bignumber.js "^9.1.0" + crypto-js "^4.1.1" + +"@ledgerhq/hw-transport-mocker@^6.27.15": + version "6.27.16" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.27.16.tgz#f3fc9a3f5a06de4d4163d39d57150d08279c00c0" + integrity sha512-Il5ilAULsNSE5Wa8qG+Da+LcK61czU1pq8wrRjSd6rLbK0zLPOF2mUgMW1iwMgkdICGFLA0KUz2wouoVjQPqaw== + dependencies: + "@ledgerhq/hw-transport" "^6.28.5" + "@ledgerhq/logs" "^6.10.1" + +"@ledgerhq/hw-transport-u2f@^5.36.0-deprecated": + version "5.36.0-deprecated" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.36.0-deprecated.tgz#66e3ed399a117a1c0110871a055dd54f5fe707fd" + integrity sha512-T/+mGHIiUK/ZQATad6DMDmobCMZ1mVST952009jKzhaE1Et2Uy2secU+QhRkx3BfEAkvwa0zSRSYCL9d20Iqjg== + dependencies: + "@ledgerhq/errors" "^5.34.0" + "@ledgerhq/hw-transport" "^5.34.0" + "@ledgerhq/logs" "^5.30.0" + u2f-api "0.2.7" + +"@ledgerhq/hw-transport-webusb@^6.19.0": + version "6.27.16" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.27.16.tgz#b8e20e772f78c312fc7f2ce3a469c99ecf59dc67" + integrity sha512-A3S2p5Rh9Ot402pWNZw8v5EpO3wOHP8ch/Dcz0AjInmwNouQ9nIYd1+eLSL7QiyG9X7+tuHxFF1IjrEgvAzQuQ== + dependencies: + "@ledgerhq/devices" "^8.0.4" + "@ledgerhq/errors" "^6.12.7" + "@ledgerhq/hw-transport" "^6.28.5" + "@ledgerhq/logs" "^6.10.1" + +"@ledgerhq/hw-transport@^5.34.0": + version "5.51.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz#8dd14a8e58cbee4df0c29eaeef983a79f5f22578" + integrity sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw== + dependencies: + "@ledgerhq/devices" "^5.51.1" + "@ledgerhq/errors" "^5.50.0" + events "^3.3.0" + +"@ledgerhq/hw-transport@^6.28.4", "@ledgerhq/hw-transport@^6.28.5": + version "6.28.5" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.5.tgz#675193be2f695a596068145351da598316c25831" + integrity sha512-xmw5RhYbqExBBqTvOnOjN/RYNIGMBxFJ+zcYNfkfw/E+uEY3L7xq8Z7sC/n7URTT6xtEctElqduBJnBQE4OQtw== + dependencies: + "@ledgerhq/devices" "^8.0.4" + "@ledgerhq/errors" "^6.12.7" + events "^3.3.0" + +"@ledgerhq/logs@^5.30.0", "@ledgerhq/logs@^5.50.0": + version "5.50.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186" + integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== + +"@ledgerhq/logs@^6.10.1": + version "6.10.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.1.tgz#5bd16082261d7364eabb511c788f00937dac588d" + integrity sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w== + +"@ledgerhq/types-live@^6.35.1": + version "6.35.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/types-live/-/types-live-6.35.1.tgz#90ad68ef1514641a04ea7c14d524a2a2d60ef004" + integrity sha512-p9xFAV7xKcrUZDO8C0geGPW1CXAWqWogbDrVG8PnCZfmcmH+AVwzHoUcKMi9SzmV3iF8N7IRGe9UVIqqrINthw== + dependencies: + bignumber.js "^9.1.0" + rxjs "6" "@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": version "1.1.1" @@ -2507,7 +2634,7 @@ dependencies: "@lit-labs/ssr-dom-shim" "^1.0.0" -"@metamask/eth-sig-util@4.0.1": +"@metamask/eth-sig-util@4.0.1", "@metamask/eth-sig-util@^4.0.0": version "4.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== @@ -4495,14 +4622,6 @@ resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== -"@walletconnect/modal-core@2.5.4": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.5.4.tgz#7d739a90a9cf103067eea46507ea649e8dada436" - integrity sha512-ISe4LqmEDFU7b6rLgonqaEtMXzG6ko13HA7S8Ty3d7GgfAEe29LM1dq3zo8ehEOghhofhj1PiiNfvaogZKzT1g== - dependencies: - buffer "6.0.3" - valtio "1.10.6" - "@walletconnect/modal-core@2.5.5": version "2.5.5" resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.5.5.tgz#dc2ee96b1dd7cd9a1dc5e276c46068ee6349616a" @@ -4511,16 +4630,6 @@ buffer "6.0.3" valtio "1.10.6" -"@walletconnect/modal-ui@2.5.4": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.5.4.tgz#0433fb0226dd47e17fede620c5a5ff332baed155" - integrity sha512-5qLLjwbE3YC4AsCVhf8J87otklkApcQ5DCMykOcS0APPv8lKQ46JxpQhfWwRYaUkuIiHonI9h1YxFARDkoaI9g== - dependencies: - "@walletconnect/modal-core" "2.5.4" - lit "2.7.5" - motion "10.16.2" - qrcode "1.5.3" - "@walletconnect/modal-ui@2.5.5": version "2.5.5" resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.5.5.tgz#f2ab96ab72f0f1325252224560ec610b73d1684c" @@ -4531,14 +4640,6 @@ motion "10.16.2" qrcode "1.5.3" -"@walletconnect/modal@2.5.4": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.5.4.tgz#66659051f9c0f35c151d3a8d940f8c64d42fab74" - integrity sha512-JAKMcCd4JQvSEr7pNitg3OBke4DN1JyaQ7bdi3x4T7oLgOr9Y88qdkeOXko/0aJonDHJsM88hZ10POQWmKfEMA== - dependencies: - "@walletconnect/modal-core" "2.5.4" - "@walletconnect/modal-ui" "2.5.4" - "@walletconnect/modal@2.5.5": version "2.5.5" resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.5.5.tgz#703eb076af4442dcd14a3b0b87863f17283f6514" @@ -4732,7 +4833,7 @@ "@coinbase/wallet-sdk" "^3.6.0" "@web3-onboard/common" "^2.3.3" -"@web3-onboard/common@^2.3.3": +"@web3-onboard/common@^2.2.3", "@web3-onboard/common@^2.3.3": version "2.3.3" resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.3.3.tgz#02096e967dbed272c0637cda955902b96a0fce06" integrity sha512-Ytppszqe77VY8WglRdr/Lfx+HmcZ2hXQEkBA23JaVYmzKvP/mC6j+sjGUD8CgXDpRRxyKoiRj6nz95GRABie6Q== @@ -4760,7 +4861,7 @@ svelte "^3.49.0" svelte-i18n "^3.3.13" -"@web3-onboard/hw-common@^2.3.0": +"@web3-onboard/hw-common@^2.0.4", "@web3-onboard/hw-common@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@web3-onboard/hw-common/-/hw-common-2.3.0.tgz#715d35c4039515e3f8ec839643e6d4c49097891f" integrity sha512-ai5gwaXHxMOgov+TKuy2yUtBf7b2Vq8c28L9tSx4Hl8Q2IM6boGZQEqfW6Hw0GHu/Ez+MxRR5+M6nfwFBf8JRw== @@ -4791,17 +4892,21 @@ "@web3-onboard/common" "^2.3.3" "@web3-onboard/hw-common" "^2.3.0" -"@web3-onboard/ledger@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/ledger/-/ledger-2.5.0.tgz#0ed29ece757706caa88a352ef33e63f9b2a0fedb" - integrity sha512-hMgQk/mX+/Ed6T18eEBPy3i8QgN9JYr2brplWRssRLX+pTGtic57CchkxvLRpgm4Qpz5YQyX3IuyoIILwfUjzA== +"@web3-onboard/ledger@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@web3-onboard/ledger/-/ledger-2.3.2.tgz#aaa436393d8ffdc156fd318154df5e61361d54bb" + integrity sha512-0KLXmnXNs6iTZEhBdGDgg+L5t8rOTroZjYu8l3Qebd02hNBIeaNxgCXIOQ1Y97qvcQz/8rb6oZ1wMp7unmSA1g== dependencies: - "@ledgerhq/connect-kit-loader" "^1.1.0" - "@walletconnect/client" "^1.8.0" - "@walletconnect/ethereum-provider" "2.8.4" - "@walletconnect/modal" "2.5.4" - "@web3-onboard/common" "^2.3.3" - rxjs "^7.5.2" + "@ethereumjs/tx" "^3.4.0" + "@ethersproject/providers" "^5.5.0" + "@ledgerhq/hw-app-eth" "^6.19.0" + "@ledgerhq/hw-transport-u2f" "^5.36.0-deprecated" + "@ledgerhq/hw-transport-webusb" "^6.19.0" + "@metamask/eth-sig-util" "^4.0.0" + "@web3-onboard/common" "^2.2.3" + "@web3-onboard/hw-common" "^2.0.4" + buffer "^6.0.3" + ethereumjs-util "^7.1.3" "@web3-onboard/taho@^2.0.5": version "2.0.5" @@ -5255,6 +5360,15 @@ axe-core@^4.4.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.1.tgz#79cccdee3e3ab61a8f42c458d4123a6768e6fbce" integrity sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w== +axios@^1.3.4: + version "1.4.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" + integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -6391,6 +6505,11 @@ crypto-es@^1.2.2: resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== +crypto-js@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" + integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== + crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -6894,6 +7013,13 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +eip55@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/eip55/-/eip55-2.1.1.tgz#28b743c4701ac3c811b1e9fe67e39cf1d0781b96" + integrity sha512-WcagVAmNu2Ww2cDUfzuWVntYwFxbvZ5MvIyLZpMjTTkjD6sCvkGOiS86jTppzu9/gWsc8isLHAeMBWK02OnZmA== + dependencies: + keccak "^3.0.3" + ejs@^3.1.6: version "3.1.8" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" @@ -8227,6 +8353,11 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -8926,6 +9057,13 @@ intl-messageformat@^9.13.0: "@formatjs/icu-messageformat-parser" "2.1.0" tslib "^2.1.0" +invariant@2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + ip@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" @@ -10030,6 +10168,15 @@ keccak@3.0.2, keccak@^3.0.0, keccak@^3.0.1: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keccak@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + keyv@^4.0.0: version "4.5.2" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" @@ -11511,6 +11658,11 @@ proxy-from-env@1.0.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== +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== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -11713,6 +11865,15 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + react-dropzone@^14.2.3: version "14.2.3" resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-14.2.3.tgz#0acab68308fda2d54d1273a1e626264e13d4e84b" @@ -11817,6 +11978,14 @@ react@18.2.0: dependencies: loose-envify "^1.1.0" +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + readable-stream@^1.0.33: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -12239,7 +12408,7 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rxjs@^6.6.3: +rxjs@6, rxjs@^6.6.3: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== @@ -12337,6 +12506,14 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler@^0.23.0: version "0.23.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" @@ -13526,6 +13703,11 @@ typical@^5.2.0: resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== +u2f-api@0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" + integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== + ua-parser-js@^1.0.34: version "1.0.35" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.35.tgz#c4ef44343bc3db0a3cbefdf21822f1b1fc1ab011" From 37ea8a227e291b65a5f0775a243b4e15da42003a Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Mon, 3 Jul 2023 14:26:20 +0200 Subject: [PATCH 347/422] chore: update deployment-related packages (#2217) --- package.json | 8 ++++---- yarn.lock | 54 ++++++++++++++++++++++++++++++++++------------------ 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 1dee69ab38..4f90b50530 100644 --- a/package.json +++ b/package.json @@ -43,10 +43,10 @@ "@mui/x-date-pickers": "^5.0.12", "@reduxjs/toolkit": "^1.9.5", "@safe-global/safe-apps-sdk": "7.11.0", - "@safe-global/safe-core-sdk": "^3.3.3", - "@safe-global/safe-core-sdk-utils": "^1.7.3", - "@safe-global/safe-deployments": "^1.22.0", - "@safe-global/safe-ethers-lib": "^1.9.3", + "@safe-global/safe-core-sdk": "^3.3.4", + "@safe-global/safe-core-sdk-utils": "^1.7.4", + "@safe-global/safe-deployments": "^1.25.0", + "@safe-global/safe-ethers-lib": "^1.9.4", "@safe-global/safe-gateway-typescript-sdk": "^3.7.3", "@safe-global/safe-modules-deployments": "^1.0.0", "@safe-global/safe-react-components": "^2.0.5", diff --git a/yarn.lock b/yarn.lock index 4c5b8f8731..6b25b8542b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3148,24 +3148,35 @@ web3-core "^1.8.1" web3-utils "^1.8.1" -"@safe-global/safe-core-sdk-utils@^1.7.3": - version "1.7.3" - resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-utils/-/safe-core-sdk-utils-1.7.3.tgz#40eeefeafa1cf4dad18d77cad50ac005b2b7f6fe" - integrity sha512-QbUTwV8Pmc4dpDW0icfl02hcg41eTJomB0jtyhXQ79RIVCnFUIq1+P6FZL+/1gXcur4XWQTX7kShOWqfvd+BZA== +"@safe-global/safe-core-sdk-types@^1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-1.9.2.tgz#c8ae3500f5f16a9380f0270ab543f7f0718c9848" + integrity sha512-TVBoCf3bry3y6vmJXACDNOaQnHWTh8Q9G8P3wZCgUBxMc676hP9HEvF1Xrvwe0wMxevMIKyBnEV4FpZUJGSefg== dependencies: - "@safe-global/safe-core-sdk-types" "^1.9.1" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@safe-global/safe-deployments" "^1.25.0" + web3-core "^1.8.1" + web3-utils "^1.8.1" + +"@safe-global/safe-core-sdk-utils@^1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-utils/-/safe-core-sdk-utils-1.7.4.tgz#810d36cf9629129a28eb1b9c6e690b163834b572" + integrity sha512-ITocwSWlFUA1K9VMP/eJiMfgbP/I9qDxAaFz7ukj5N5NZD3ihVQZkmqML6hjse5UhrfjCnfIEcLkNZhtB2XC2Q== + dependencies: + "@safe-global/safe-core-sdk-types" "^1.9.2" semver "^7.3.8" web3-utils "^1.8.1" -"@safe-global/safe-core-sdk@^3.3.3": - version "3.3.3" - resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk/-/safe-core-sdk-3.3.3.tgz#5074ebdc954655e53e1a96b7e6013b18ddc54e8f" - integrity sha512-f7k/L8eGINrjAgN5DQuHY101gxntVTwS/VO14w1Qh+2+AuZmyWn0WekAAU0icAc1jVy0lhgNqCvbMQHc7rkfUg== +"@safe-global/safe-core-sdk@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk/-/safe-core-sdk-3.3.4.tgz#d404287f9b910feab3e692243aaf62494ff2d2a9" + integrity sha512-tgcK7VWo66Z8632xaYDzUHQ8InPOaI10ELk1wCrO/C3QjPwxjIozbMGOMzF4RZPCSJX2YAHowAvOgmEukgSkxA== dependencies: "@ethersproject/solidity" "^5.7.0" - "@safe-global/safe-core-sdk-types" "^1.9.1" - "@safe-global/safe-core-sdk-utils" "^1.7.3" - "@safe-global/safe-deployments" "^1.22.0" + "@safe-global/safe-core-sdk-types" "^1.9.2" + "@safe-global/safe-core-sdk-utils" "^1.7.4" + "@safe-global/safe-deployments" "^1.25.0" ethereumjs-util "^7.1.5" semver "^7.3.8" web3-utils "^1.8.1" @@ -3177,13 +3188,20 @@ dependencies: semver "^7.3.7" -"@safe-global/safe-ethers-lib@^1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@safe-global/safe-ethers-lib/-/safe-ethers-lib-1.9.3.tgz#bdff0ea52a9bd976f0325aa22571e0daeca22961" - integrity sha512-+c6I55nyyh7dheyUch9claRBUK/i+KwbHPb4Yvk4/oWthEESKZRkR8p7hioOGys4zC6eglfSqm2QjlDDU0SbAQ== +"@safe-global/safe-deployments@^1.25.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.25.0.tgz#882f0703cd4dd86cc19238319d77459ded09ec88" + integrity sha512-j7Ml1MVZw73XMTLbyIjo+Gvohwg5HYi8WM6b3vo+AkYEO/X4TNY8eJ0T0Awip5PO9MNyZymF3QY065uccQP53A== + dependencies: + semver "^7.3.7" + +"@safe-global/safe-ethers-lib@^1.9.4": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@safe-global/safe-ethers-lib/-/safe-ethers-lib-1.9.4.tgz#049989a302c6f2010c574cf3a834b0cfb9cf67c5" + integrity sha512-WhzcmNun0s0VxeVQKRqaapV0vEpdm76zZBR2Du+S+58u1r57OjZkOSL2Gru0tdwkt3FIZZtE3OhDu09M70pVkA== dependencies: - "@safe-global/safe-core-sdk-types" "^1.9.1" - "@safe-global/safe-core-sdk-utils" "^1.7.3" + "@safe-global/safe-core-sdk-types" "^1.9.2" + "@safe-global/safe-core-sdk-utils" "^1.7.4" ethers "5.7.2" "@safe-global/safe-gateway-typescript-sdk@^3.5.3": From 00b9949e545fc43e0a1f2ee206ddda96ad1f25a5 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Mon, 3 Jul 2023 14:59:50 +0200 Subject: [PATCH 348/422] Fix: pass Redefine API URL from GitHub secrets (#2218) --- .github/workflows/build/action.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build/action.yml b/.github/workflows/build/action.yml index 43cf072e1f..df3b0c68e7 100644 --- a/.github/workflows/build/action.yml +++ b/.github/workflows/build/action.yml @@ -42,3 +42,4 @@ runs: NEXT_PUBLIC_SAFE_RELAY_SERVICE_URL_PRODUCTION: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_PRODUCTION }} NEXT_PUBLIC_SAFE_RELAY_SERVICE_URL_STAGING: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING }} NEXT_PUBLIC_IS_OFFICIAL_HOST: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_IS_OFFICIAL_HOST }} + NEXT_PUBLIC_REDEFINE_API: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_REDEFINE_API }} From 0c7276b928bf28cf3aaeb30fcf75e9cf87304bbc Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Wed, 5 Jul 2023 13:21:06 +0200 Subject: [PATCH 349/422] fix: Check execute checkbox if execution is the only option (#2230) --- src/components/tx/SignOrExecuteForm/index.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/tx/SignOrExecuteForm/index.tsx b/src/components/tx/SignOrExecuteForm/index.tsx index 1918625d6f..bbcbff221c 100644 --- a/src/components/tx/SignOrExecuteForm/index.tsx +++ b/src/components/tx/SignOrExecuteForm/index.tsx @@ -185,7 +185,11 @@ const SignOrExecuteForm = ({ {canExecute && ( - + )} Date: Wed, 5 Jul 2023 14:03:38 +0200 Subject: [PATCH 350/422] v1.14.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4f90b50530..58bc75420e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/safe-global/safe-wallet-web", "license": "GPL-3.0", "type": "module", - "version": "1.13.0", + "version": "1.14.0", "scripts": { "dev": "next dev", "start": "next dev", From a409dfcb5132e57e96b80d544d10573b7a3f242a Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Wed, 5 Jul 2023 18:09:51 +0200 Subject: [PATCH 351/422] Chore: escape quotes in release action (#2236) Use printf Use a heredoc Use jq --- .github/workflows/tag-release.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/tag-release.yml b/.github/workflows/tag-release.yml index 2c6aeaa7c1..6e23c98452 100644 --- a/.github/workflows/tag-release.yml +++ b/.github/workflows/tag-release.yml @@ -11,8 +11,8 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 if: github.event.pull_request.merged == true + uses: actions/checkout@v2 with: fetch-depth: 0 @@ -22,23 +22,20 @@ jobs: run: | NEW_VERSION=$(node -p 'require("./package.json").version') echo "version=v$NEW_VERSION" >> $GITHUB_OUTPUT - echo "${{ github.event.pull_request.body }}" > CHANGELOG.md - name: Create a git tag if: github.event.pull_request.merged == true - run: git tag $NEW_VERSION && git push --tags - env: - NEW_VERSION: ${{ steps.version.outputs.version }} + run: git tag ${{ steps.version.outputs.version }} && git push --tags - name: GitHub release if: success() - uses: actions/create-release@v1 + uses: softprops/action-gh-release@v1 id: create_release with: draft: true prerelease: false - release_name: ${{ steps.version.outputs.version }} + name: ${{ steps.version.outputs.version }} tag_name: ${{ steps.version.outputs.version }} - body_path: CHANGELOG.md + body: ${{ github.event.pull_request.body }} env: GITHUB_TOKEN: ${{ github.token }} From fdaf1a22a4df8aa21a42ec94193bdcaff0256981 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Thu, 6 Jul 2023 14:43:10 +0200 Subject: [PATCH 352/422] fix: only initiate WC v2 module if project id provided (#2228) * chore: mark `NEXT_PUBLIC_WC_PROJECT_ID` required * chore: don't prettify * fix: don't return module * fix: revert readme --- src/hooks/wallets/wallets.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/hooks/wallets/wallets.ts b/src/hooks/wallets/wallets.ts index 8260878602..474ab89ce7 100644 --- a/src/hooks/wallets/wallets.ts +++ b/src/hooks/wallets/wallets.ts @@ -33,6 +33,11 @@ const walletConnectV1 = (): WalletInit => { } const walletConnectV2 = (chain: ChainInfo): WalletInit => { + // WalletConnect v2 requires a project ID + if (!WC_PROJECT_ID) { + return () => null + } + return walletConnect({ version: 2, projectId: WC_PROJECT_ID, From 61b5ac80c5d066887f0088b12b03278be51e4201 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Mon, 10 Jul 2023 09:23:03 +0200 Subject: [PATCH 353/422] fix: autoconnect to WC v2 on mobile (#2238) --- src/hooks/wallets/useOnboard.ts | 2 +- src/utils/wallets.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index dfee65672a..85a1a12d04 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -118,7 +118,7 @@ export const connectWallet = async ( // On mobile, automatically choose WalletConnect if there is no injected wallet if (!options && isMobile() && !hasInjectedWallet()) { options = { - autoSelect: WalletNames.WALLET_CONNECT, + autoSelect: WalletNames.WALLET_CONNECT_V2, } } diff --git a/src/utils/wallets.ts b/src/utils/wallets.ts index fb952a0074..969732049f 100644 --- a/src/utils/wallets.ts +++ b/src/utils/wallets.ts @@ -24,6 +24,7 @@ export const isWalletRejection = (err: EthersError | Error): boolean => { export const WalletNames = { METAMASK: ProviderLabel.MetaMask, WALLET_CONNECT: WALLET_CONNECT_V1_MODULE_NAME, + WALLET_CONNECT_V2: 'WalletConnect', SAFE_MOBILE_PAIRING: PAIRING_MODULE_LABEL, } From c5dd7963b947ad66867173973d80549e05858a60 Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Mon, 10 Jul 2023 15:01:59 +0200 Subject: [PATCH 354/422] fix: update token price tooltip (#2257) --- src/components/balances/AssetsTable/index.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/balances/AssetsTable/index.tsx b/src/components/balances/AssetsTable/index.tsx index e4bc6a2def..a88a377bb7 100644 --- a/src/components/balances/AssetsTable/index.tsx +++ b/src/components/balances/AssetsTable/index.tsx @@ -181,7 +181,11 @@ const AssetsTable = ({ <> {rawFiatValue === 0 && ( - + Date: Mon, 10 Jul 2023 18:25:44 +0200 Subject: [PATCH 355/422] fix: Safe creation/batch execution gas estimation (#2232) * fix: underpriced transactions on Ledger devices * refactor: use loading flag from `useGasPrice` * fix: mock --- .../create/steps/ReviewStep/index.tsx | 18 ++++- .../__tests__/useSafeCreation.test.ts | 77 ++++++++++++++++++- .../steps/StatusStep/useSafeCreation.ts | 25 +++++- .../tx/AdvancedParams/useAdvancedParams.ts | 8 +- .../BatchExecuteModal/ReviewBatchExecute.tsx | 19 ++++- src/hooks/__tests__/useGasPrice.test.ts | 50 +++++++++--- src/hooks/useGasPrice.ts | 51 ++++++------ src/services/tx/tx-sender/dispatch.ts | 6 +- 8 files changed, 204 insertions(+), 50 deletions(-) diff --git a/src/components/new-safe/create/steps/ReviewStep/index.tsx b/src/components/new-safe/create/steps/ReviewStep/index.tsx index 54a2bfc71e..c5ebf035f4 100644 --- a/src/components/new-safe/create/steps/ReviewStep/index.tsx +++ b/src/components/new-safe/create/steps/ReviewStep/index.tsx @@ -26,6 +26,7 @@ import { ExecutionMethodSelector, ExecutionMethod } from '@/components/tx/Execut import { useLeastRemainingRelays } from '@/hooks/useRemainingRelays' import classnames from 'classnames' import { hasRemainingRelays } from '@/utils/relaying' +import { BigNumber } from 'ethers' const ReviewStep = ({ data, onSubmit, onBack, setStep }: StepRenderProps) => { const isWrongChain = useIsWrongChain() @@ -33,7 +34,7 @@ const ReviewStep = ({ data, onSubmit, onBack, setStep }: StepRenderProps Date.now(), []) const [_, setPendingSafe] = useLocalStorage(SAFE_PENDING_CREATION_STORAGE_KEY) const [executionMethod, setExecutionMethod] = useState(ExecutionMethod.RELAY) @@ -55,9 +56,20 @@ const ReviewStep = ({ data, onSubmit, onBack, setStep }: StepRenderProps 0.001' const handleBack = () => { diff --git a/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreation.test.ts b/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreation.test.ts index a6a342b433..4c3b3e4c58 100644 --- a/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreation.test.ts +++ b/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreation.test.ts @@ -14,6 +14,8 @@ import { waitFor } from '@testing-library/react' import type Safe from '@safe-global/safe-core-sdk' import { hexZeroPad } from 'ethers/lib/utils' import type CompatibilityFallbackHandlerEthersContract from '@safe-global/safe-ethers-lib/dist/src/contracts/CompatibilityFallbackHandler/CompatibilityFallbackHandlerEthersContract' +import { FEATURES } from '@/utils/chains' +import * as gasPrice from '@/hooks/useGasPrice' const mockSafeInfo = { data: '0x', @@ -45,6 +47,7 @@ describe('useSafeCreation', () => { const mockChain = { chainId: '4', + features: [], } as unknown as ChainInfo jest.spyOn(web3, 'useWeb3').mockImplementation(() => mockProvider) @@ -56,15 +59,87 @@ describe('useSafeCreation', () => { jest .spyOn(contracts, 'getReadOnlyFallbackHandlerContract') .mockReturnValue({ getAddress: () => hexZeroPad('0x123', 20) } as CompatibilityFallbackHandlerEthersContract) + jest + .spyOn(gasPrice, 'default') + .mockReturnValue([{ maxFeePerGas: BigNumber.from(123), maxPriorityFeePerGas: undefined }, undefined, false]) }) - it('should create a safe if there is no txHash and status is AWAITING', async () => { + it('should create a safe with gas params if there is no txHash and status is AWAITING', async () => { const createSafeSpy = jest.spyOn(logic, 'createNewSafe').mockReturnValue(Promise.resolve({} as Safe)) renderHook(() => useSafeCreation(mockPendingSafe, mockSetPendingSafe, mockStatus, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).toHaveBeenCalled() + + const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = createSafeSpy.mock.calls[0][1].options || {} + + expect(gasPrice).toBe('123') + + expect(maxFeePerGas).toBeUndefined() + expect(maxPriorityFeePerGas).toBeUndefined() + }) + }) + + it('should create a safe with EIP-1559 gas params if there is no txHash and status is AWAITING', async () => { + jest + .spyOn(gasPrice, 'default') + .mockReturnValue([ + { maxFeePerGas: BigNumber.from(123), maxPriorityFeePerGas: BigNumber.from(456) }, + undefined, + false, + ]) + + jest.spyOn(chain, 'useCurrentChain').mockImplementation( + () => + ({ + chainId: '4', + features: [FEATURES.EIP1559], + } as unknown as ChainInfo), + ) + const createSafeSpy = jest.spyOn(logic, 'createNewSafe').mockReturnValue(Promise.resolve({} as Safe)) + + renderHook(() => useSafeCreation(mockPendingSafe, mockSetPendingSafe, mockStatus, mockSetStatus, false)) + + await waitFor(() => { + expect(createSafeSpy).toHaveBeenCalled() + + const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = createSafeSpy.mock.calls[0][1].options || {} + + expect(maxFeePerGas).toBe('123') + expect(maxPriorityFeePerGas).toBe('456') + + expect(gasPrice).toBeUndefined() + }) + }) + + it('should create a safe with no gas params if the gas estimation threw, there is no txHash and status is AWAITING', async () => { + jest.spyOn(gasPrice, 'default').mockReturnValue([undefined, Error('Error for testing'), false]) + + const createSafeSpy = jest.spyOn(logic, 'createNewSafe').mockReturnValue(Promise.resolve({} as Safe)) + + renderHook(() => useSafeCreation(mockPendingSafe, mockSetPendingSafe, mockStatus, mockSetStatus, false)) + + await waitFor(() => { + expect(createSafeSpy).toHaveBeenCalled() + + const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = createSafeSpy.mock.calls[0][1].options || {} + + expect(gasPrice).toBeUndefined() + expect(maxFeePerGas).toBeUndefined() + expect(maxPriorityFeePerGas).toBeUndefined() + }) + }) + + it('should not create a safe if there is no txHash, status is AWAITING but gas is loading', async () => { + jest.spyOn(gasPrice, 'default').mockReturnValue([undefined, undefined, true]) + + const createSafeSpy = jest.spyOn(logic, 'createNewSafe').mockReturnValue(Promise.resolve({} as Safe)) + + renderHook(() => useSafeCreation(mockPendingSafe, mockSetPendingSafe, mockStatus, mockSetStatus, false)) + + await waitFor(() => { + expect(createSafeSpy).not.toHaveBeenCalled() }) }) diff --git a/src/components/new-safe/create/steps/StatusStep/useSafeCreation.ts b/src/components/new-safe/create/steps/StatusStep/useSafeCreation.ts index 35a73878a7..ec4823a5fa 100644 --- a/src/components/new-safe/create/steps/StatusStep/useSafeCreation.ts +++ b/src/components/new-safe/create/steps/StatusStep/useSafeCreation.ts @@ -20,6 +20,10 @@ import { useAppDispatch } from '@/store' import { closeByGroupKey } from '@/store/notificationsSlice' import { CREATE_SAFE_EVENTS, trackEvent } from '@/services/analytics' import { waitForCreateSafeTx } from '@/services/tx/txMonitor' +import useGasPrice from '@/hooks/useGasPrice' +import { hasFeature } from '@/utils/chains' +import { FEATURES } from '@safe-global/safe-gateway-typescript-sdk' +import type { DeploySafeProps } from '@safe-global/safe-core-sdk' export enum SafeCreationStatus { AWAITING, @@ -48,6 +52,12 @@ export const useSafeCreation = ( const provider = useWeb3() const web3ReadOnly = useWeb3ReadOnly() const chain = useCurrentChain() + const [gasPrice, , gasPriceLoading] = useGasPrice() + + const maxFeePerGas = gasPrice?.maxFeePerGas + const maxPriorityFeePerGas = gasPrice?.maxPriorityFeePerGas + + const isEIP1559 = chain && hasFeature(chain, FEATURES.EIP1559) const createSafeCallback = useCallback( async (txHash: string, tx: PendingSafeTx) => { @@ -59,7 +69,7 @@ export const useSafeCreation = ( ) const handleCreateSafe = useCallback(async () => { - if (!pendingSafe || !provider || !chain || !wallet || isCreating) return + if (!pendingSafe || !provider || !chain || !wallet || isCreating || gasPriceLoading) return setIsCreating(true) dispatch(closeByGroupKey({ groupKey: SAFE_CREATION_ERROR_KEY })) @@ -87,7 +97,14 @@ export const useSafeCreation = ( chain.chainId, ) - await createNewSafe(provider, safeParams) + const options: DeploySafeProps['options'] = isEIP1559 + ? { maxFeePerGas: maxFeePerGas?.toString(), maxPriorityFeePerGas: maxPriorityFeePerGas?.toString() } + : { gasPrice: maxFeePerGas?.toString() } + + await createNewSafe(provider, { + ...safeParams, + options, + }) setStatus(SafeCreationStatus.SUCCESS) } } catch (err) { @@ -106,7 +123,11 @@ export const useSafeCreation = ( chain, createSafeCallback, dispatch, + gasPriceLoading, isCreating, + isEIP1559, + maxFeePerGas, + maxPriorityFeePerGas, pendingSafe, provider, setPendingSafe, diff --git a/src/components/tx/AdvancedParams/useAdvancedParams.ts b/src/components/tx/AdvancedParams/useAdvancedParams.ts index a03773b7b5..1d876384b4 100644 --- a/src/components/tx/AdvancedParams/useAdvancedParams.ts +++ b/src/components/tx/AdvancedParams/useAdvancedParams.ts @@ -9,7 +9,7 @@ export const useAdvancedParams = ({ safeTxGas, }: AdvancedParameters): [AdvancedParameters, (params: AdvancedParameters) => void] => { const [manualParams, setManualParams] = useState() - const { maxFeePerGas, maxPriorityFeePerGas } = useGasPrice() + const [gasPrice] = useGasPrice() const userNonce = useUserNonce() const advancedParams: AdvancedParameters = useMemo( @@ -17,11 +17,11 @@ export const useAdvancedParams = ({ nonce: manualParams?.nonce ?? nonce, userNonce: manualParams?.userNonce ?? userNonce, gasLimit: manualParams?.gasLimit ?? gasLimit, - maxFeePerGas: manualParams?.maxFeePerGas ?? maxFeePerGas, - maxPriorityFeePerGas: manualParams?.maxPriorityFeePerGas ?? maxPriorityFeePerGas, + maxFeePerGas: manualParams?.maxFeePerGas ?? gasPrice?.maxFeePerGas, + maxPriorityFeePerGas: manualParams?.maxPriorityFeePerGas ?? gasPrice?.maxPriorityFeePerGas, safeTxGas: manualParams?.safeTxGas ?? safeTxGas, }), - [manualParams, nonce, userNonce, gasLimit, maxFeePerGas, maxPriorityFeePerGas, safeTxGas], + [manualParams, nonce, userNonce, gasLimit, gasPrice?.maxFeePerGas, gasPrice?.maxPriorityFeePerGas, safeTxGas], ) return [advancedParams, setManualParams] diff --git a/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx b/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx index b38e0603d9..8c505df00c 100644 --- a/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx +++ b/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx @@ -1,4 +1,5 @@ import useAsync from '@/hooks/useAsync' +import { FEATURES } from '@safe-global/safe-gateway-typescript-sdk' import type { TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' import { getMultiSendCallOnlyContract } from '@/services/contracts/safeContracts' import { useCurrentChain } from '@/hooks/useChains' @@ -21,6 +22,9 @@ import useOnboard from '@/hooks/wallets/useOnboard' import { WrongChainWarning } from '@/components/tx/WrongChainWarning' import { useWeb3 } from '@/hooks/wallets/web3' import { hasRemainingRelays } from '@/utils/relaying' +import useGasPrice from '@/hooks/useGasPrice' +import { hasFeature } from '@/utils/chains' +import type { PayableOverrides } from 'ethers' const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubmit: (data: null) => void }) => { const [isSubmittable, setIsSubmittable] = useState(true) @@ -29,6 +33,12 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm const chain = useCurrentChain() const { safe } = useSafeInfo() const [relays] = useRelaysBySafe() + const [gasPrice, , gasPriceLoading] = useGasPrice() + + const maxFeePerGas = gasPrice?.maxFeePerGas + const maxPriorityFeePerGas = gasPrice?.maxPriorityFeePerGas + + const isEIP1559 = chain && hasFeature(chain, FEATURES.EIP1559) // Chain has relaying feature and available relays const canRelay = hasRemainingRelays(relays) @@ -58,7 +68,11 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm }, [txsWithDetails, multiSendTxs]) const onExecute = async () => { - if (!onboard || !multiSendTxData || !multiSendContract || !txsWithDetails) return + if (!onboard || !multiSendTxData || !multiSendContract || !txsWithDetails || gasPriceLoading) return + + const overrides: PayableOverrides = isEIP1559 + ? { maxFeePerGas: maxFeePerGas?.toString(), maxPriorityFeePerGas: maxPriorityFeePerGas?.toString() } + : { gasPrice: maxFeePerGas?.toString() } await dispatchBatchExecution( txsWithDetails, @@ -67,6 +81,7 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm onboard, safe.chainId, safe.address.value, + overrides, ) onSubmit(null) } @@ -100,7 +115,7 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm } } - const submitDisabled = loading || !isSubmittable + const submitDisabled = loading || !isSubmittable || gasPriceLoading return (
    diff --git a/src/hooks/__tests__/useGasPrice.test.ts b/src/hooks/__tests__/useGasPrice.test.ts index 987413397c..d3a3d5dd24 100644 --- a/src/hooks/__tests__/useGasPrice.test.ts +++ b/src/hooks/__tests__/useGasPrice.test.ts @@ -74,6 +74,9 @@ describe('useGasPrice', () => { // render the hook const { result } = renderHook(() => useGasPrice()) + // assert the hook is loading + expect(result.current[2]).toBe(true) + // wait for the hook to fetch the gas price await act(async () => { await Promise.resolve() @@ -81,11 +84,14 @@ describe('useGasPrice', () => { expect(fetch).toHaveBeenCalledWith('https://api.etherscan.io/api?module=gastracker&action=gasoracle') + // assert the hook is not loading + expect(result.current[2]).toBe(false) + // assert the gas price is correct - expect(result.current.maxFeePerGas?.toString()).toBe('47000000000') + expect(result.current[0]?.maxFeePerGas?.toString()).toBe('47000000000') // assert the priority fee is correct - expect(result.current.maxPriorityFeePerGas?.toString()).toEqual('4975') + expect(result.current[0]?.maxPriorityFeePerGas?.toString()).toEqual('4975') }) it('should return the fetched gas price from the second oracle if the first one fails', async () => { @@ -110,6 +116,9 @@ describe('useGasPrice', () => { // render the hook const { result } = renderHook(() => useGasPrice()) + // assert the hook is loading + expect(result.current[2]).toBe(true) + // wait for the hook to fetch the gas price await act(async () => { await Promise.resolve() @@ -118,11 +127,14 @@ describe('useGasPrice', () => { expect(fetch).toHaveBeenCalledWith('https://api.etherscan.io/api?module=gastracker&action=gasoracle') expect(fetch).toHaveBeenCalledWith('https://ethgasstation.info/json/ethgasAPI.json') + // assert the hook is not loading + expect(result.current[2]).toBe(false) + // assert the gas price is correct - expect(result.current.maxFeePerGas?.toString()).toBe('60000000000') + expect(result.current[0]?.maxFeePerGas?.toString()).toBe('60000000000') // assert the priority fee is correct - expect(result.current.maxPriorityFeePerGas?.toString()).toEqual('4975') + expect(result.current[0]?.maxPriorityFeePerGas?.toString()).toEqual('4975') }) it('should fallback to a fixed gas price if the oracles fail', async () => { @@ -137,6 +149,9 @@ describe('useGasPrice', () => { // render the hook const { result } = renderHook(() => useGasPrice()) + // assert the hook is loading + expect(result.current[2]).toBe(true) + // wait for the hook to fetch the gas price await act(async () => { await Promise.resolve() @@ -145,11 +160,14 @@ describe('useGasPrice', () => { expect(fetch).toHaveBeenCalledWith('https://api.etherscan.io/api?module=gastracker&action=gasoracle') expect(fetch).toHaveBeenCalledWith('https://ethgasstation.info/json/ethgasAPI.json') + // assert the hook is not loading + expect(result.current[2]).toBe(false) + // assert the gas price is correct - expect(result.current.maxFeePerGas?.toString()).toBe('24000000000') + expect(result.current[0]?.maxFeePerGas?.toString()).toBe('24000000000') // assert the priority fee is correct - expect(result.current.maxPriorityFeePerGas?.toString()).toEqual('4975') + expect(result.current[0]?.maxPriorityFeePerGas?.toString()).toEqual('4975') }) it('should keep the previous gas price if the hook re-renders', async () => { @@ -185,25 +203,37 @@ describe('useGasPrice', () => { // render the hook const { result } = renderHook(() => useGasPrice()) - expect(result.current.maxFeePerGas).toBe(undefined) + // assert the hook is loading + expect(result.current[2]).toBe(true) + + expect(result.current[0]?.maxFeePerGas).toBe(undefined) // wait for the hook to fetch the gas price await act(async () => { await Promise.resolve() }) - expect(result.current.maxFeePerGas?.toString()).toBe('21000000000') + // assert the hook is not loading + expect(result.current[2]).toBe(false) + + expect(result.current[0]?.maxFeePerGas?.toString()).toBe('21000000000') // render the hook again const { result: result2 } = renderHook(() => useGasPrice()) - expect(result.current.maxFeePerGas?.toString()).toBe('21000000000') + // assert the hook is not loading (as a value exists) + expect(result.current[2]).toBe(false) + + expect(result.current[0]?.maxFeePerGas?.toString()).toBe('21000000000') // wait for the hook to fetch the gas price await act(async () => { await Promise.resolve() }) - expect(result2.current.maxFeePerGas?.toString()).toBe('22000000000') + // assert the hook is not loading + expect(result.current[2]).toBe(false) + + expect(result2.current[0]?.maxFeePerGas?.toString()).toBe('22000000000') }) }) diff --git a/src/hooks/useGasPrice.ts b/src/hooks/useGasPrice.ts index 056f78bc3f..2f7127e974 100644 --- a/src/hooks/useGasPrice.ts +++ b/src/hooks/useGasPrice.ts @@ -1,9 +1,7 @@ -import { useMemo } from 'react' import { BigNumber } from 'ethers' -import type { FeeData } from '@ethersproject/providers' import type { GasPrice, GasPriceOracle } from '@safe-global/safe-gateway-typescript-sdk' import { GAS_PRICE_TYPE } from '@safe-global/safe-gateway-typescript-sdk' -import useAsync from '@/hooks/useAsync' +import useAsync, { type AsyncResult } from '@/hooks/useAsync' import { useCurrentChain } from './useChains' import useIntervalCounter from './useIntervalCounter' import { useWeb3ReadOnly } from '../hooks/wallets/web3' @@ -54,41 +52,42 @@ const getGasPrice = async (gasPriceConfigs: GasPrice): Promise { +const useGasPrice = (): AsyncResult<{ + maxFeePerGas: BigNumber | undefined + maxPriorityFeePerGas: BigNumber | undefined +}> => { const chain = useCurrentChain() const gasPriceConfigs = chain?.gasPrice const [counter] = useIntervalCounter(REFRESH_DELAY) const provider = useWeb3ReadOnly() const isEIP1559 = !!chain && hasFeature(chain, FEATURES.EIP1559) - // Fetch gas price from oracles or get a fixed value - const [gasPrice] = useAsync( - () => { - if (gasPriceConfigs) { - return getGasPrice(gasPriceConfigs) + const [gasPrice, gasPriceError, gasPriceLoading] = useAsync( + async () => { + const [gasPrice, feeData] = await Promise.all([ + // Fetch gas price from oracles or get a fixed value + gasPriceConfigs ? getGasPrice(gasPriceConfigs) : undefined, + + // Fetch the gas fees from the blockchain itself + provider?.getFeeData(), + ]) + + // Prepare the return values + const maxFee = gasPrice || (isEIP1559 ? feeData?.maxFeePerGas : feeData?.gasPrice) || undefined + const maxPrioFee = (isEIP1559 && feeData?.maxPriorityFeePerGas) || undefined + + return { + maxFeePerGas: maxFee, + maxPriorityFeePerGas: maxPrioFee, } }, - [gasPriceConfigs, counter], + [gasPriceConfigs, provider, counter], false, ) - // Fetch the gas fees from the blockchain itself - const [feeData] = useAsync(() => provider?.getFeeData(), [provider, counter], false) + const isLoading = gasPriceLoading || (!gasPrice && !gasPriceError) - // Prepare the return values - const maxFee = gasPrice || (isEIP1559 ? feeData?.maxFeePerGas : feeData?.gasPrice) || undefined - const maxPrioFee = (isEIP1559 && feeData?.maxPriorityFeePerGas) || undefined - - return useMemo( - () => ({ - maxFeePerGas: maxFee, - maxPriorityFeePerGas: maxPrioFee, - }), - [maxFee, maxPrioFee], - ) + return [gasPrice, gasPriceError, isLoading] } export default useGasPrice diff --git a/src/services/tx/tx-sender/dispatch.ts b/src/services/tx/tx-sender/dispatch.ts index ae390acf7c..0a05153bda 100644 --- a/src/services/tx/tx-sender/dispatch.ts +++ b/src/services/tx/tx-sender/dispatch.ts @@ -5,7 +5,7 @@ import { didReprice, didRevert } from '@/utils/ethers-utils' import type MultiSendCallOnlyEthersContract from '@safe-global/safe-ethers-lib/dist/src/contracts/MultiSendCallOnly/MultiSendCallOnlyEthersContract' import type { SpendingLimitTxParams } from '@/components/tx/modals/TokenTransferModal/ReviewSpendingLimitTx' import { getSpendingLimitContract } from '@/services/contracts/spendingLimitContracts' -import type { ContractTransaction } from 'ethers' +import type { ContractTransaction, PayableOverrides } from 'ethers' import type { RequestId } from '@safe-global/safe-apps-sdk' import proposeTx from '../proposeTransaction' import { txDispatch, TxEvent } from '../txEvents' @@ -174,6 +174,7 @@ export const dispatchBatchExecution = async ( onboard: OnboardAPI, chainId: SafeInfo['chainId'], safeAddress: string, + overrides?: PayableOverrides, ) => { const groupKey = multiSendTxData @@ -183,7 +184,8 @@ export const dispatchBatchExecution = async ( const wallet = await assertWalletChain(onboard, chainId) const provider = createWeb3(wallet.provider) - result = await multiSendContract.contract.connect(provider.getSigner()).multiSend(multiSendTxData) + result = await multiSendContract.contract.connect(provider.getSigner()).multiSend(multiSendTxData, overrides) + txs.forEach(({ txId }) => { txDispatch(TxEvent.EXECUTING, { txId, groupKey }) }) From ad2e5744db632a88a0163e699c1ba53d75f2f5f4 Mon Sep 17 00:00:00 2001 From: Manuel Gellfart Date: Tue, 11 Jul 2023 10:43:29 +0200 Subject: [PATCH 356/422] fix: resolve third party dependency (#2255) --- package.json | 3 +++ yarn.lock | 21 ++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 58bc75420e..94b7f4cc41 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,9 @@ "pre-commit": [ "lint" ], + "resolutions": { + "@web3-onboard/trezor/**/protobufjs": "^7.2.4" + }, "dependencies": { "@date-io/date-fns": "^2.15.0", "@emotion/cache": "^11.10.1", diff --git a/yarn.lock b/yarn.lock index 6b25b8542b..7c8ab02687 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4093,11 +4093,6 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - "@types/minimatch@*": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" @@ -10470,6 +10465,11 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== +long@^5.0.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + long@~3: version "3.2.0" resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" @@ -11639,10 +11639,10 @@ prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" -protobufjs@6.11.3: - version "6.11.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" - integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== +protobufjs@6.11.3, protobufjs@^7.2.4: + version "7.2.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae" + integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -11654,9 +11654,8 @@ protobufjs@6.11.3: "@protobufjs/path" "^1.1.2" "@protobufjs/pool" "^1.1.0" "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" "@types/node" ">=13.7.0" - long "^4.0.0" + long "^5.0.0" proxy-addr@~2.0.7: version "2.0.7" From f5e7f5db8c86b863659d7443211664472b3e446d Mon Sep 17 00:00:00 2001 From: Aaron Cook Date: Tue, 11 Jul 2023 14:38:40 +0200 Subject: [PATCH 357/422] chore: fix network name selection in E2E (#2267) * chore: fix network name selection in E2E * fix: rename token id --- cypress/e2e/smoke/create_safe_simple.cy.js | 6 ++++-- cypress/e2e/smoke/nfts.cy.js | 10 ++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/cypress/e2e/smoke/create_safe_simple.cy.js b/cypress/e2e/smoke/create_safe_simple.cy.js index 36f349792a..30b2540be7 100644 --- a/cypress/e2e/smoke/create_safe_simple.cy.js +++ b/cypress/e2e/smoke/create_safe_simple.cy.js @@ -11,7 +11,7 @@ describe('Create Safe form', () => { cy.contains('button', 'Accept selection').click() // Ensure wallet is connected to correct chain via header - cy.contains('E2E Wallet @ Görli') + cy.contains(/E2E Wallet @ G(ö|oe)rli/) cy.contains('Create new Account').click() }) @@ -33,7 +33,9 @@ describe('Create Safe form', () => { // Switch back to Görli cy.get('[data-cy="create-safe-select-network"]').click() - cy.contains('li span', 'Görli').click() + + // Prevent Base Mainnet Goerli from being selected + cy.contains('li span', /^G(ö|oe)rli$/).click() cy.contains('button', 'Next').click() }) diff --git a/cypress/e2e/smoke/nfts.cy.js b/cypress/e2e/smoke/nfts.cy.js index deea89191b..76b6d7fce9 100644 --- a/cypress/e2e/smoke/nfts.cy.js +++ b/cypress/e2e/smoke/nfts.cy.js @@ -6,7 +6,7 @@ describe('Assets > NFTs', () => { cy.visit(`/balances/nfts?safe=${TEST_SAFE}`) cy.contains('button', 'Accept selection').click() - cy.contains('E2E Wallet @ Görli') + cy.contains(/E2E Wallet @ G(ö|oe)rli/) }) describe('should have NFTs', () => { @@ -18,7 +18,7 @@ describe('Assets > NFTs', () => { cy.get('tbody tr:first-child').contains('td:first-child', 'BillyNFT721') cy.get('tbody tr:first-child').contains('td:first-child', '0x0000...816D') - cy.get('tbody tr:first-child').contains('td:nth-child(2)', 'Kitaro #261') + cy.get('tbody tr:first-child').contains('td:nth-child(2)', 'Kitaro World #261') cy.get( 'tbody tr:first-child td:nth-child(3) a[href="https://testnets.opensea.io/assets/0x000000000faE8c6069596c9C805A1975C657816D/443"]', @@ -30,8 +30,10 @@ describe('Assets > NFTs', () => { cy.get('tbody tr:first-child td:nth-child(2)').click() // Modal - cy.get('div[role="dialog"]').contains('Kitaro #261') - cy.get('div[role="dialog"]').contains('Görli') + cy.get('div[role="dialog"]').contains('Kitaro World #261') + + // Prevent Base Mainnet Goerli from being selected + cy.get('div[role="dialog"]').contains(/^G(ö|oe)rli$/) cy.get('div[role="dialog"]').contains( 'a[href="https://testnets.opensea.io/assets/0x000000000faE8c6069596c9C805A1975C657816D/443"]', 'View on OpenSea', From 35cb1857996c889b62e636895d1b2a2cf5241fd4 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Tue, 11 Jul 2023 16:41:56 +0200 Subject: [PATCH 358/422] fix: Update message signing link in settings (#2273) --- src/components/settings/SafeAppsSigningMethod/index.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/settings/SafeAppsSigningMethod/index.tsx b/src/components/settings/SafeAppsSigningMethod/index.tsx index db7cb0f0ae..4d900a6f6e 100644 --- a/src/components/settings/SafeAppsSigningMethod/index.tsx +++ b/src/components/settings/SafeAppsSigningMethod/index.tsx @@ -3,6 +3,7 @@ import { SETTINGS_EVENTS, trackEvent } from '@/services/analytics' import { useAppDispatch, useAppSelector } from '@/store' import { selectOnChainSigning, setOnChainSigning } from '@/store/settingsSlice' import { FormControlLabel, Checkbox, Paper, Typography, FormGroup, Grid } from '@mui/material' +import { HelpCenterArticle } from '@/config/constants' export const SafeAppsSigningMethod = () => { const onChainSigning = useAppSelector(selectOnChainSigning) @@ -27,10 +28,7 @@ export const SafeAppsSigningMethod = () => { This setting determines how the {'Safe{Wallet}'} will sign message requests from Safe Apps. Gasless, off-chain signing is used by default. Learn more about message signing{' '} - - here - - . + here. Date: Wed, 12 Jul 2023 16:38:51 +0200 Subject: [PATCH 359/422] [Epic] Tx flow redesign (#2067) * Add folder structure for tx flow * feat: create new-tx route and NewTxMenu component * feat: Add StepperFactory and new tx layout (#2040) * feat: Add StepperFactory, new tx pages * wip: context instead of routes * Add tx flows to new modal context * fix: Close modal when user navigates * Export all flows from one file * refactor: Remove unused code from StepperFactory * fix: Duplicate ModalDialog to fix failing tests * Refactor: reactive recommended nonce (#2050) * Refactor: reactive recommended nonce Reduce re-renders Nonce -1 * Use "nonceReadyOnly" instead of -1 * Split sign and execute into two components * feat: Transaction status widget (#2062) * feat: add tx status widget UI * add logic to paint the stepper * port the ConfirmProposedTx to the new layout * pass tx data to the TxStatusWidget to get the tx confirmations * style: add new lines between adjacent tags * Refactor: SafeTxProvider (#2064) * Refactor: SafeTxProvider * Avoid oscillating nonce * fix reject tx for new provider --------- Co-authored-by: Usame Algan * Move progress to TxLayout * Refactor: useRecommendedNonce + useSafeTxGas (#2066) * Refactor: useRecommendedNonce + useSafeTxGas * Fix lint * Get recommended nonce by "estimating" an empty tx * Adjust ConfirmTx and ExecuteTxButton * Refactor: a less verbose ModalProvider (#2068) * Refactor: a less verbose ModalProvider * Fix Cannot redefine property: dispatchTxProposal * Refactor the tx flow system (#2071) * Refactor the tx flow system * Array * Fix: pass nonce correctly (#2072) * Fix linting errors, add TODOs for failing tx flows (#2070) * Editable nonce (#2077) * Editable nonce * Fix tests * refactor: save entire data structure on submission (#2083) * fix: Close modal on sign, only render current step * fix: Close modal on sign, only render current step * fix: set all data + move back button --------- Co-authored-by: Usame Algan * feat: Add SuccessScreen to tx flow (#2080) * Refactor: single type for tx flows (#2084) * Refactor: single type for tx flows * Omit txNonce * FormData type * feat: add owner flow (#2086) * feat: Change threshold flow (#2085) * feat: Port change threshold flow * fix: Only estimate gas when executing * fix: Remove old component * feat: remove owner flow * feat: replace owner flow (#2087) * feat: add owner flow * feat: replace owner flow * feat: replace owner flow * feat: update flow (#2089) * fix: Remove Module tx flow (#2090) * Add flow for remove guard (#2091) * Safe Apps tx flow (#2081) * SafeAppsTx flow * On close * Handle txFlow close * feat: new spending limit flow (#2093) * feat: new spending limit flow * fix: preserve token address + reset time values * Onclose callback (#2094) * Send button in Assets (#2097) * Send button in Assets * Supress contentEditable warning * Fix: align Next and Back buttons (#2103) * feat: remove spending limit flow (#2098) * Refactor: move AdvancedParams to ExecuteForm (#2104) * fix: Move sign msg modal to new flow (#2102) * fix: Move sign msg modal to new flow * Adjust flex property if subtitle exists * fix: Add flag to hide nonce field in TxLayout * TxCard layout (#2105) * Modal title and icon (#2107) * Modal title and icon * NFTs * feat: spending limit selector (#2106) * feat: batch execute flow (#2108) * Move on-chain sign to new flow (#2109) * feat: amount selector (#2111) * feat: amount selector * fix: use CSS variables * fix: cleanup styles * feat: execute/sign `RadioGroup` (#2117) * [Tx flow] feat: address input redesign (#2112) * feat: AddressInputReadOnly component * improve AddressInput * make component readonly * enable create AB entry from input component * show SaveAddressicon if address not in AB * open the list when clicking the caret * fix component height * show caret when there are available options * rm leftover code * do not highlight the readonly input on hover/click * focus the AddressInput on clicking to edit * change add to AB info text * do not truncate the address in the readonly component * show SaveAddressIcon when address is valid * amount input grows until token name * [TX flow] feat: confirm/execute title component (#2119) * feat: confirm/execute titles * place the component as per design * remove redundant code * use willExecute flag to display execution title * adjust the gap between SignOrExecuteForm elements * fix: remove error casting (#2127) * fix: remove error casting * refactor: don't call `asError` twice * fix: execution method style (#2125) * fix: execution method style * fix: change component * fix: change component * fix: update amount field style (#2124) * [TX flow] Send tokens overview (#2136) * fix: Adjust TxLayout header design * fix: Implement Token Transfer overview design * Remove loading state * [TX flow] style: offchain messages info boxes styles (#2134) * style: adjust success and info box styles * adjust msgSigners style * style margins in the info elements * clean up redundant variable * test: update tx builder URL * Feat: editable safeTxGas in Advanced details (#2132) * Feat: editable safeTxGas in Advanced details * Prettier * Make the form a popover * PR comments * fix: Nonce form (#2120) * fix: Update nonce input to show queued txs and reset button * fix: Extract hook, show input error outline, hide reset button if readonly * Add isEmpty flag to nonce input * Fix test * [TX flow] style: send token flow (#2126) * placeholder for AddressInput identicon * rm Send From * add the dividers to the layout * style CardActions * fix tests * [TX flow] styles: fix send token styles (#2138) * style: remove unnecessary CSS * style: consider the input label font-size in spacing * Small UI tweaks * fix: move default value to placeholder (#2139) * Fix DecodedTx tests * [TX flow] feat: add owner modal (#2143) * feat: create add owner * adjust ReviewOwner design * component to wrap owner address and include subtitle in modal * prefer RHF for form fields. use sx instead of classes * use MUI component * fix: remove owner flow styling (#2150) * fix: remove owner flow styling * fix: add titles * feat: add tooltip to advanced details (#2153) * feat: add tooltip to advanced details * fix: alter wording * [TX flow] feat: replace owner (#2151) * feat: redesign replace owner * rm unnecessary files. move css to module * fix: add titles * Update src/components/tx-flow/flows/AddOwner/ReviewOwner.tsx Co-authored-by: Aaron Cook --------- Co-authored-by: Aaron Cook * Align buttons in SignMessage modal * [TX flow] Display Token balance (#2155) * Add folder structure for tx flow * feat: create new-tx route and NewTxMenu component * feat: Add StepperFactory and new tx layout (#2040) * feat: Add StepperFactory, new tx pages * wip: context instead of routes * Add tx flows to new modal context * fix: Close modal when user navigates * Export all flows from one file * refactor: Remove unused code from StepperFactory * fix: Duplicate ModalDialog to fix failing tests * Refactor: reactive recommended nonce (#2050) * Refactor: reactive recommended nonce Reduce re-renders Nonce -1 * Use "nonceReadyOnly" instead of -1 * Split sign and execute into two components * feat: Transaction status widget (#2062) * feat: add tx status widget UI * add logic to paint the stepper * port the ConfirmProposedTx to the new layout * pass tx data to the TxStatusWidget to get the tx confirmations * style: add new lines between adjacent tags * Refactor: SafeTxProvider (#2064) * Refactor: SafeTxProvider * Avoid oscillating nonce * fix reject tx for new provider --------- Co-authored-by: Usame Algan * Move progress to TxLayout * Refactor: useRecommendedNonce + useSafeTxGas (#2066) * Refactor: useRecommendedNonce + useSafeTxGas * Fix lint * Get recommended nonce by "estimating" an empty tx * Adjust ConfirmTx and ExecuteTxButton * Refactor: a less verbose ModalProvider (#2068) * Refactor: a less verbose ModalProvider * Fix Cannot redefine property: dispatchTxProposal * Refactor the tx flow system (#2071) * Refactor the tx flow system * Array * Fix: pass nonce correctly (#2072) * Fix linting errors, add TODOs for failing tx flows (#2070) * Editable nonce (#2077) * Editable nonce * Fix tests * refactor: save entire data structure on submission (#2083) * fix: Close modal on sign, only render current step * fix: Close modal on sign, only render current step * fix: set all data + move back button --------- Co-authored-by: Usame Algan * feat: Add SuccessScreen to tx flow (#2080) * Refactor: single type for tx flows (#2084) * Refactor: single type for tx flows * Omit txNonce * FormData type * feat: add owner flow (#2086) * feat: Change threshold flow (#2085) * feat: Port change threshold flow * fix: Only estimate gas when executing * fix: Remove old component * feat: remove owner flow * feat: replace owner flow (#2087) * feat: add owner flow * feat: replace owner flow * feat: replace owner flow * feat: update flow (#2089) * fix: Remove Module tx flow (#2090) * Add flow for remove guard (#2091) * Safe Apps tx flow (#2081) * SafeAppsTx flow * On close * Handle txFlow close * feat: new spending limit flow (#2093) * feat: new spending limit flow * fix: preserve token address + reset time values * Onclose callback (#2094) * Send button in Assets (#2097) * Send button in Assets * Supress contentEditable warning * Fix: align Next and Back buttons (#2103) * feat: remove spending limit flow (#2098) * Refactor: move AdvancedParams to ExecuteForm (#2104) * fix: Move sign msg modal to new flow (#2102) * fix: Move sign msg modal to new flow * Adjust flex property if subtitle exists * fix: Add flag to hide nonce field in TxLayout * TxCard layout (#2105) * Modal title and icon (#2107) * Modal title and icon * NFTs * feat: spending limit selector (#2106) * feat: batch execute flow (#2108) * Move on-chain sign to new flow (#2109) * feat: amount selector (#2111) * feat: amount selector * fix: use CSS variables * fix: cleanup styles * feat: execute/sign `RadioGroup` (#2117) * [Tx flow] feat: address input redesign (#2112) * feat: AddressInputReadOnly component * improve AddressInput * make component readonly * enable create AB entry from input component * show SaveAddressicon if address not in AB * open the list when clicking the caret * fix component height * show caret when there are available options * rm leftover code * do not highlight the readonly input on hover/click * focus the AddressInput on clicking to edit * change add to AB info text * do not truncate the address in the readonly component * show SaveAddressIcon when address is valid * amount input grows until token name * [TX flow] feat: confirm/execute title component (#2119) * feat: confirm/execute titles * place the component as per design * remove redundant code * use willExecute flag to display execution title * adjust the gap between SignOrExecuteForm elements * fix: remove error casting (#2127) * fix: remove error casting * refactor: don't call `asError` twice * fix: execution method style (#2125) * fix: execution method style * fix: change component * fix: change component * fix: update amount field style (#2124) * [TX flow] Send tokens overview (#2136) * fix: Adjust TxLayout header design * fix: Implement Token Transfer overview design * Remove loading state * [TX flow] style: offchain messages info boxes styles (#2134) * style: adjust success and info box styles * adjust msgSigners style * style margins in the info elements * clean up redundant variable * test: update tx builder URL * Feat: editable safeTxGas in Advanced details (#2132) * Feat: editable safeTxGas in Advanced details * Prettier * Make the form a popover * PR comments * fix: Nonce form (#2120) * fix: Update nonce input to show queued txs and reset button * fix: Extract hook, show input error outline, hide reset button if readonly * Add isEmpty flag to nonce input * Fix test * [TX flow] style: send token flow (#2126) * placeholder for AddressInput identicon * rm Send From * add the dividers to the layout * style CardActions * fix tests * [TX flow] styles: fix send token styles (#2138) * style: remove unnecessary CSS * style: consider the input label font-size in spacing * Small UI tweaks * fix: move default value to placeholder (#2139) * Fix DecodedTx tests * [TX flow] feat: add owner modal (#2143) * feat: create add owner * adjust ReviewOwner design * component to wrap owner address and include subtitle in modal * prefer RHF for form fields. use sx instead of classes * use MUI component * fix: remove owner flow styling (#2150) * fix: remove owner flow styling * fix: add titles * feat: add tooltip to advanced details (#2153) * feat: add tooltip to advanced details * fix: alter wording * [TX flow] feat: replace owner (#2151) * feat: redesign replace owner * rm unnecessary files. move css to module * fix: add titles * Update src/components/tx-flow/flows/AddOwner/ReviewOwner.tsx Co-authored-by: Aaron Cook --------- Co-authored-by: Aaron Cook * fix: Display token balance in dropdown --------- Co-authored-by: Diogo Soares Co-authored-by: katspaugh <381895+katspaugh@users.noreply.github.com> Co-authored-by: katspaugh Co-authored-by: Diogo Soares <32431609+DiogoSoaress@users.noreply.github.com> Co-authored-by: Aaron Cook * Fix: address book entry dialog (#2156) * [TX flow] Mobile optimisation (#2154) * Add folder structure for tx flow * feat: create new-tx route and NewTxMenu component * feat: Add StepperFactory and new tx layout (#2040) * feat: Add StepperFactory, new tx pages * wip: context instead of routes * Add tx flows to new modal context * fix: Close modal when user navigates * Export all flows from one file * refactor: Remove unused code from StepperFactory * fix: Duplicate ModalDialog to fix failing tests * Refactor: reactive recommended nonce (#2050) * Refactor: reactive recommended nonce Reduce re-renders Nonce -1 * Use "nonceReadyOnly" instead of -1 * Split sign and execute into two components * feat: Transaction status widget (#2062) * feat: add tx status widget UI * add logic to paint the stepper * port the ConfirmProposedTx to the new layout * pass tx data to the TxStatusWidget to get the tx confirmations * style: add new lines between adjacent tags * Refactor: SafeTxProvider (#2064) * Refactor: SafeTxProvider * Avoid oscillating nonce * fix reject tx for new provider --------- Co-authored-by: Usame Algan * Move progress to TxLayout * Refactor: useRecommendedNonce + useSafeTxGas (#2066) * Refactor: useRecommendedNonce + useSafeTxGas * Fix lint * Get recommended nonce by "estimating" an empty tx * Adjust ConfirmTx and ExecuteTxButton * Refactor: a less verbose ModalProvider (#2068) * Refactor: a less verbose ModalProvider * Fix Cannot redefine property: dispatchTxProposal * Refactor the tx flow system (#2071) * Refactor the tx flow system * Array * Fix: pass nonce correctly (#2072) * Fix linting errors, add TODOs for failing tx flows (#2070) * Editable nonce (#2077) * Editable nonce * Fix tests * refactor: save entire data structure on submission (#2083) * fix: Close modal on sign, only render current step * fix: Close modal on sign, only render current step * fix: set all data + move back button --------- Co-authored-by: Usame Algan * feat: Add SuccessScreen to tx flow (#2080) * Refactor: single type for tx flows (#2084) * Refactor: single type for tx flows * Omit txNonce * FormData type * feat: add owner flow (#2086) * feat: Change threshold flow (#2085) * feat: Port change threshold flow * fix: Only estimate gas when executing * fix: Remove old component * feat: remove owner flow * feat: replace owner flow (#2087) * feat: add owner flow * feat: replace owner flow * feat: replace owner flow * feat: update flow (#2089) * fix: Remove Module tx flow (#2090) * Add flow for remove guard (#2091) * Safe Apps tx flow (#2081) * SafeAppsTx flow * On close * Handle txFlow close * feat: new spending limit flow (#2093) * feat: new spending limit flow * fix: preserve token address + reset time values * Onclose callback (#2094) * Send button in Assets (#2097) * Send button in Assets * Supress contentEditable warning * Fix: align Next and Back buttons (#2103) * feat: remove spending limit flow (#2098) * Refactor: move AdvancedParams to ExecuteForm (#2104) * fix: Move sign msg modal to new flow (#2102) * fix: Move sign msg modal to new flow * Adjust flex property if subtitle exists * fix: Add flag to hide nonce field in TxLayout * TxCard layout (#2105) * Modal title and icon (#2107) * Modal title and icon * NFTs * feat: spending limit selector (#2106) * feat: batch execute flow (#2108) * Move on-chain sign to new flow (#2109) * feat: amount selector (#2111) * feat: amount selector * fix: use CSS variables * fix: cleanup styles * feat: execute/sign `RadioGroup` (#2117) * [Tx flow] feat: address input redesign (#2112) * feat: AddressInputReadOnly component * improve AddressInput * make component readonly * enable create AB entry from input component * show SaveAddressicon if address not in AB * open the list when clicking the caret * fix component height * show caret when there are available options * rm leftover code * do not highlight the readonly input on hover/click * focus the AddressInput on clicking to edit * change add to AB info text * do not truncate the address in the readonly component * show SaveAddressIcon when address is valid * amount input grows until token name * [TX flow] feat: confirm/execute title component (#2119) * feat: confirm/execute titles * place the component as per design * remove redundant code * use willExecute flag to display execution title * adjust the gap between SignOrExecuteForm elements * fix: remove error casting (#2127) * fix: remove error casting * refactor: don't call `asError` twice * fix: execution method style (#2125) * fix: execution method style * fix: change component * fix: change component * fix: update amount field style (#2124) * [TX flow] Send tokens overview (#2136) * fix: Adjust TxLayout header design * fix: Implement Token Transfer overview design * Remove loading state * [TX flow] style: offchain messages info boxes styles (#2134) * style: adjust success and info box styles * adjust msgSigners style * style margins in the info elements * clean up redundant variable * test: update tx builder URL * Feat: editable safeTxGas in Advanced details (#2132) * Feat: editable safeTxGas in Advanced details * Prettier * Make the form a popover * PR comments * fix: Nonce form (#2120) * fix: Update nonce input to show queued txs and reset button * fix: Extract hook, show input error outline, hide reset button if readonly * Add isEmpty flag to nonce input * Fix test * [TX flow] style: send token flow (#2126) * placeholder for AddressInput identicon * rm Send From * add the dividers to the layout * style CardActions * fix tests * [TX flow] styles: fix send token styles (#2138) * style: remove unnecessary CSS * style: consider the input label font-size in spacing * Small UI tweaks * fix: move default value to placeholder (#2139) * Fix DecodedTx tests * [TX flow] feat: add owner modal (#2143) * feat: create add owner * adjust ReviewOwner design * component to wrap owner address and include subtitle in modal * prefer RHF for form fields. use sx instead of classes * use MUI component * fix: remove owner flow styling (#2150) * fix: remove owner flow styling * fix: add titles * fix: Optimize new tx flow for mobile screens * refactor: Adjust all max media queries --------- Co-authored-by: Diogo Soares Co-authored-by: katspaugh <381895+katspaugh@users.noreply.github.com> Co-authored-by: katspaugh Co-authored-by: Diogo Soares <32431609+DiogoSoaress@users.noreply.github.com> Co-authored-by: Aaron Cook * Chore: update MUI * fix: Enable spending limit txs in new flow (#2160) * fix: Enable spending limit txs in new flow * fix: Style review spending limit component * Adjust review screen design, fix nft link (#2162) * feat: simulation (#2157) * feat: simulation * Add context, update logos, remove canExecute * fix: reset on tx change + simplify context --------- Co-authored-by: Usame Algan * Fix: hide Edit for safeTxGas when 0 in 1.3.0+ (#2163) * Fix: hide Edit for safeTxGas when 0 in 1.3.0+ * Simplify onBlur * Fix: TxModalDialog zIndex * feat: Move Redefine into new Tx Flow (#2166) * feat: Move Redefine into new Tx Flow * fix: cleanup logos + comments * refactor: Folder structure --------- Co-authored-by: iamacook * fix: port balance change (#2172) * [TX flow] Replace tx (#2173) * Move replace tx screen into tx layout * Add illustration, fix modal zIndex * fix: update owner management styles (#2174) * feat: add confirmation badge to flow (#2183) * feat: add confirmation badge to flow * fix: condition * fix: dark mode * feat: add replacement to transaction status widget (#2184) * Fix: restore tracking of send modals (#2185) * fix: make balance change more compact (#2186) * fix: make balance change more compact * fix: increase `gap` between changes * fix: disable transition + backdrop of modals (#2189) * Fix: tx modal with collapsed sidebar (#2188) * feat: show alert before closing transaction flow (#2187) * feat: show alert before closing transaction flow * fix: dark mode font colour * fix: handle back button * fix: change text * fix: change text * fix: unmount on final sig + close warning * Adjust spending limit ui for new tx flow (#2190) * Adjust spending limit ui for new tx flow * Adjust titles, fix remove owner button regression * Extract enum and reuse * Remove reset time switch * Adjust enum exports * Adjust Send NFT layout for new tx flow (#2192) * Adjust Remove module ui (#2194) * Fix: autofocus recipient if not set (#2196) * Fix: autofocus recipient if not set * hideBackdrop * Fix NFTs tests * Fix create_tx test * fix: style new tx modal (#2193) * fix: style new tx modal * fix: revert wrapper * fix: type * fix: animated icon * fix: e2e * [TX flow] Adds nonce validation (#2175) * Adds nonce validation * Adjust nonce validation * Disable nonce for reject tx, use correct nonce when replacing a tx * Adjust wording * fix: migrate input to RHF * Limit nonce input width * Fix e2e tests --------- Co-authored-by: iamacook * fix: don't warn for send NFTs or tx builder (#2202) * fix: don't warn for send NFTs or tx builder * fix: use `instanceof` * feat: add subtitle to confirmation flow (#2204) * fix: make tx check widgets `sticky` (#2203) * fix: make tx check widgets `sticky` * fix: move CSS * Adjust safe apps tx flow ui (#2201) * Adjust safe apps tx flow ui * Fix zIndex issue * Only show divider if there is an approval, fix e2e test * Handle undefined tokenInfo * Fix failing e2e test * fix: change threshold flow style + titles (#2208) * fix: change threshold flow style + titles * fix: change title + add divider * fix: don't rely only on fetch status for error (#2206) * Adjust batch execute ui (#2209) * Adjust icon color for dark mode (#2210) * Fix: show an error if risk isn't acknowledged (#2216) * Fix: show an error if risk isn't acknowledged * Highlight risk checkbox on submit * Don't reset error * Rm timeout * fix: Hide reset nonce button (#2223) * fix: Hide reset nonce button * Use ch units instead of em, absolute positioned reset button * fix: Show unlimited approval amount in readonly mode (#2220) * fix: Handle relayed txs and errors in status screen (#2226) * fix: Handle relayed txs and errors in status screen * fix: Status screen dashboard link to include chain prefix * fix: TxFlow submit button alignment, error message spacing (#2227) * fix: TxFlow submit button alignment, error message spacing * fix: Pass classname to ErrorMessage * fix: Apply input styles to all input fields (#2231) * fix: Apply input styles to all input fields * chore: Add TODO * fix: Hide confirmation dialog if set via setTxFlow (#2233) * feat: show redefine warnings on mobile (#2234) - adds RedefineMessage and tenderly result to TxChecks for small screens - changes order of Redefine scan results and Tenderly Simulation * fix: remove redundant component (#2241) * fix: Adjust decoded tx ui (#2235) * fix: recipient title alignment (#2240) * feat: add missing tooltips (#2245) * fix: reduce space between name and address (#2239) * fix: reduce space between name and address * fix: adjust `line-height` * fix: import * fix: router is undefined when using onboard modal (#2248) * fix: Update illustration for new tx (#2249) * fix: Adjust z-index of new flow (#2250) * fix: Write tests for ApprovalEditor (#2243) * fix: readonly nonce input (#2247) - tweaks nonce input design slightly - fixes e2e tests * fix: remove threshold input when swapping owners (#2253) * feat: add chain indicator (#2242) * fix: change simulation title (#2256) * Small UI adjustments (#2259) * fix: Show recommended nonce in list (#2260) * fix: Show recommended nonce in list * fix: button ref issue * fix: Disable submit button for non-owners (#2261) * fix: Review send NFT view (#2263) * [TX flow] Merge dev (#2265) * fix: Check execute checkbox if execution is the only option (#2230) * v1.14.0 * Chore: escape quotes in release action (#2236) Use printf Use a heredoc Use jq * fix: only initiate WC v2 module if project id provided (#2228) * chore: mark `NEXT_PUBLIC_WC_PROJECT_ID` required * chore: don't prettify * fix: don't return module * fix: revert readme * fix: autoconnect to WC v2 on mobile (#2238) * fix: update token price tooltip (#2257) --------- Co-authored-by: katspaugh Co-authored-by: katspaugh <381895+katspaugh@users.noreply.github.com> Co-authored-by: Aaron Cook * [TX flow] Batch execute fixes (#2268) * fix: Hide status for batch execute * fix: Close batch execute flow when submitting tx * fix: Remove hide status flag, add isBatch flag and display different status messages for batch execution * fix: remove unnecessary hook (#2271) * fix: Sticky close button (#2269) * fix: Hide approval editor for non-approval transactions (#2262) * fix: Hide approval editor for non-approval transactions * fix: Adjust useApprovalInfos hook for non-approval txs * fix: Adjust tx flow elements height (#2272) * fix: increase `min-width` of nonce field (#2270) * fix: increase `min-width` of nonce field * fix: prevent recommended nonce jump * fix: align progress bar with new tx button (#2274) * fix: Align decoded tx ui for batch execute (#2275) * fix: Align decoded tx ui for batch execute * fix: Don't show confirmation dialog for batch execute, update spending limit components to use SendAmountBlock * fix: Validation for spending limits (#2277) * fix: Validation for spending limits * fix: Reset amount field to empty string instead of 0 when switching tokens * fix: Add readonly addressbook input to spending limits * fix: Hide nonce for spending limit txs (#2278) * fix: Hide nonce for spending limit txs * Update src/components/tx-flow/flows/TokenTransfer/ReviewSpendingLimitTx.tsx Co-authored-by: Aaron Cook --------- Co-authored-by: Aaron Cook --------- Co-authored-by: Usame Algan Co-authored-by: Diogo Soares Co-authored-by: Usame Algan <5880855+usame-algan@users.noreply.github.com> Co-authored-by: Diogo Soares <32431609+DiogoSoaress@users.noreply.github.com> Co-authored-by: Aaron Cook Co-authored-by: Manuel Gellfart --- .github/workflows/deploy.yml | 2 +- cypress/e2e/create_safe.cy.js | 2 +- cypress/e2e/safe-apps/tx_modal.cy.js | 18 +- cypress/e2e/smoke/create_tx.cy.js | 96 +-- cypress/e2e/smoke/nfts.cy.js | 11 +- package.json | 2 +- public/images/common/caret-down.svg | 3 + public/images/common/check.svg | 4 + public/images/common/close.svg | 2 +- public/images/common/minus.svg | 3 + public/images/common/plus.svg | 5 + public/images/common/save-address.svg | 4 + public/images/messages/created.svg | 2 +- public/images/messages/signed.svg | 2 +- public/images/notifications/info.svg | 2 +- public/images/sidebar/assets.svg | 6 +- public/images/transactions/new-tx.svg | 8 + public/images/transactions/replace-tx.svg | 8 + public/images/transactions/tenderly-dark.svg | 13 + public/images/transactions/tenderly-light.svg | 13 + .../address-book/AddressBookTable/index.tsx | 19 +- .../AddressBookTable/styles.module.css | 2 +- .../address-book/EntryDialog/index.tsx | 17 +- src/components/balances/AssetsTable/index.tsx | 19 +- .../balances/AssetsTable/styles.module.css | 2 +- .../HiddenTokenButton/styles.module.css | 2 +- .../common/AddressBookInput/index.tsx | 98 ++- .../common/AddressBookInput/styles.module.css | 20 + .../common/AddressInput/index.test.tsx | 4 +- src/components/common/AddressInput/index.tsx | 191 +++-- .../common/AddressInput/styles.module.css | 15 + .../common/AddressInputReadOnly/index.tsx | 44 + .../AddressInputReadOnly/styles.module.css | 40 + .../common/ConnectWallet/styles.module.css | 2 +- .../common/CookieBanner/styles.module.css | 2 +- .../common/DatePickerInput/index.tsx | 3 + .../common/EnhancedTable/styles.module.css | 2 +- .../common/EthHashInfo/styles.module.css | 2 +- .../common/Footer/styles.module.css | 2 +- .../common/Header/styles.module.css | 4 +- src/components/common/NameInput/index.tsx | 5 +- .../common/PageHeader/styles.module.css | 2 +- src/components/common/PageLayout/index.tsx | 13 +- .../common/PageLayout/styles.module.css | 6 +- src/components/common/ProgressBar/index.tsx | 8 + .../common/ProgressBar/styles.module.css | 16 + src/components/common/QRCode/index.tsx | 2 +- .../common/SpendingLimitLabel/index.tsx | 4 +- src/components/common/Sticky/index.tsx | 2 +- .../common/TokenAmountInput/index.tsx | 100 +++ .../common/TokenAmountInput/styles.module.css | 59 ++ src/components/common/TxModalDialog/index.tsx | 51 ++ .../common/TxModalDialog/styles.module.css | 82 ++ .../common/WalletInfo/styles.module.css | 2 +- .../dashboard/PendingTxs/styles.module.css | 2 +- .../new-safe/CardStepper/styles.module.css | 2 +- src/components/new-safe/OwnerRow/index.tsx | 12 +- .../new-safe/OwnerRow/styles.module.css | 12 - .../create/steps/OwnerPolicyStep/index.tsx | 39 +- .../steps/OwnerPolicyStep/styles.module.css | 12 - .../steps/SetNameStep/styles.module.css | 2 +- .../steps/StatusStep/LoadingSpinner/index.tsx | 14 +- .../LoadingSpinner/styles.module.css | 3 +- .../create/steps/StatusStep/StatusMessage.tsx | 6 +- .../new-safe/create/styles.module.css | 2 +- src/components/nfts/NftCollections/index.tsx | 26 +- src/components/safe-apps/AppFrame/index.tsx | 170 ++-- .../AppFrame/useThirdPartyCookies.ts | 2 +- .../safe-apps/SafeAppLandingPage/index.tsx | 2 +- .../SafeAppsHeader/styles.module.css | 2 +- .../safe-apps/SafeAppsModalLabel/index.tsx | 22 - .../SafeAppsSignMessageModal.test.tsx | 83 -- .../SafeAppsSignMessageModal/index.tsx | 36 - .../SafeAppsTxModal/InvalidTransaction.tsx | 21 - .../SafeAppsTxModal/ReviewSafeAppsTx.tsx | 90 -- .../safe-apps/SafeAppsTxModal/index.tsx | 40 - .../safe-apps/SafeAppsTxModal/useTxModal.ts | 43 - .../SignMessageModal/useSignMessageModal.ts | 61 -- .../safe-messages/InfoBox/index.tsx | 11 +- .../safe-messages/InfoBox/styles.module.css | 11 +- .../MsgModal/ConfirmationDialog.tsx | 31 - .../safe-messages/MsgSigners/index.tsx | 8 +- .../MsgSigners/styles.module.css | 5 + .../safe-messages/SignMsgButton/index.tsx | 43 +- .../settings/ContractVersion/index.tsx | 21 +- .../useGlobalImportFileParser.ts | 2 +- .../settings/RequiredConfirmations/index.tsx | 25 +- .../SafeModules/RemoveModule/index.tsx | 40 - .../RemoveModule/steps/ReviewRemoveModule.tsx | 38 - src/components/settings/SafeModules/index.tsx | 23 +- .../SpendingLimits/NewSpendingLimit/index.tsx | 47 -- .../steps/ReviewSpendingLimit.tsx | 121 --- .../steps/SpendingLimitForm.tsx | 167 ---- .../RemoveSpendingLimit/index.tsx | 64 -- .../SpendingLimits/SpendingLimitsTable.tsx | 33 +- .../settings/SpendingLimits/index.tsx | 25 +- .../TransactionGuards/RemoveGuard/index.tsx | 41 - .../settings/TransactionGuards/index.tsx | 23 +- .../DialogSteps/ChooseOwnerStep.tsx | 104 --- .../DialogSteps/ReviewOwnerTxStep.tsx | 134 --- .../DialogSteps/SetThresholdStep.tsx | 60 -- .../DialogSteps/styles.module.css | 15 - .../AddOwnerDialog/DialogSteps/types.d.ts | 10 - .../settings/owner/AddOwnerDialog/index.tsx | 61 -- .../owner/ChangeThresholdDialog/index.tsx | 126 --- .../settings/owner/OwnerList/index.tsx | 76 +- .../DialogSteps/ReviewRemoveOwnerTxStep.tsx | 92 --- .../DialogSteps/ReviewSelectedOwnerStep.tsx | 31 - .../DialogSteps/SetThresholdStep.tsx | 57 -- .../DialogSteps/styles.module.css | 7 - .../RemoveOwnerDialog/DialogSteps/types.d.ts | 10 - .../owner/RemoveOwnerDialog/index.tsx | 70 -- .../owner/ReplaceOwnerDialog/index.tsx | 55 -- src/components/sidebar/NewTxButton/index.tsx | 50 +- .../sidebar/SafeList/styles.module.css | 2 +- .../sidebar/Sidebar/styles.module.css | 2 +- .../transactions/BatchExecuteButton/index.tsx | 10 +- .../transactions/ExecuteTxButton/index.tsx | 11 +- .../GroupedTxListItems/styles.module.css | 2 +- .../transactions/RejectTxButton/index.tsx | 64 +- .../transactions/SignTxButton/index.tsx | 51 +- .../transactions/TxDetails/SafeTxGasForm.tsx | 79 ++ .../TxDetails/Summary/TxDataRow/index.tsx | 7 +- .../Summary/TxDataRow/styles.module.css | 2 +- .../transactions/TxDetails/Summary/index.tsx | 16 + .../TxData/DecodedData/Multisend/index.tsx | 23 +- .../DecodedData/Multisend/styles.module.css | 26 +- .../DecodedData/SingleTxDecoded/index.tsx | 5 +- .../TxData/DecodedData/ValueArray/index.tsx | 11 +- .../DecodedData/ValueArray/styles.module.css | 5 + .../TxDetails/TxData/SpendingLimits/index.tsx | 4 +- .../TxData/Transfer/TransferActions.tsx | 22 +- .../transactions/TxDetails/styles.module.css | 2 +- .../transactions/TxFilterForm/index.tsx | 3 + .../TxFilterForm/styles.module.css | 2 +- src/components/transactions/TxInfo/index.tsx | 4 +- .../transactions/TxSummary/styles.module.css | 2 +- src/components/tx-flow/SafeTxProvider.tsx | 82 ++ src/components/tx-flow/TxInfoProvider.tsx | 23 + src/components/tx-flow/common/TxButton.tsx | 54 ++ .../tx-flow/common/TxCard/index.tsx | 15 + .../tx-flow/common/TxLayout/index.tsx | 162 ++++ .../tx-flow/common/TxLayout/styles.module.css | 152 ++++ .../tx-flow/common/TxNonce/index.tsx | 214 +++++ .../tx-flow/common/TxNonce/styles.module.css | 19 + .../tx-flow/common/TxStatusWidget/index.tsx | 115 +++ .../common/TxStatusWidget/styles.module.css | 93 +++ src/components/tx-flow/common/constants.ts | 4 + .../tx-flow/common/styles.module.css | 18 + .../tx-flow/flows/AddOwner/ChooseOwner.tsx | 189 +++++ .../tx-flow/flows/AddOwner/ReviewOwner.tsx | 88 ++ .../tx-flow/flows/AddOwner/index.tsx | 55 ++ .../flows/ChangeThreshold/ChooseThreshold.tsx | 135 +++ .../ChangeThreshold/ReviewChangeThreshold.tsx | 47 ++ .../tx-flow/flows/ChangeThreshold/index.tsx | 41 + .../flows/ConfirmTx}/ConfirmProposedTx.tsx | 36 +- .../tx-flow/flows/ConfirmTx/index.tsx | 27 + .../tx-flow/flows/ExecuteBatch/DecodedTxs.tsx | 73 ++ .../flows/ExecuteBatch/ReviewBatch.tsx} | 124 +-- .../tx-flow/flows/ExecuteBatch/index.tsx | 19 + .../NewSpendingLimit/CreateSpendingLimit.tsx | 122 +++ .../NewSpendingLimit/ReviewSpendingLimit.tsx | 144 ++++ .../__tests__/SpendingLimitForm.test.ts | 4 +- .../tx-flow/flows/NewSpendingLimit/index.tsx | 51 ++ src/components/tx-flow/flows/NewTx/index.tsx | 73 ++ .../tx-flow/flows/NewTx/styles.module.css | 59 ++ .../flows/NftTransfer/ReviewNftBatch.tsx | 60 ++ .../flows/NftTransfer/SendNftBatch.tsx | 146 ++++ .../tx-flow/flows/NftTransfer/index.tsx | 47 ++ .../flows/RejectTx}/RejectTx.tsx | 20 +- .../tx-flow/flows/RejectTx/index.tsx | 17 + .../flows/RemoveGuard}/ReviewRemoveGuard.tsx | 26 +- .../tx-flow/flows/RemoveGuard/index.tsx | 17 + .../flows/RemoveModule/ReviewRemoveModule.tsx | 44 + .../tx-flow/flows/RemoveModule/index.tsx | 16 + .../flows/RemoveOwner/ReviewRemoveOwner.tsx | 61 ++ .../flows/RemoveOwner/SetThreshold.tsx | 92 +++ .../tx-flow/flows/RemoveOwner/index.tsx | 46 ++ .../flows/RemoveOwner/styles.module.css | 6 + .../RemoveSpendingLimit.tsx | 91 ++ .../flows/RemoveSpendingLimit/index.tsx | 14 + .../tx-flow/flows/ReplaceOwner/index.tsx | 53 ++ .../tx-flow/flows/ReplaceTx/index.tsx | 117 +++ .../flows/ReplaceTx}/styles.module.css | 29 +- .../flows/SafeAppsTx/ReviewSafeAppsTx.tsx | 85 ++ .../tx-flow/flows/SafeAppsTx/index.tsx | 27 + .../flows/SignMessage/SignMessage.test.tsx} | 81 +- .../flows/SignMessage/SignMessage.tsx} | 175 ++-- .../tx-flow/flows/SignMessage/index.tsx | 35 + .../ReviewSignMessageOnChain.test.tsx | 78 ++ .../ReviewSignMessageOnChain.tsx} | 104 +-- .../flows/SignMessageOnChain/index.tsx | 19 + .../flows/SuccessScreen/StatusMessage.tsx | 51 ++ .../flows/SuccessScreen/StatusStepper.tsx | 56 ++ .../tx-flow/flows/SuccessScreen/index.tsx | 83 ++ .../flows/SuccessScreen/styles.module.css | 35 + .../TokenTransfer/CreateTokenTransfer.tsx | 195 +++++ .../TokenTransfer}/ReviewSpendingLimitTx.tsx | 63 +- .../TokenTransfer/ReviewTokenTransfer.tsx | 50 ++ .../flows/TokenTransfer/ReviewTokenTx.tsx | 25 + .../flows/TokenTransfer/SendAmountBlock.tsx | 57 ++ .../flows/TokenTransfer/SendToBlock.tsx | 21 + .../tx-flow/flows/TokenTransfer/index.tsx | 69 ++ .../flows/TokenTransfer/styles.module.css | 5 + .../flows/UpdateSafe/UpdateSafeReview.tsx} | 65 +- .../tx-flow/flows/UpdateSafe/index.tsx | 13 + src/components/tx-flow/index.tsx | 77 ++ src/components/tx-flow/useTxStepper.tsx | 19 + .../tx/AdvancedParams/AdvancedParamsForm.tsx | 140 +--- src/components/tx/AdvancedParams/index.tsx | 6 - .../tx/AdvancedParams/useAdvancedParams.ts | 12 +- .../tx/ApprovalEditor/ApprovalEditor.test.tsx | 478 ++--------- .../ApprovalEditorForm.test.tsx | 110 +++ .../tx/ApprovalEditor/ApprovalEditorForm.tsx | 68 +- .../tx/ApprovalEditor/ApprovalItem.tsx | 32 + .../tx/ApprovalEditor/ApprovalValueField.tsx | 13 +- .../tx/ApprovalEditor/Approvals.tsx | 28 + .../hooks/useApprovalInfos.test.ts | 147 ++++ .../ApprovalEditor/hooks/useApprovalInfos.ts | 30 +- src/components/tx/ApprovalEditor/index.tsx | 123 +-- .../tx/ApprovalEditor/styles.module.css | 38 +- src/components/tx/DecodedTx/index.test.tsx | 10 +- src/components/tx/DecodedTx/index.tsx | 85 +- src/components/tx/ErrorMessage/index.tsx | 4 +- .../tx/ErrorMessage/styles.module.css | 5 + src/components/tx/ExecuteCheckbox/index.tsx | 71 +- .../tx/ExecuteCheckbox/styles.module.css | 37 + .../tx/ExecutionMethodSelector/index.tsx | 4 +- .../ExecutionMethodSelector/styles.module.css | 3 +- src/components/tx/GasParams/index.tsx | 3 +- src/components/tx/NonceForm/index.tsx | 153 ---- src/components/tx/SendFromBlock/index.tsx | 1 + src/components/tx/SendToBlock/index.tsx | 1 + .../SignOrExecuteForm/ConfirmationTitle.tsx | 29 + .../tx/SignOrExecuteForm/ExecuteForm.tsx | 167 ++++ .../tx/SignOrExecuteForm/NonOwnerError.tsx | 11 + .../RiskConfirmationError.tsx | 15 + .../tx/SignOrExecuteForm/SignForm.tsx | 91 ++ .../SignOrExecuteForm.test.tsx | 778 ------------------ .../tx/SignOrExecuteForm/SubmitButton.tsx | 4 +- .../tx/SignOrExecuteForm/TxChecks.tsx | 31 + .../tx/SignOrExecuteForm/hooks.test.ts | 73 +- src/components/tx/SignOrExecuteForm/hooks.ts | 53 +- src/components/tx/SignOrExecuteForm/index.tsx | 289 ++----- .../tx/SignOrExecuteForm/styles.module.css | 58 ++ src/components/tx/SpendingLimitRow/index.tsx | 153 +++- .../tx/SpendingLimitRow/styles.module.css | 15 + src/components/tx/SponsoredBy/index.tsx | 21 +- src/components/tx/SuccessMessage/index.tsx | 12 +- .../tx/SuccessMessage/styles.module.css | 1 - .../tx/TxSimulation/SimulationResult.tsx | 89 -- src/components/tx/TxSimulation/index.tsx | 104 --- .../tx/TxSimulation/styles.module.css | 18 - .../modals/BatchExecuteModal/DecodedTxs.tsx | 55 -- .../tx/modals/BatchExecuteModal/index.tsx | 24 - .../tx/modals/ConfirmTxModal/index.tsx | 20 - .../tx/modals/ExecuteTxModal/index.tsx | 20 - .../tx/modals/NewTxModal/CreationModal.tsx | 58 -- .../tx/modals/NewTxModal/ReplacementModal.tsx | 164 ---- .../tx/modals/NewTxModal/TxButton.tsx | 23 - src/components/tx/modals/NewTxModal/index.tsx | 86 -- .../modals/NftBatchModal/ReviewNftBatch.tsx | 37 - .../tx/modals/NftBatchModal/SendNftBatch.tsx | 118 --- .../tx/modals/NftBatchModal/index.tsx | 29 - .../tx/modals/RejectTxModal/index.tsx | 19 - .../TokenTransferModal/ReviewMultisigTx.tsx | 38 - .../TokenTransferModal/ReviewTokenTx.tsx | 46 -- .../TokenTransferModal/SendAssetsForm.tsx | 261 ------ .../tx/modals/TokenTransferModal/index.tsx | 38 - .../TokenTransferModal/styles.module.css | 16 - .../index.tsx => RedefineBalanceChange.tsx} | 82 +- .../RedefineBalanceChange/styles.module.css | 52 -- .../tx/security/redefine/RedefineHint.tsx | 52 ++ .../RedefineScanResult/RedefineScanResult.tsx | 86 -- src/components/tx/security/redefine/index.tsx | 195 +++++ .../tx/security/redefine/styles.module.css | 93 +++ .../tx/security/redefine/useRedefine.ts | 48 ++ .../tx/security/shared/LoadingLabel.tsx | 16 - .../shared/SecurityWarnings/index.test.ts | 46 -- .../shared/SecurityWarnings/index.tsx | 185 ----- .../shared/SecurityWarnings/styles.module.css | 60 -- .../TxSecurityContext.tsx} | 26 +- .../tx/security/shared/styles.module.css | 18 + .../tenderly}/__tests__/useSimulation.test.ts | 11 +- .../tenderly}/__tests__/utils.test.ts | 12 +- src/components/tx/security/tenderly/index.tsx | 202 +++++ .../tx/security/tenderly/styles.module.css | 8 + .../tenderly}/types.ts | 0 .../tenderly}/useSimulation.ts | 11 +- .../tenderly}/utils.ts | 4 +- .../{redefine => }/useDelegateCallModule.ts | 1 + .../{redefine => }/useRecipientModule.ts | 1 + src/components/welcome/styles.module.css | 4 +- src/config/constants.ts | 2 + src/hooks/__tests__/useAsync.test.ts | 2 +- src/hooks/__tests__/useBatchedTxs.test.ts | 66 +- src/hooks/__tests__/usePreviousNonces.test.ts | 29 + src/hooks/coreSDK/useInitSafeCoreSDK.ts | 8 +- .../messages/useSyncSafeMessageSigner.ts | 3 +- src/hooks/safe-apps/useSafeAppFromManifest.ts | 3 +- src/hooks/useAsync.ts | 3 +- src/hooks/useGasLimit.ts | 10 +- src/hooks/useGasPrice.ts | 5 +- .../useIsSafeTokenPaused.ts | 0 src/hooks/useMasterCopies.ts | 2 +- src/hooks/usePreviousNonces.ts | 31 + src/hooks/useSpendingLimitGas.ts | 2 +- src/hooks/useWalletCanRelay.ts | 6 +- src/hooks/wallets/useOnboard.ts | 4 +- src/pages/_app.tsx | 3 +- .../exceptions/{ => __tests__}/index.test.ts | 18 +- .../exceptions/__tests__/utils.test.ts | 34 + src/services/exceptions/index.ts | 7 +- src/services/exceptions/utils.ts | 19 + src/services/local-storage/Storage.ts | 9 +- src/services/pairing/hooks.ts | 2 +- src/services/safe-apps/AppCommunicator.ts | 3 +- .../safe-messages/safeMsgNotifications.ts | 2 +- src/services/safe-messages/safeMsgSender.ts | 5 +- .../security/modules/ApprovalModule/index.ts | 8 +- src/services/security/modules/types.ts | 2 +- .../tx/__tests__/spendingLimitParams.test.ts | 4 +- .../ts-sender.test.ts} | 38 +- src/services/tx/tx-sender/create.ts | 99 +-- src/services/tx/tx-sender/dispatch.ts | 27 +- src/services/tx/tx-sender/recommendedNonce.ts | 50 ++ src/services/tx/tx-sender/sdk.ts | 3 +- src/services/tx/txMonitor.ts | 5 +- src/styles/accordion.module.css | 5 + src/styles/globals.css | 2 +- src/styles/inputs.module.css | 35 + src/tests/mocks/transactions.ts | 60 ++ src/tests/pages/apps-share.test.tsx | 2 +- src/utils/ethers-utils.ts | 2 +- src/utils/safe-messages.ts | 3 +- src/utils/transactions.ts | 9 +- yarn.lock | 198 +++-- 337 files changed, 8263 insertions(+), 6918 deletions(-) create mode 100644 public/images/common/caret-down.svg create mode 100644 public/images/common/check.svg create mode 100644 public/images/common/minus.svg create mode 100644 public/images/common/plus.svg create mode 100644 public/images/common/save-address.svg create mode 100644 public/images/transactions/new-tx.svg create mode 100644 public/images/transactions/replace-tx.svg create mode 100644 public/images/transactions/tenderly-dark.svg create mode 100644 public/images/transactions/tenderly-light.svg create mode 100644 src/components/common/AddressInput/styles.module.css create mode 100644 src/components/common/AddressInputReadOnly/index.tsx create mode 100644 src/components/common/AddressInputReadOnly/styles.module.css create mode 100644 src/components/common/ProgressBar/index.tsx create mode 100644 src/components/common/ProgressBar/styles.module.css create mode 100644 src/components/common/TokenAmountInput/index.tsx create mode 100644 src/components/common/TokenAmountInput/styles.module.css create mode 100644 src/components/common/TxModalDialog/index.tsx create mode 100644 src/components/common/TxModalDialog/styles.module.css delete mode 100644 src/components/new-safe/create/steps/OwnerPolicyStep/styles.module.css delete mode 100644 src/components/safe-apps/SafeAppsModalLabel/index.tsx delete mode 100644 src/components/safe-apps/SafeAppsSignMessageModal/SafeAppsSignMessageModal.test.tsx delete mode 100644 src/components/safe-apps/SafeAppsSignMessageModal/index.tsx delete mode 100644 src/components/safe-apps/SafeAppsTxModal/InvalidTransaction.tsx delete mode 100644 src/components/safe-apps/SafeAppsTxModal/ReviewSafeAppsTx.tsx delete mode 100644 src/components/safe-apps/SafeAppsTxModal/index.tsx delete mode 100644 src/components/safe-apps/SafeAppsTxModal/useTxModal.ts delete mode 100644 src/components/safe-apps/SignMessageModal/useSignMessageModal.ts delete mode 100644 src/components/safe-messages/MsgModal/ConfirmationDialog.tsx delete mode 100644 src/components/settings/SafeModules/RemoveModule/index.tsx delete mode 100644 src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx delete mode 100644 src/components/settings/SpendingLimits/NewSpendingLimit/index.tsx delete mode 100644 src/components/settings/SpendingLimits/NewSpendingLimit/steps/ReviewSpendingLimit.tsx delete mode 100644 src/components/settings/SpendingLimits/NewSpendingLimit/steps/SpendingLimitForm.tsx delete mode 100644 src/components/settings/SpendingLimits/RemoveSpendingLimit/index.tsx delete mode 100644 src/components/settings/TransactionGuards/RemoveGuard/index.tsx delete mode 100644 src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx delete mode 100644 src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx delete mode 100644 src/components/settings/owner/AddOwnerDialog/DialogSteps/SetThresholdStep.tsx delete mode 100644 src/components/settings/owner/AddOwnerDialog/DialogSteps/styles.module.css delete mode 100644 src/components/settings/owner/AddOwnerDialog/DialogSteps/types.d.ts delete mode 100644 src/components/settings/owner/AddOwnerDialog/index.tsx delete mode 100644 src/components/settings/owner/ChangeThresholdDialog/index.tsx delete mode 100644 src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx delete mode 100644 src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx delete mode 100644 src/components/settings/owner/RemoveOwnerDialog/DialogSteps/SetThresholdStep.tsx delete mode 100644 src/components/settings/owner/RemoveOwnerDialog/DialogSteps/styles.module.css delete mode 100644 src/components/settings/owner/RemoveOwnerDialog/DialogSteps/types.d.ts delete mode 100644 src/components/settings/owner/RemoveOwnerDialog/index.tsx delete mode 100644 src/components/settings/owner/ReplaceOwnerDialog/index.tsx create mode 100644 src/components/transactions/TxDetails/SafeTxGasForm.tsx create mode 100644 src/components/tx-flow/SafeTxProvider.tsx create mode 100644 src/components/tx-flow/TxInfoProvider.tsx create mode 100644 src/components/tx-flow/common/TxButton.tsx create mode 100644 src/components/tx-flow/common/TxCard/index.tsx create mode 100644 src/components/tx-flow/common/TxLayout/index.tsx create mode 100644 src/components/tx-flow/common/TxLayout/styles.module.css create mode 100644 src/components/tx-flow/common/TxNonce/index.tsx create mode 100644 src/components/tx-flow/common/TxNonce/styles.module.css create mode 100644 src/components/tx-flow/common/TxStatusWidget/index.tsx create mode 100644 src/components/tx-flow/common/TxStatusWidget/styles.module.css create mode 100644 src/components/tx-flow/common/constants.ts create mode 100644 src/components/tx-flow/common/styles.module.css create mode 100644 src/components/tx-flow/flows/AddOwner/ChooseOwner.tsx create mode 100644 src/components/tx-flow/flows/AddOwner/ReviewOwner.tsx create mode 100644 src/components/tx-flow/flows/AddOwner/index.tsx create mode 100644 src/components/tx-flow/flows/ChangeThreshold/ChooseThreshold.tsx create mode 100644 src/components/tx-flow/flows/ChangeThreshold/ReviewChangeThreshold.tsx create mode 100644 src/components/tx-flow/flows/ChangeThreshold/index.tsx rename src/components/{tx/modals/ConfirmTxModal => tx-flow/flows/ConfirmTx}/ConfirmProposedTx.tsx (55%) create mode 100644 src/components/tx-flow/flows/ConfirmTx/index.tsx create mode 100644 src/components/tx-flow/flows/ExecuteBatch/DecodedTxs.tsx rename src/components/{tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx => tx-flow/flows/ExecuteBatch/ReviewBatch.tsx} (66%) create mode 100644 src/components/tx-flow/flows/ExecuteBatch/index.tsx create mode 100644 src/components/tx-flow/flows/NewSpendingLimit/CreateSpendingLimit.tsx create mode 100644 src/components/tx-flow/flows/NewSpendingLimit/ReviewSpendingLimit.tsx rename src/components/{settings/SpendingLimits => tx-flow/flows}/NewSpendingLimit/__tests__/SpendingLimitForm.test.ts (87%) create mode 100644 src/components/tx-flow/flows/NewSpendingLimit/index.tsx create mode 100644 src/components/tx-flow/flows/NewTx/index.tsx create mode 100644 src/components/tx-flow/flows/NewTx/styles.module.css create mode 100644 src/components/tx-flow/flows/NftTransfer/ReviewNftBatch.tsx create mode 100644 src/components/tx-flow/flows/NftTransfer/SendNftBatch.tsx create mode 100644 src/components/tx-flow/flows/NftTransfer/index.tsx rename src/components/{tx/modals/RejectTxModal => tx-flow/flows/RejectTx}/RejectTx.tsx (61%) create mode 100644 src/components/tx-flow/flows/RejectTx/index.tsx rename src/components/{settings/TransactionGuards/RemoveGuard/steps => tx-flow/flows/RemoveGuard}/ReviewRemoveGuard.tsx (58%) create mode 100644 src/components/tx-flow/flows/RemoveGuard/index.tsx create mode 100644 src/components/tx-flow/flows/RemoveModule/ReviewRemoveModule.tsx create mode 100644 src/components/tx-flow/flows/RemoveModule/index.tsx create mode 100644 src/components/tx-flow/flows/RemoveOwner/ReviewRemoveOwner.tsx create mode 100644 src/components/tx-flow/flows/RemoveOwner/SetThreshold.tsx create mode 100644 src/components/tx-flow/flows/RemoveOwner/index.tsx create mode 100644 src/components/tx-flow/flows/RemoveOwner/styles.module.css create mode 100644 src/components/tx-flow/flows/RemoveSpendingLimit/RemoveSpendingLimit.tsx create mode 100644 src/components/tx-flow/flows/RemoveSpendingLimit/index.tsx create mode 100644 src/components/tx-flow/flows/ReplaceOwner/index.tsx create mode 100644 src/components/tx-flow/flows/ReplaceTx/index.tsx rename src/components/{tx/modals/NewTxModal => tx-flow/flows/ReplaceTx}/styles.module.css (81%) create mode 100644 src/components/tx-flow/flows/SafeAppsTx/ReviewSafeAppsTx.tsx create mode 100644 src/components/tx-flow/flows/SafeAppsTx/index.tsx rename src/components/{safe-messages/MsgModal/index.test.tsx => tx-flow/flows/SignMessage/SignMessage.test.tsx} (89%) rename src/components/{safe-messages/MsgModal/index.tsx => tx-flow/flows/SignMessage/SignMessage.tsx} (54%) create mode 100644 src/components/tx-flow/flows/SignMessage/index.tsx create mode 100644 src/components/tx-flow/flows/SignMessageOnChain/ReviewSignMessageOnChain.test.tsx rename src/components/{safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx => tx-flow/flows/SignMessageOnChain/ReviewSignMessageOnChain.tsx} (61%) create mode 100644 src/components/tx-flow/flows/SignMessageOnChain/index.tsx create mode 100644 src/components/tx-flow/flows/SuccessScreen/StatusMessage.tsx create mode 100644 src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx create mode 100644 src/components/tx-flow/flows/SuccessScreen/index.tsx create mode 100644 src/components/tx-flow/flows/SuccessScreen/styles.module.css create mode 100644 src/components/tx-flow/flows/TokenTransfer/CreateTokenTransfer.tsx rename src/components/{tx/modals/TokenTransferModal => tx-flow/flows/TokenTransfer}/ReviewSpendingLimitTx.tsx (72%) create mode 100644 src/components/tx-flow/flows/TokenTransfer/ReviewTokenTransfer.tsx create mode 100644 src/components/tx-flow/flows/TokenTransfer/ReviewTokenTx.tsx create mode 100644 src/components/tx-flow/flows/TokenTransfer/SendAmountBlock.tsx create mode 100644 src/components/tx-flow/flows/TokenTransfer/SendToBlock.tsx create mode 100644 src/components/tx-flow/flows/TokenTransfer/index.tsx create mode 100644 src/components/tx-flow/flows/TokenTransfer/styles.module.css rename src/components/{settings/ContractVersion/UpdateSafeDialog.tsx => tx-flow/flows/UpdateSafe/UpdateSafeReview.tsx} (54%) create mode 100644 src/components/tx-flow/flows/UpdateSafe/index.tsx create mode 100644 src/components/tx-flow/index.tsx create mode 100644 src/components/tx-flow/useTxStepper.tsx create mode 100644 src/components/tx/ApprovalEditor/ApprovalEditorForm.test.tsx create mode 100644 src/components/tx/ApprovalEditor/ApprovalItem.tsx create mode 100644 src/components/tx/ApprovalEditor/Approvals.tsx create mode 100644 src/components/tx/ApprovalEditor/hooks/useApprovalInfos.test.ts create mode 100644 src/components/tx/ExecuteCheckbox/styles.module.css delete mode 100644 src/components/tx/NonceForm/index.tsx create mode 100644 src/components/tx/SignOrExecuteForm/ConfirmationTitle.tsx create mode 100644 src/components/tx/SignOrExecuteForm/ExecuteForm.tsx create mode 100644 src/components/tx/SignOrExecuteForm/NonOwnerError.tsx create mode 100644 src/components/tx/SignOrExecuteForm/RiskConfirmationError.tsx create mode 100644 src/components/tx/SignOrExecuteForm/SignForm.tsx delete mode 100644 src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx create mode 100644 src/components/tx/SignOrExecuteForm/TxChecks.tsx create mode 100644 src/components/tx/SignOrExecuteForm/styles.module.css create mode 100644 src/components/tx/SpendingLimitRow/styles.module.css delete mode 100644 src/components/tx/TxSimulation/SimulationResult.tsx delete mode 100644 src/components/tx/TxSimulation/index.tsx delete mode 100644 src/components/tx/TxSimulation/styles.module.css delete mode 100644 src/components/tx/modals/BatchExecuteModal/DecodedTxs.tsx delete mode 100644 src/components/tx/modals/BatchExecuteModal/index.tsx delete mode 100644 src/components/tx/modals/ConfirmTxModal/index.tsx delete mode 100644 src/components/tx/modals/ExecuteTxModal/index.tsx delete mode 100644 src/components/tx/modals/NewTxModal/CreationModal.tsx delete mode 100644 src/components/tx/modals/NewTxModal/ReplacementModal.tsx delete mode 100644 src/components/tx/modals/NewTxModal/TxButton.tsx delete mode 100644 src/components/tx/modals/NewTxModal/index.tsx delete mode 100644 src/components/tx/modals/NftBatchModal/ReviewNftBatch.tsx delete mode 100644 src/components/tx/modals/NftBatchModal/SendNftBatch.tsx delete mode 100644 src/components/tx/modals/NftBatchModal/index.tsx delete mode 100644 src/components/tx/modals/RejectTxModal/index.tsx delete mode 100644 src/components/tx/modals/TokenTransferModal/ReviewMultisigTx.tsx delete mode 100644 src/components/tx/modals/TokenTransferModal/ReviewTokenTx.tsx delete mode 100644 src/components/tx/modals/TokenTransferModal/SendAssetsForm.tsx delete mode 100644 src/components/tx/modals/TokenTransferModal/index.tsx delete mode 100644 src/components/tx/modals/TokenTransferModal/styles.module.css rename src/components/tx/security/redefine/{RedefineBalanceChange/index.tsx => RedefineBalanceChange.tsx} (66%) delete mode 100644 src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css create mode 100644 src/components/tx/security/redefine/RedefineHint.tsx delete mode 100644 src/components/tx/security/redefine/RedefineScanResult/RedefineScanResult.tsx create mode 100644 src/components/tx/security/redefine/index.tsx create mode 100644 src/components/tx/security/redefine/styles.module.css delete mode 100644 src/components/tx/security/shared/LoadingLabel.tsx delete mode 100644 src/components/tx/security/shared/SecurityWarnings/index.test.ts delete mode 100644 src/components/tx/security/shared/SecurityWarnings/index.tsx delete mode 100644 src/components/tx/security/shared/SecurityWarnings/styles.module.css rename src/components/tx/security/{TransactionSecurityContext/index.tsx => shared/TxSecurityContext.tsx} (64%) create mode 100644 src/components/tx/security/shared/styles.module.css rename src/components/tx/{TxSimulation => security/tenderly}/__tests__/useSimulation.test.ts (95%) rename src/components/tx/{TxSimulation => security/tenderly}/__tests__/utils.test.ts (97%) create mode 100644 src/components/tx/security/tenderly/index.tsx create mode 100644 src/components/tx/security/tenderly/styles.module.css rename src/components/tx/{TxSimulation => security/tenderly}/types.ts (100%) rename src/components/tx/{TxSimulation => security/tenderly}/useSimulation.ts (90%) rename src/components/tx/{TxSimulation => security/tenderly}/utils.ts (98%) rename src/components/tx/security/{redefine => }/useDelegateCallModule.ts (96%) rename src/components/tx/security/{redefine => }/useRecipientModule.ts (97%) create mode 100644 src/hooks/__tests__/usePreviousNonces.test.ts rename src/{components/tx/modals/TokenTransferModal => hooks}/useIsSafeTokenPaused.ts (100%) create mode 100644 src/hooks/usePreviousNonces.ts rename src/services/exceptions/{ => __tests__}/index.test.ts (81%) create mode 100644 src/services/exceptions/__tests__/utils.test.ts create mode 100644 src/services/exceptions/utils.ts rename src/services/tx/tx-sender/{index.test.ts => __tests__/ts-sender.test.ts} (93%) create mode 100644 src/services/tx/tx-sender/recommendedNonce.ts create mode 100644 src/styles/accordion.module.css create mode 100644 src/styles/inputs.module.css create mode 100644 src/tests/mocks/transactions.ts diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fd10d81a57..6a05f029ff 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -79,7 +79,7 @@ jobs: BUCKET: s3://${{ secrets.AWS_REVIEW_BUCKET_NAME }}/walletweb/${{ steps.extract_branch.outputs.branch }} run: bash ./scripts/github/s3_upload.sh - # Comnment + # Comment - name: Post a deployment link in the PR if: always() && github.event.number uses: mshick/add-pr-comment@v2 diff --git a/cypress/e2e/create_safe.cy.js b/cypress/e2e/create_safe.cy.js index cf0d83f4b7..04ea76eefc 100644 --- a/cypress/e2e/create_safe.cy.js +++ b/cypress/e2e/create_safe.cy.js @@ -8,7 +8,7 @@ describe('Create Safe', () => { cy.contains('button', 'Accept all').click() // Ensure wallet is connected to correct chain via header - cy.contains('E2E Wallet @ Görli') + cy.contains('E2E Wallet @ Goerli') cy.contains('Create new Safe').click() diff --git a/cypress/e2e/safe-apps/tx_modal.cy.js b/cypress/e2e/safe-apps/tx_modal.cy.js index 973ef7dc5d..bf36767fc2 100644 --- a/cypress/e2e/safe-apps/tx_modal.cy.js +++ b/cypress/e2e/safe-apps/tx_modal.cy.js @@ -1,9 +1,7 @@ -import { TEST_SAFE } from './constants' - const appUrl = 'https://safe-test-app.com' describe('The transaction modal', () => { - before(() => { + beforeEach(() => { cy.fixture('safe-app').then((html) => { cy.intercept('GET', `${appUrl}/*`, html) cy.intercept('GET', `*/manifest.json`, { @@ -12,21 +10,15 @@ describe('The transaction modal', () => { icons: [{ src: 'logo.svg', sizes: 'any', type: 'image/svg+xml' }], }) }) - - cy.visitSafeApp(`${appUrl}/dummy`) - - cy.findByText(/accept selection/i).click() }) describe('When sending a transaction from an app', () => { it('should show the transaction popup', { defaultCommandTimeout: 12000 }, () => { - cy.findByRole('dialog').within(() => { - cy.findByText(/sending from/i) - - const testSafeParts = TEST_SAFE.split(':') + cy.visitSafeApp(`${appUrl}/dummy`) - cy.findByText(`${testSafeParts[0]}:`) - cy.findByText(testSafeParts[1]) + cy.findByText(/accept selection/i).click() + cy.findByRole('dialog').within(() => { + cy.findByText(/Cypress Test App/i) }) }) }) diff --git a/cypress/e2e/smoke/create_tx.cy.js b/cypress/e2e/smoke/create_tx.cy.js index ee09b6b43f..49d2f9a66d 100644 --- a/cypress/e2e/smoke/create_tx.cy.js +++ b/cypress/e2e/smoke/create_tx.cy.js @@ -1,9 +1,7 @@ const SAFE = 'gor:0x04f8b1EA3cBB315b87ced0E32deb5a43cC151a91' const EOA = '0xE297437d6b53890cbf004e401F3acc67c8b39665' -// generate number between 0.00001 and 0.00020 -let recommendedNonce -const sendValue = Math.floor(Math.random() * 20 + 1) / 100000 +const sendValue = 0.00002 const currentNonce = 3 describe('Queue a transaction on 1/N', () => { @@ -28,7 +26,7 @@ describe('Queue a transaction on 1/N', () => { cy.contains('New transaction').click() // Modal is open - cy.contains('h2', 'New transaction').should('be.visible') + cy.contains('h1', 'New transaction').should('be.visible') cy.contains('Send tokens').click() // Fill transaction data @@ -50,59 +48,28 @@ describe('Queue a transaction on 1/N', () => { .next() .then((element) => { const maxBalance = element.text().replace(' GOR', '').trim() - cy.wrap(element) - .parents('form') - .find('label') - .contains('Amount') - .next() - .find('input') - .should('have.value', maxBalance) - .clear() - .type(sendValue) + cy.get('input[name="amount"]').should('have.value', maxBalance) }) + cy.get('input[name="amount"]').clear().type(sendValue) + cy.contains('Next').click() }) it('should create a queued transaction', () => { - // Wait for /estimations response - cy.intercept('POST', '/**/multisig-transactions/estimations').as('EstimationRequest') - - cy.wait('@EstimationRequest') - - // Alias for New transaction modal - cy.contains('h2', 'Review transaction').parents('div').as('modal') - - // Estimation is loaded cy.get('button[type="submit"]').should('not.be.disabled') - // Gets the recommended nonce - cy.contains('Signing the transaction with nonce').should(($div) => { - // get the number in the string - recommendedNonce = $div.text().match(/\d+$/)[0] - }) + cy.contains('Native token transfer').should('be.visible') // Changes nonce to next one - cy.contains('Signing the transaction with nonce').click() - cy.contains('button', 'Edit').click() - cy.get('label').contains('Safe Account transaction nonce').next().clear().type(currentNonce) - cy.contains('Confirm').click() - - // Asserts the execute checkbox exists - cy.get('@modal').within(() => { - cy.get('input[type="checkbox"]') - .parent('span') - .should(($div) => { - // Turn the classList into a string - const classListString = Array.from($div[0].classList).join() - // Check if it contains the error class - expect(classListString).to.include('checked') - }) - }) + cy.get('input[name="nonce"]').clear().type(currentNonce, { force: true }).type('{enter}', { force: true }) + + // Execution + cy.contains('Yes, ').should('exist') cy.contains('Estimated fee').should('exist') // Asserting the sponsored info is present - cy.contains('Sponsored by').should('be.visible') + cy.contains('Execute').should('be.visible') cy.get('span').contains('Estimated fee').next().should('have.css', 'text-decoration-line', 'line-through') cy.contains('Transactions per hour') @@ -110,7 +77,7 @@ describe('Queue a transaction on 1/N', () => { cy.contains('Estimated fee').click() cy.contains('Edit').click() - cy.contains('Owner transaction (Execution)').parents('form').as('Paramsform') + cy.contains('Execution parameters').parents('form').as('Paramsform') // Only gaslimit should be editable when the relayer is selected const arrayNames = ['Wallet nonce', 'Max priority fee (Gwei)', 'Max fee (Gwei)'] @@ -125,37 +92,16 @@ describe('Queue a transaction on 1/N', () => { .invoke('prop', 'value') .should('equal', '300000') cy.get('@Paramsform').find('[name="gasLimit"]').parent('div').find('[data-testid="RotateLeftIcon"]').click() - cy.contains('Confirm').click() - // Asserts the execute checkbox is uncheckable - cy.contains('Execute transaction').click() - cy.get('@modal').within(() => { - cy.get('input[type="checkbox"]') - .parent('span') - .should(($div) => { - // Turn the classList into a string - const classListString = Array.from($div[0].classList).join() - // Check if it contains the error class - expect(classListString).not.to.include('checked') - }) - }) - - // If the checkbox is unchecked the relayer is not present - cy.get('@modal').should('not.contain', 'Sponsored by').and('not.contain', 'Transactions per hour') + cy.get('@Paramsform').submit() - cy.contains('Signing the transaction with nonce').should('exist') - - // Changes back to recommended nonce - cy.contains('Signing the transaction with nonce').click() - cy.contains('Edit').click() - cy.get('button[aria-label="Reset to recommended nonce"]').click() - - // Accepts the values - cy.contains('Confirm').click() + // Asserts the execute checkbox is uncheckable + cy.contains('No, only').click() - cy.get('@modal').within(() => { - cy.get('input[type="checkbox"]').should('not.exist') - }) + cy.get('input[name="nonce"]') + .clear({ force: true }) + .type(currentNonce + 10, { force: true }) + .type('{enter}', { force: true }) cy.contains('Submit').click() }) @@ -174,9 +120,9 @@ describe('Queue a transaction on 1/N', () => { cy.contains('h3', 'Transaction details').should('be.visible') // Queue label - cy.contains(`Queued - transaction with nonce ${currentNonce} needs to be executed first`).should('be.visible') + cy.contains(`needs to be executed first`).should('be.visible') // Transaction summary - cy.contains(`${recommendedNonce}` + 'Send' + '-' + `${sendValue} GOR`).should('exist') + cy.contains('Send' + '-' + `${sendValue} GOR`).should('exist') }) }) diff --git a/cypress/e2e/smoke/nfts.cy.js b/cypress/e2e/smoke/nfts.cy.js index 76b6d7fce9..75686930a7 100644 --- a/cypress/e2e/smoke/nfts.cy.js +++ b/cypress/e2e/smoke/nfts.cy.js @@ -72,18 +72,17 @@ describe('Assets > NFTs', () => { // Modal appears cy.contains('Send NFTs') - cy.contains('Sending 2 NFTs from') - cy.contains('Recipient address or ENS *') + cy.contains('Recipient address or ENS') cy.contains('Selected NFTs') cy.get('input[name="recipient"]').type('0x97d314157727D517A706B5D08507A1f9B44AaaE9') cy.contains('button', 'Next').click() // Review modal appears - cy.contains('Review NFT transaction') - cy.contains('Sending 2 NFTs from') + cy.contains('Send') + cy.contains('To') cy.wait(1000) - cy.contains('Action 1') - cy.contains('Action 2') + cy.contains('1') + cy.contains('2') cy.get('b:contains("safeTransferFrom")').should('have.length', 2) cy.contains('button:not([disabled])', 'Submit') }) diff --git a/package.json b/package.json index 94b7f4cc41..bdb49fb43e 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@emotion/server": "^11.10.0", "@emotion/styled": "^11.10.0", "@mui/icons-material": "^5.8.4", - "@mui/material": "^5.11.10", + "@mui/material": "^5.13.5", "@mui/x-date-pickers": "^5.0.12", "@reduxjs/toolkit": "^1.9.5", "@safe-global/safe-apps-sdk": "7.11.0", diff --git a/public/images/common/caret-down.svg b/public/images/common/caret-down.svg new file mode 100644 index 0000000000..4a9f618a15 --- /dev/null +++ b/public/images/common/caret-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/common/check.svg b/public/images/common/check.svg new file mode 100644 index 0000000000..cfe44936f4 --- /dev/null +++ b/public/images/common/check.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/common/close.svg b/public/images/common/close.svg index 8bff2f1262..0c4cb574b1 100644 --- a/public/images/common/close.svg +++ b/public/images/common/close.svg @@ -1,5 +1,5 @@ + fill="currentColor" /> \ No newline at end of file diff --git a/public/images/common/minus.svg b/public/images/common/minus.svg new file mode 100644 index 0000000000..b8c1be0708 --- /dev/null +++ b/public/images/common/minus.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/common/plus.svg b/public/images/common/plus.svg new file mode 100644 index 0000000000..c8023ca6ad --- /dev/null +++ b/public/images/common/plus.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/images/common/save-address.svg b/public/images/common/save-address.svg new file mode 100644 index 0000000000..d11bfd868d --- /dev/null +++ b/public/images/common/save-address.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/messages/created.svg b/public/images/messages/created.svg index 9dfe24e7da..1aac645c67 100644 --- a/public/images/messages/created.svg +++ b/public/images/messages/created.svg @@ -1,4 +1,4 @@ - + diff --git a/public/images/messages/signed.svg b/public/images/messages/signed.svg index 87f0b434be..3411f0a466 100644 --- a/public/images/messages/signed.svg +++ b/public/images/messages/signed.svg @@ -1,4 +1,4 @@ - + diff --git a/public/images/notifications/info.svg b/public/images/notifications/info.svg index d979abad58..85b63fd090 100644 --- a/public/images/notifications/info.svg +++ b/public/images/notifications/info.svg @@ -1,4 +1,4 @@ - + diff --git a/public/images/sidebar/assets.svg b/public/images/sidebar/assets.svg index 80991d073d..ebcc57514f 100644 --- a/public/images/sidebar/assets.svg +++ b/public/images/sidebar/assets.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/public/images/transactions/new-tx.svg b/public/images/transactions/new-tx.svg new file mode 100644 index 0000000000..51cb5b0be1 --- /dev/null +++ b/public/images/transactions/new-tx.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/public/images/transactions/replace-tx.svg b/public/images/transactions/replace-tx.svg new file mode 100644 index 0000000000..b705fd44d4 --- /dev/null +++ b/public/images/transactions/replace-tx.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/public/images/transactions/tenderly-dark.svg b/public/images/transactions/tenderly-dark.svg new file mode 100644 index 0000000000..b03291881f --- /dev/null +++ b/public/images/transactions/tenderly-dark.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/images/transactions/tenderly-light.svg b/public/images/transactions/tenderly-light.svg new file mode 100644 index 0000000000..59e62bf609 --- /dev/null +++ b/public/images/transactions/tenderly-light.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/components/address-book/AddressBookTable/index.tsx b/src/components/address-book/AddressBookTable/index.tsx index ad38e2f5c5..743f74c806 100644 --- a/src/components/address-book/AddressBookTable/index.tsx +++ b/src/components/address-book/AddressBookTable/index.tsx @@ -1,4 +1,4 @@ -import { useMemo, useState } from 'react' +import { useContext, useMemo, useState } from 'react' import { Box } from '@mui/material' import EnhancedTable from '@/components/common/EnhancedTable' import type { AddressEntry } from '@/components/address-book/EntryDialog' @@ -21,8 +21,8 @@ import PagePlaceholder from '@/components/common/PagePlaceholder' import NoEntriesIcon from '@/public/images/address-book/no-entries.svg' import { useCurrentChain } from '@/hooks/useChains' import tableCss from '@/components/common/EnhancedTable/styles.module.css' -import TokenTransferModal from '@/components/tx/modals/TokenTransferModal' -import { SendAssetsField } from '@/components/tx/modals/TokenTransferModal/SendAssetsForm' +import { TxModalContext } from '@/components/tx-flow' +import TokenTransferFlow from '@/components/tx-flow/flows/TokenTransfer' import CheckWallet from '@/components/common/CheckWallet' const headCells = [ @@ -47,10 +47,11 @@ const defaultOpen = { const AddressBookTable = () => { const chain = useCurrentChain() + const { setTxFlow } = useContext(TxModalContext) + const [open, setOpen] = useState(defaultOpen) const [searchQuery, setSearchQuery] = useState('') const [defaultValues, setDefaultValues] = useState(undefined) - const [selectedAddress, setSelectedAddress] = useState() const handleOpenModal = (type: keyof typeof open) => () => { setOpen((prev) => ({ ...prev, [type]: true })) @@ -117,7 +118,7 @@ const AddressBookTable = () => { variant="contained" color="primary" size="small" - onClick={() => setSelectedAddress(address)} + onClick={() => setTxFlow()} disabled={!isOk} > Send @@ -165,14 +166,6 @@ const AddressBookTable = () => { )} {open[ModalType.REMOVE] && } - - {/* Send funds modal */} - {selectedAddress && ( - setSelectedAddress(undefined)} - initialData={[{ [SendAssetsField.recipient]: selectedAddress }]} - /> - )} ) } diff --git a/src/components/address-book/AddressBookTable/styles.module.css b/src/components/address-book/AddressBookTable/styles.module.css index f1b90b0d0d..fb6af6268a 100644 --- a/src/components/address-book/AddressBookTable/styles.module.css +++ b/src/components/address-book/AddressBookTable/styles.module.css @@ -23,7 +23,7 @@ margin-bottom: 8px; } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .container td:last-of-type button { opacity: 1; } diff --git a/src/components/address-book/EntryDialog/index.tsx b/src/components/address-book/EntryDialog/index.tsx index af9571d0e9..fe63ae7b08 100644 --- a/src/components/address-book/EntryDialog/index.tsx +++ b/src/components/address-book/EntryDialog/index.tsx @@ -1,8 +1,5 @@ -import Box from '@mui/material/Box' -import Button from '@mui/material/Button' -import DialogActions from '@mui/material/DialogActions' -import DialogContent from '@mui/material/DialogContent' -import type { ReactElement } from 'react' +import type { ReactElement, BaseSyntheticEvent } from 'react' +import { Box, Button, DialogActions, DialogContent } from '@mui/material' import { FormProvider, useForm } from 'react-hook-form' import AddressInput from '@/components/common/AddressInput' @@ -41,16 +38,20 @@ const EntryDialog = ({ const { handleSubmit, formState } = methods - const onSubmit = (data: AddressEntry) => { + const submitCallback = handleSubmit((data: AddressEntry) => { dispatch(upsertAddressBookEntry({ ...data, chainId: chainId || currentChainId })) - handleClose() + }) + + const onSubmit = (e: BaseSyntheticEvent) => { + e.stopPropagation() + submitCallback(e) } return ( -
    +
    diff --git a/src/components/balances/AssetsTable/index.tsx b/src/components/balances/AssetsTable/index.tsx index a88a377bb7..b673142d13 100644 --- a/src/components/balances/AssetsTable/index.tsx +++ b/src/components/balances/AssetsTable/index.tsx @@ -1,4 +1,4 @@ -import { useState, type ReactElement, useMemo } from 'react' +import { type ReactElement, useMemo, useContext } from 'react' import { Button, Tooltip, Typography, SvgIcon, IconButton, Box, Checkbox, Skeleton } from '@mui/material' import type { TokenInfo } from '@safe-global/safe-gateway-typescript-sdk' import { TokenType } from '@safe-global/safe-gateway-typescript-sdk' @@ -8,7 +8,6 @@ import TokenAmount from '@/components/common/TokenAmount' import TokenIcon from '@/components/common/TokenIcon' import EnhancedTable, { type EnhancedTableProps } from '@/components/common/EnhancedTable' import TokenExplorerLink from '@/components/common/TokenExplorerLink' -import TokenTransferModal from '@/components/tx/modals/TokenTransferModal' import Track from '@/components/common/Track' import { ASSETS_EVENTS } from '@/services/analytics/events/assets' import InfoIcon from '@/public/images/notifications/info.svg' @@ -19,6 +18,8 @@ import useHiddenTokens from '@/hooks/useHiddenTokens' import { useHideAssets } from './useHideAssets' import CheckWallet from '@/components/common/CheckWallet' import useSpendingLimit from '@/hooks/useSpendingLimit' +import { TxModalContext } from '@/components/tx-flow' +import TokenTransferFlow from '@/components/tx-flow/flows/TokenTransfer' const skeletonCells: EnhancedTableProps['rows'][0]['cells'] = { asset: { @@ -120,9 +121,9 @@ const AssetsTable = ({ showHiddenAssets: boolean setShowHiddenAssets: (hidden: boolean) => void }): ReactElement => { - const [selectedAsset, setSelectedAsset] = useState() const hiddenAssets = useHiddenTokens() const { balances, loading } = useBalances() + const { setTxFlow } = useContext(TxModalContext) const { isAssetSelected, toggleAsset, hidingAsset, hideAsset, cancel, deselectAll, saveChanges } = useHideAssets(() => setShowHiddenAssets(false), @@ -138,6 +139,10 @@ const AssetsTable = ({ const selectedAssetCount = visibleAssets?.filter((item) => isAssetSelected(item.tokenInfo.address)).length || 0 + const onSendClick = (tokenAddress: string) => { + setTxFlow() + } + const rows = loading ? skeletonRows : (visibleAssets || []).map((item) => { @@ -207,7 +212,7 @@ const AssetsTable = ({ content: ( <> - + onSendClick(item.tokenInfo.address)} /> {showHiddenAssets ? ( toggleAsset(item.tokenInfo.address)} /> @@ -244,12 +249,6 @@ const AssetsTable = ({
    - {selectedAsset && ( - setSelectedAsset(undefined)} - initialData={[{ tokenAddress: selectedAsset }]} - /> - )}
    ) diff --git a/src/components/balances/AssetsTable/styles.module.css b/src/components/balances/AssetsTable/styles.module.css index b9b5882cd5..55c14fbbe9 100644 --- a/src/components/balances/AssetsTable/styles.module.css +++ b/src/components/balances/AssetsTable/styles.module.css @@ -14,7 +14,7 @@ gap: var(--space-1); } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .container td:last-of-type, .container th:last-of-type { display: none; diff --git a/src/components/balances/HiddenTokenButton/styles.module.css b/src/components/balances/HiddenTokenButton/styles.module.css index fddd67f640..ce335e2648 100644 --- a/src/components/balances/HiddenTokenButton/styles.module.css +++ b/src/components/balances/HiddenTokenButton/styles.module.css @@ -1,4 +1,4 @@ -@media (max-width: 600px) { +@media (max-width: 599.95px) { .hiddenTokenButton { display: none; } diff --git a/src/components/common/AddressBookInput/index.tsx b/src/components/common/AddressBookInput/index.tsx index dff6a1261e..eaed6a892d 100644 --- a/src/components/common/AddressBookInput/index.tsx +++ b/src/components/common/AddressBookInput/index.tsx @@ -1,10 +1,14 @@ -import type { ReactElement } from 'react' +import { type ReactElement, useState, useMemo } from 'react' import { useFormContext, useWatch } from 'react-hook-form' -import { Typography } from '@mui/material' +import { SvgIcon, Typography } from '@mui/material' import Autocomplete, { createFilterOptions } from '@mui/material/Autocomplete' import useAddressBook from '@/hooks/useAddressBook' import AddressInput, { type AddressInputProps } from '../AddressInput' import EthHashInfo from '../EthHashInfo' +import InfoIcon from '@/public/images/notifications/info.svg' +import EntryDialog from '@/components/address-book/EntryDialog' +import css from './styles.module.css' +import inputCss from '@/styles/inputs.module.css' const abFilterOptions = createFilterOptions({ stringify: (option: { label: string; name: string }) => option.name + ' ' + option.label, @@ -13,37 +17,89 @@ const abFilterOptions = createFilterOptions({ /** * Temporary component until revamped safe components are done */ -const AddressBookInput = ({ name, ...props }: AddressInputProps): ReactElement => { +const AddressBookInput = ({ name, canAdd, ...props }: AddressInputProps & { canAdd?: boolean }): ReactElement => { const addressBook = useAddressBook() const { setValue, control } = useFormContext() const addressValue = useWatch({ name, control }) + const [open, setOpen] = useState(false) + const [openAddressBook, setOpenAddressBook] = useState(false) const addressBookEntries = Object.entries(addressBook).map(([address, name]) => ({ label: address, name, })) + const hasVisibleOptions = useMemo( + () => !!addressBookEntries.filter((entry) => entry.label.includes(addressValue)).length, + [addressBookEntries, addressValue], + ) + + const handleOpenAutocomplete = () => { + setOpen((value) => !value) + } + + const onAddressBookClick = canAdd + ? () => { + setOpenAddressBook(true) + } + : undefined + return ( - setValue(name, value, { shouldValidate: true })} - filterOptions={abFilterOptions} - componentsProps={{ - paper: { - elevation: 2, - }, - }} - renderOption={(props, option) => ( - - + <> + setOpen(true)} + onClose={() => setOpen(false)} + className={inputCss.input} + disableClearable + value={addressValue || ''} + disabled={props.disabled} + readOnly={props.InputProps?.readOnly} + freeSolo + options={addressBookEntries} + onInputChange={(_, value) => setValue(name, value, { shouldValidate: true })} + filterOptions={abFilterOptions} + componentsProps={{ + paper: { + elevation: 2, + }, + }} + renderOption={(props, option) => ( + + + + )} + renderInput={(params) => ( + + )} + /> + {canAdd ? ( + + + + This is an unknown address. You can{' '} +
    + add it to your address book + + . + + ) : null} + + {openAddressBook && ( + setOpenAddressBook(false)} + defaultValues={{ name: '', address: addressValue }} + /> )} - renderInput={(params) => } - /> + ) } diff --git a/src/components/common/AddressBookInput/styles.module.css b/src/components/common/AddressBookInput/styles.module.css index e69de29bb2..c1366746d2 100644 --- a/src/components/common/AddressBookInput/styles.module.css +++ b/src/components/common/AddressBookInput/styles.module.css @@ -0,0 +1,20 @@ +.unknownAddress { + margin-top: calc(-1 * var(--space-2)); + padding: 20px 12px 4px; + background-color: var(--color-background-main); + color: var(--color-text-secondary); + display: flex; + gap: var(--space-1); + width: 100%; + border-radius: 6px; +} + +.unknownAddress svg { + height: auto; +} + +.unknownAddress a { + color: inherit; + text-decoration: underline; + cursor: pointer; +} diff --git a/src/components/common/AddressInput/index.test.tsx b/src/components/common/AddressInput/index.test.tsx index 1480cbc037..4a87f46d5d 100644 --- a/src/components/common/AddressInput/index.test.tsx +++ b/src/components/common/AddressInput/index.test.tsx @@ -194,7 +194,7 @@ describe('AddressInput tests', () => { expect(input.previousElementSibling?.textContent).toBe('gor:') }) - it('should not show adornment when the value contains correct prefix', async () => { + it('should not show the adornment prefix when the value contains correct prefix', async () => { ;(useCurrentChain as jest.Mock).mockImplementation(() => ({ shortName: 'gor', chainId: '5', @@ -208,7 +208,7 @@ describe('AddressInput tests', () => { fireEvent.change(input, { target: { value: `gor:${TEST_ADDRESS_B}` } }) }) - await waitFor(() => expect(input.previousElementSibling).toBe(null)) + await waitFor(() => expect(input.previousElementSibling?.textContent).toBe('')) }) it('should keep a bare address in the form state', async () => { diff --git a/src/components/common/AddressInput/index.tsx b/src/components/common/AddressInput/index.tsx index 8d281be501..82ba6d2d2b 100644 --- a/src/components/common/AddressInput/index.tsx +++ b/src/components/common/AddressInput/index.tsx @@ -1,6 +1,14 @@ import type { ReactElement } from 'react' import { useEffect, useCallback, useRef, useMemo, useState } from 'react' -import { InputAdornment, TextField, type TextFieldProps, CircularProgress, Grid } from '@mui/material' +import { + InputAdornment, + TextField, + type TextFieldProps, + CircularProgress, + IconButton, + SvgIcon, + Skeleton, +} from '@mui/material' import { useFormContext, useWatch, type Validate, get } from 'react-hook-form' import { validatePrefixedAddress } from '@/utils/validation' import { useCurrentChain } from '@/hooks/useChains' @@ -9,10 +17,32 @@ import ScanQRButton from '../ScanQRModal/ScanQRButton' import { FEATURES, hasFeature } from '@/utils/chains' import { cleanInputValue, parsePrefixedAddress } from '@/utils/addresses' import useDebounce from '@/hooks/useDebounce' +import CaretDownIcon from '@/public/images/common/caret-down.svg' +import SaveAddressIcon from '@/public/images/common/save-address.svg' +import classnames from 'classnames' +import css from './styles.module.css' +import inputCss from '@/styles/inputs.module.css' + +export type AddressInputProps = TextFieldProps & { + name: string + address?: string + onOpenListClick?: () => void + isAutocompleteOpen?: boolean + validate?: Validate + deps?: string | string[] + onAddressBookClick?: () => void +} -export type AddressInputProps = TextFieldProps & { name: string; validate?: Validate; deps?: string | string[] } - -const AddressInput = ({ name, validate, required = true, deps, ...props }: AddressInputProps): ReactElement => { +const AddressInput = ({ + name, + validate, + required = true, + onOpenListClick, + isAutocompleteOpen, + onAddressBookClick, + deps, + ...props +}: AddressInputProps): ReactElement => { const { register, setValue, @@ -28,7 +58,6 @@ const AddressInput = ({ name, validate, required = true, deps, ...props }: Addre // Fetch an ENS resolution for the current address const isDomainLookupEnabled = !!currentChain && hasFeature(currentChain, FEATURES.DOMAIN_LOOKUP) - const label = `${props.label} address${isDomainLookupEnabled ? ' or ENS' : ''}` const { address, resolverError, resolving } = useNameResolver(isDomainLookupEnabled ? watchedValue : '') // errors[name] doesn't work with nested field names like 'safe.address', need to use the lodash get @@ -55,73 +84,93 @@ const AddressInput = ({ name, validate, required = true, deps, ...props }: Addre } }, [address, currentShortName, setAddressValue]) - return ( - - - {error?.message || label}} - error={!!error} - fullWidth - spellCheck={false} - InputProps={{ - ...(props.InputProps || {}), - - // Display the current short name in the adornment, unless the value contains the same prefix - startAdornment: !error && !rawValueRef.current.startsWith(`${currentShortName}:`) && ( - {currentShortName}: - ), - - endAdornment: (resolving || isValidating) && ( - - - - ), - }} - InputLabelProps={{ - ...(props.InputLabelProps || {}), - shrink: !!watchedValue || props.focused, - }} - required={required} - {...register(name, { - deps, - - required, - - setValueAs: (value: string): string => { - // Clean the input value - const cleanValue = cleanInputValue(value) - rawValueRef.current = cleanValue - // This also checksums the address - return parsePrefixedAddress(cleanValue).address - }, - - validate: async () => { - const value = rawValueRef.current - if (value) { - setIsValidating(true) - const result = validatePrefixed(value) || (await validate?.(parsePrefixedAddress(value).address)) - setIsValidating(false) - return result - } - }, - - // Workaround for a bug in react-hook-form that it restores a cached error state on blur - onBlur: () => setTimeout(() => trigger(name), 100), - })} - // Workaround for a bug in react-hook-form when `register().value` is cached after `setValueAs` - // Only seems to occur on the `/load` route - value={watchedValue} - /> - - - {!props.disabled && ( - + const endAdornment = ( + + {resolving || isValidating ? ( + + ) : !props.disabled ? ( + <> + {onAddressBookClick && ( + + + + )} + - - )} - + + {onOpenListClick && ( + + + + )} + + ) : null} + + ) + + return ( + <> + {error?.message || props.label}} + error={!!error} + fullWidth + spellCheck={false} + InputProps={{ + ...(props.InputProps || {}), + + // Display the current short name in the adornment, unless the value contains the same prefix + startAdornment: ( + + + {!rawValueRef.current.startsWith(`${currentShortName}:`) && <>{currentShortName}:} + + ), + + endAdornment, + }} + InputLabelProps={{ + ...(props.InputLabelProps || {}), + shrink: true, + }} + {...register(name, { + deps, + + required, + + setValueAs: (value: string): string => { + // Clean the input value + const cleanValue = cleanInputValue(value) + rawValueRef.current = cleanValue + // This also checksums the address + return parsePrefixedAddress(cleanValue).address + }, + + validate: async () => { + const value = rawValueRef.current + if (value) { + setIsValidating(true) + const result = validatePrefixed(value) || (await validate?.(parsePrefixedAddress(value).address)) + setIsValidating(false) + return result + } + }, + + // Workaround for a bug in react-hook-form that it restores a cached error state on blur + onBlur: () => setTimeout(() => trigger(name), 100), + })} + // Workaround for a bug in react-hook-form when `register().value` is cached after `setValueAs` + // Only seems to occur on the `/load` route + value={watchedValue} + /> + ) } diff --git a/src/components/common/AddressInput/styles.module.css b/src/components/common/AddressInput/styles.module.css new file mode 100644 index 0000000000..f5264e5ba8 --- /dev/null +++ b/src/components/common/AddressInput/styles.module.css @@ -0,0 +1,15 @@ +.wrapper :global .MuiInputLabel-root.Mui-error[data-shrink='false'] { + padding: 5px 4px; +} + +.wrapper :global .MuiInputAdornment-root { + margin-left: 0; +} + +.openButton svg { + transition: transform 0.3s ease-in-out; +} + +.rotated svg { + transform: rotate(180deg); +} diff --git a/src/components/common/AddressInputReadOnly/index.tsx b/src/components/common/AddressInputReadOnly/index.tsx new file mode 100644 index 0000000000..ac9325c6c2 --- /dev/null +++ b/src/components/common/AddressInputReadOnly/index.tsx @@ -0,0 +1,44 @@ +import { useState, type ReactElement } from 'react' +import { IconButton, InputAdornment, InputLabel, OutlinedInput, SvgIcon, Typography } from '@mui/material' +import EthHashInfo from '@/components/common/EthHashInfo' +import SaveAddressIcon from '@/public/images/common/save-address.svg' +import css from './styles.module.css' +import EntryDialog from '@/components/address-book/EntryDialog' +import useAddressBook from '@/hooks/useAddressBook' + +const AddressInputReadOnly = ({ label, address }: { label: string; address: string }): ReactElement => { + const addressBook = useAddressBook() + const [open, setOpen] = useState(false) + + return ( + <> +
    + {label} + + + + + + } + endAdornment={ + !addressBook[address] ? ( + + setOpen(true)}> + + + + ) : null + } + label={label} + readOnly + /> +
    + {open && setOpen(false)} defaultValues={{ name: '', address }} />} + + ) +} + +export default AddressInputReadOnly diff --git a/src/components/common/AddressInputReadOnly/styles.module.css b/src/components/common/AddressInputReadOnly/styles.module.css new file mode 100644 index 0000000000..9a02cc7eb6 --- /dev/null +++ b/src/components/common/AddressInputReadOnly/styles.module.css @@ -0,0 +1,40 @@ +.wrapper :global .MuiInputBase-root:hover .MuiOutlinedInput-notchedOutline, +.wrapper :global .MuiInputBase-root .MuiOutlinedInput-notchedOutline { + border-color: var(--color-text-secondary); + border-width: 1px; +} + +.wrapper :global .MuiInputLabel-root { + color: var(--color-text-secondary); +} + +.wrapper :global .MuiInputBase-root { + height: 66px; +} + +.wrapper :global input[text] { + padding: 0; +} + +.input { + width: 100%; + padding: 12px var(--space-2); +} + +.input :global .MuiInputBase-input { + padding: var(--space-1) var(--space-2); +} + +.input input[type='text'] { + padding-left: 0; + padding-right: 0; +} + +.input [title] { + font-weight: bold; + color: var(--color-text-primary); +} + +.input fieldset { + border-color: var(--color-border-light) !important; +} diff --git a/src/components/common/ConnectWallet/styles.module.css b/src/components/common/ConnectWallet/styles.module.css index 592eb7841f..d988b29eec 100644 --- a/src/components/common/ConnectWallet/styles.module.css +++ b/src/components/common/ConnectWallet/styles.module.css @@ -54,7 +54,7 @@ gap: var(--space-2); } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .buttonContainer button { font-size: 12px; } diff --git a/src/components/common/CookieBanner/styles.module.css b/src/components/common/CookieBanner/styles.module.css index 0dafa4fc80..fb2777108e 100644 --- a/src/components/common/CookieBanner/styles.module.css +++ b/src/components/common/CookieBanner/styles.module.css @@ -16,7 +16,7 @@ user-select: none; } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .container { right: 0; bottom: 0; diff --git a/src/components/common/DatePickerInput/index.tsx b/src/components/common/DatePickerInput/index.tsx index 08c9617d36..ed760e712e 100644 --- a/src/components/common/DatePickerInput/index.tsx +++ b/src/components/common/DatePickerInput/index.tsx @@ -5,6 +5,8 @@ import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns' import TextField from '@mui/material/TextField' import { isFuture, isValid, startOfDay } from 'date-fns' +import inputCss from '@/styles/inputs.module.css' + const DatePickerInput = ({ name, label, @@ -46,6 +48,7 @@ const DatePickerInput = ({ render={({ field, fieldState }) => ( ) diff --git a/src/components/common/PageHeader/styles.module.css b/src/components/common/PageHeader/styles.module.css index 73bc9914c6..e4f79953a2 100644 --- a/src/components/common/PageHeader/styles.module.css +++ b/src/components/common/PageHeader/styles.module.css @@ -30,7 +30,7 @@ gap: var(--space-1); } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .container { padding: var(--space-3) var(--space-2) 0; } diff --git a/src/components/common/PageLayout/index.tsx b/src/components/common/PageLayout/index.tsx index a762dc6abb..a7e25b6531 100644 --- a/src/components/common/PageLayout/index.tsx +++ b/src/components/common/PageLayout/index.tsx @@ -1,7 +1,7 @@ -import { useEffect, useState, type ReactElement } from 'react' +import { useContext, useEffect, useState, type ReactElement } from 'react' import classnames from 'classnames' -import Header from '@/components/common//Header' +import Header from '@/components/common/Header' import css from './styles.module.css' import SafeLoadingError from '../SafeLoadingError' import Footer from '../Footer' @@ -9,6 +9,7 @@ import SideDrawer from './SideDrawer' import { AppRoutes } from '@/config/routes' import useDebounce from '@/hooks/useDebounce' import { useRouter } from 'next/router' +import { TxModalContext } from '@/components/tx-flow' const isNoSidebarRoute = (pathname: string): boolean => { return [ @@ -29,6 +30,8 @@ const PageLayout = ({ pathname, children }: { pathname: string; children: ReactE const router = useRouter() const [noSidebar, setNoSidebar] = useState(isNoSidebarRoute(pathname)) const [isSidebarOpen, setSidebarOpen] = useState(true) + const hideSidebar = noSidebar || !isSidebarOpen + const { setFullWidth } = useContext(TxModalContext) let isAnimated = useDebounce(!noSidebar, 300) if (noSidebar) isAnimated = false @@ -37,6 +40,10 @@ const PageLayout = ({ pathname, children }: { pathname: string; children: ReactE setNoSidebar(isNoSidebarRoute(pathname) || noSafeAddress) }, [pathname, router]) + useEffect(() => { + setFullWidth(hideSidebar) + }, [hideSidebar, setFullWidth]) + return ( <>
    @@ -47,7 +54,7 @@ const PageLayout = ({ pathname, children }: { pathname: string; children: ReactE
    diff --git a/src/components/common/PageLayout/styles.module.css b/src/components/common/PageLayout/styles.module.css index 2f8f578ea0..c4dff8197e 100644 --- a/src/components/common/PageLayout/styles.module.css +++ b/src/components/common/PageLayout/styles.module.css @@ -37,7 +37,7 @@ .sidebarTogglePosition { position: fixed; - z-index: 2; + z-index: 4; left: 0; top: 0; /* mimics MUI drawer animation */ @@ -72,7 +72,7 @@ background-color: var(--color-background-light); } -@media (max-width: 900px) { +@media (max-width: 899.95px) { .main { padding-left: 0; } @@ -82,7 +82,7 @@ } } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .main main { padding: var(--space-2); } diff --git a/src/components/common/ProgressBar/index.tsx b/src/components/common/ProgressBar/index.tsx new file mode 100644 index 0000000000..4faa499c0e --- /dev/null +++ b/src/components/common/ProgressBar/index.tsx @@ -0,0 +1,8 @@ +import { LinearProgress } from '@mui/material' +import type { LinearProgressProps } from '@mui/material' + +import css from './styles.module.css' + +export const ProgressBar = (props: LinearProgressProps) => { + return +} diff --git a/src/components/common/ProgressBar/styles.module.css b/src/components/common/ProgressBar/styles.module.css new file mode 100644 index 0000000000..bdc2c6a2eb --- /dev/null +++ b/src/components/common/ProgressBar/styles.module.css @@ -0,0 +1,16 @@ +.progressBar { + height: 6px; + border-radius: 6px; + background-color: var(--color-border-light); +} + +.progressBar :global .MuiLinearProgress-bar { + background: var(--color-primary-main); + border-radius: 6px; +} + +@media (max-width: 599.95px) { + .progressBar { + border-radius: 0; + } +} diff --git a/src/components/common/QRCode/index.tsx b/src/components/common/QRCode/index.tsx index db4058252a..533ecdcf02 100644 --- a/src/components/common/QRCode/index.tsx +++ b/src/components/common/QRCode/index.tsx @@ -1,6 +1,6 @@ import QRCodeReact from 'qrcode.react' import { Skeleton } from '@mui/material' -import { useTheme } from '@mui/system' +import { useTheme } from '@mui/material/styles' import type { ReactElement } from 'react' const QR_LOGO_SIZE = 20 diff --git a/src/components/common/SpendingLimitLabel/index.tsx b/src/components/common/SpendingLimitLabel/index.tsx index a96c48a29e..eecaba68b7 100644 --- a/src/components/common/SpendingLimitLabel/index.tsx +++ b/src/components/common/SpendingLimitLabel/index.tsx @@ -10,8 +10,8 @@ const SpendingLimitLabel = ({ }: { label: string | ReactElement; isOneTime?: boolean } & BoxProps) => { return ( - {!isOneTime && } - {typeof label === 'string' ? {label} : label} + {!isOneTime && } + {typeof label === 'string' ? {label} : label} ) } diff --git a/src/components/common/Sticky/index.tsx b/src/components/common/Sticky/index.tsx index 108de0956c..7bc390b4ca 100644 --- a/src/components/common/Sticky/index.tsx +++ b/src/components/common/Sticky/index.tsx @@ -3,7 +3,7 @@ import type { ReactElement } from 'react' const stickyTop = { xs: '103px', md: '111px' } export const Sticky = ({ children }: { children: ReactElement }): ReactElement => ( - + {children} ) diff --git a/src/components/common/TokenAmountInput/index.tsx b/src/components/common/TokenAmountInput/index.tsx new file mode 100644 index 0000000000..f1c81e9fdb --- /dev/null +++ b/src/components/common/TokenAmountInput/index.tsx @@ -0,0 +1,100 @@ +import { Button, Divider, FormControl, InputLabel, MenuItem, TextField } from '@mui/material' +import { type SafeBalanceResponse } from '@safe-global/safe-gateway-typescript-sdk' +import css from './styles.module.css' +import NumberField from '@/components/common/NumberField' +import { validateDecimalLength, validateLimitedAmount } from '@/utils/validation' +import { AutocompleteItem } from '@/components/tx-flow/flows/TokenTransfer/CreateTokenTransfer' +import { useFormContext } from 'react-hook-form' +import { type BigNumber } from '@ethersproject/bignumber' +import classNames from 'classnames' +import { useCallback } from 'react' + +export enum TokenAmountFields { + tokenAddress = 'tokenAddress', + amount = 'amount', +} + +const TokenAmountInput = ({ + balances, + selectedToken, + onMaxAmountClick, + maxAmount, + validate, +}: { + balances: SafeBalanceResponse['items'] + selectedToken: SafeBalanceResponse['items'][number] | undefined + onMaxAmountClick?: () => void + maxAmount?: BigNumber + validate?: (value: string) => string | undefined +}) => { + const { + formState: { errors }, + register, + resetField, + watch, + } = useFormContext<{ [TokenAmountFields.tokenAddress]: string; [TokenAmountFields.amount]: string }>() + + const tokenAddress = watch(TokenAmountFields.tokenAddress) + const isAmountError = !!errors[TokenAmountFields.tokenAddress] || !!errors[TokenAmountFields.amount] + + const validateAmount = useCallback( + (value: string) => { + const decimals = selectedToken?.tokenInfo.decimals + return validateLimitedAmount(value, decimals, maxAmount?.toString()) || validateDecimalLength(value, decimals) + }, + [maxAmount, selectedToken?.tokenInfo.decimals], + ) + + return ( + + + {errors[TokenAmountFields.tokenAddress]?.message || errors[TokenAmountFields.amount]?.message || 'Amount'} + +
    + + Max + + ), + }} + className={css.amount} + required + placeholder="0" + {...register(TokenAmountFields.amount, { + required: true, + validate: validate ?? validateAmount, + })} + /> + + { + resetField(TokenAmountFields.amount, { defaultValue: '' }) + }, + })} + value={tokenAddress} + required + > + {balances.map((item) => ( + + + + ))} + +
    +
    + ) +} + +export default TokenAmountInput diff --git a/src/components/common/TokenAmountInput/styles.module.css b/src/components/common/TokenAmountInput/styles.module.css new file mode 100644 index 0000000000..35f9d65aa3 --- /dev/null +++ b/src/components/common/TokenAmountInput/styles.module.css @@ -0,0 +1,59 @@ +.outline { + border: 1px solid var(--color-border-light); + border-radius: 6px; +} + +.error { + border-color: var(--color-error-main); +} + +.error :global(.MuiFormLabel-root) { + color: var(--color-error-main); +} + +.label { + background-color: var(--color-background-paper); + padding-left: 6px; + padding-right: 6px; + margin-left: -6px; +} + +.inputs { + display: inline-flex; + align-items: center; +} + +.amount { + min-width: 130px; + flex-grow: 1; +} + +.amount :global(.MuiInput-input) { + padding-left: var(--space-2); +} + +.max { + text-transform: uppercase; + background-color: var(--color-background-main); + color: var(--color-text-primary); + font-size: 12px; + margin-right: var(--space-1); + min-height: 50px; + padding: var(--space-2); +} + +.select { + flex-shrink: 0; +} + +.select :global(.MuiSelect-select) { + margin: var(--space-1); + display: flex; + background-color: var(--color-background-main); + border-radius: 6px; + padding: var(--space-1) var(--space-5) var(--space-1) var(--space-2) !important; +} + +.select :global(.MuiSelect-icon) { + margin-right: var(--space-2); +} diff --git a/src/components/common/TxModalDialog/index.tsx b/src/components/common/TxModalDialog/index.tsx new file mode 100644 index 0000000000..904c15175c --- /dev/null +++ b/src/components/common/TxModalDialog/index.tsx @@ -0,0 +1,51 @@ +import { type ReactElement } from 'react' +import { IconButton, Dialog, DialogTitle, type DialogProps } from '@mui/material' +import classnames from 'classnames' +import CloseIcon from '@mui/icons-material/Close' +import css from './styles.module.css' + +interface ModalDialogProps extends DialogProps { + dialogTitle?: React.ReactNode + hideChainIndicator?: boolean +} + +const TxModalDialog = ({ + dialogTitle, + hideChainIndicator, + children, + onClose, + fullScreen = false, + fullWidth = false, + ...restProps +}: ModalDialogProps): ReactElement => { + return ( + e.stopPropagation()} + hideBackdrop + PaperProps={{ + className: css.paper, + }} + > + +
    + onClose?.(e, 'backdropClick')} + size="small" + > + + +
    +
    + + {children} +
    + ) +} + +export default TxModalDialog diff --git a/src/components/common/TxModalDialog/styles.module.css b/src/components/common/TxModalDialog/styles.module.css new file mode 100644 index 0000000000..30ad5e0157 --- /dev/null +++ b/src/components/common/TxModalDialog/styles.module.css @@ -0,0 +1,82 @@ +.dialog { + top: 52px; + left: 230px; + z-index: 3; + transition: left 225ms cubic-bezier(0, 0, 0.2, 1) 0ms; +} + +.dialog.fullWidth { + left: 0; +} + +.dialog :global .MuiDialogActions-root { + border-top: 2px solid var(--color-border-light); + padding: var(--space-3); +} + +.dialog :global .MuiDialogActions-root > :last-of-type:not(:first-of-type) { + order: 2; +} + +.dialog :global .MuiDialogActions-root:after { + content: ''; + order: 1; + flex: 1; +} + +.title { + display: flex; + align-items: center; + padding: 0; +} + +.buttons { + margin-left: auto; + padding: var(--space-1); +} + +.close { + color: var(--color-border-main); + padding: var(--space-1); +} + +.paper { + padding-bottom: var(--space-8); + background-color: var(--color-border-background); +} + +@media (min-width: 600px) { + .dialog :global .MuiDialog-paper { + min-width: 600px; + margin: 0; + } +} + +@media (min-width: 900px) { + .title { + position: sticky; + top: 0; + z-index: 1; + } +} + +@media (max-width: 899.95px) { + .dialog { + left: 0; + top: 0; + z-index: 1300; + } + + .dialog :global .MuiDialogActions-root { + padding: 0; + } + + .title { + margin-bottom: var(--space-3); + background-color: var(--color-background-paper); + } + + .close svg { + font-size: 1.5rem; + } +} diff --git a/src/components/common/WalletInfo/styles.module.css b/src/components/common/WalletInfo/styles.module.css index 4b22ce8f66..6bc2e53d07 100644 --- a/src/components/common/WalletInfo/styles.module.css +++ b/src/components/common/WalletInfo/styles.module.css @@ -15,7 +15,7 @@ filter: invert(100%); } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .buttonContainer button { font-size: 12px; } diff --git a/src/components/dashboard/PendingTxs/styles.module.css b/src/components/dashboard/PendingTxs/styles.module.css index 42326042e4..f5dc2103d5 100644 --- a/src/components/dashboard/PendingTxs/styles.module.css +++ b/src/components/dashboard/PendingTxs/styles.module.css @@ -37,7 +37,7 @@ word-break: break-word; } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .confirmationsCount { padding: 4px var(--space-1); } diff --git a/src/components/new-safe/CardStepper/styles.module.css b/src/components/new-safe/CardStepper/styles.module.css index c7cdb6ec38..53cef51b2a 100644 --- a/src/components/new-safe/CardStepper/styles.module.css +++ b/src/components/new-safe/CardStepper/styles.module.css @@ -33,7 +33,7 @@ display: none; } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .header { padding: var(--space-2); flex-direction: column; diff --git a/src/components/new-safe/OwnerRow/index.tsx b/src/components/new-safe/OwnerRow/index.tsx index a97dadb770..d85b4ec8f2 100644 --- a/src/components/new-safe/OwnerRow/index.tsx +++ b/src/components/new-safe/OwnerRow/index.tsx @@ -78,7 +78,6 @@ export const OwnerRow = ({ {!readOnly && ( - + {removable && ( <> remove?.(index)} aria-label="Remove owner"> diff --git a/src/components/new-safe/OwnerRow/styles.module.css b/src/components/new-safe/OwnerRow/styles.module.css index 3369f41056..32d2f42aa0 100644 --- a/src/components/new-safe/OwnerRow/styles.module.css +++ b/src/components/new-safe/OwnerRow/styles.module.css @@ -1,15 +1,3 @@ -.name :global .MuiFormHelperText-root { - position: absolute; - bottom: -20px; -} - -@media (max-width: 900px) { - .name :global .MuiFormHelperText-root { - position: relative; - bottom: 0; - } -} - @media (min-width: 900px) { .helper { margin-bottom: var(--space-5); diff --git a/src/components/new-safe/create/steps/OwnerPolicyStep/index.tsx b/src/components/new-safe/create/steps/OwnerPolicyStep/index.tsx index e15941f2d9..81ee517a65 100644 --- a/src/components/new-safe/create/steps/OwnerPolicyStep/index.tsx +++ b/src/components/new-safe/create/steps/OwnerPolicyStep/index.tsx @@ -1,4 +1,4 @@ -import { Button, SvgIcon, MenuItem, Select, Tooltip, Typography, Divider, Box } from '@mui/material' +import { Button, SvgIcon, MenuItem, Tooltip, Typography, Divider, Box, Grid, TextField } from '@mui/material' import { Controller, FormProvider, useFieldArray, useForm } from 'react-hook-form' import type { ReactElement } from 'react' @@ -11,7 +11,6 @@ import type { CreateSafeInfoItem } from '@/components/new-safe/create/CreateSafe import { useSafeSetupHints } from '@/components/new-safe/create/steps/OwnerPolicyStep/useSafeSetupHints' import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCreationStep' import ArrowBackIcon from '@mui/icons-material/ArrowBack' -import css from '@/components/new-safe/create/steps/OwnerPolicyStep/styles.module.css' import layoutCss from '@/components/new-safe/create/styles.module.css' import NetworkWarning from '@/components/new-safe/create/NetworkWarning' import useIsWrongChain from '@/hooks/useIsWrongChain' @@ -145,22 +144,26 @@ const OwnerPolicyStep = ({ Any transaction requires the confirmation of: - - ( - - )} - />{' '} - out of {ownerFields.length} owner(s). - + + + ( + + {ownerFields.map((_, idx) => ( + + {idx + 1} + + ))} + + )} + /> + + + out of {ownerFields.length} owner(s) + + {isWrongChain && }
    diff --git a/src/components/new-safe/create/steps/OwnerPolicyStep/styles.module.css b/src/components/new-safe/create/steps/OwnerPolicyStep/styles.module.css deleted file mode 100644 index c4083eb1ab..0000000000 --- a/src/components/new-safe/create/steps/OwnerPolicyStep/styles.module.css +++ /dev/null @@ -1,12 +0,0 @@ -.select { - margin-right: var(--space-1); -} - -.select :global .MuiOutlinedInput-notchedOutline { - border-color: var(--color-border-light); - border-width: 2px; -} - -.select :global .MuiSelect-select { - padding: 12px 14px; -} diff --git a/src/components/new-safe/create/steps/SetNameStep/styles.module.css b/src/components/new-safe/create/steps/SetNameStep/styles.module.css index e273a1c87e..6a8ce8b855 100644 --- a/src/components/new-safe/create/steps/SetNameStep/styles.module.css +++ b/src/components/new-safe/create/steps/SetNameStep/styles.module.css @@ -7,7 +7,7 @@ align-items: center; border-radius: 8px; border: 1px solid var(--color-border-light); - height: 56px; + height: 66px; } .select:hover, diff --git a/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/index.tsx b/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/index.tsx index 601c055c62..ad15b27a62 100644 --- a/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/index.tsx +++ b/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/index.tsx @@ -1,7 +1,6 @@ import { Box } from '@mui/material' import css from '@/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css' import classnames from 'classnames' -import { SafeCreationStatus } from '@/components/new-safe/create/steps/StatusStep/useSafeCreation' import { useCallback, useEffect, useRef } from 'react' const rectTlEndTransform = 'translateX(0) translateY(20px) scaleY(1.1)' @@ -30,9 +29,16 @@ const moveToEnd = (transformEnd: string, element: HTMLDivElement | null) => { } } -const LoadingSpinner = ({ status }: { status: SafeCreationStatus }) => { - const isError = status >= SafeCreationStatus.WALLET_REJECTED && status <= SafeCreationStatus.TIMEOUT - const isSuccess = status >= SafeCreationStatus.SUCCESS +export enum SpinnerStatus { + ERROR = 'isError', + SUCCESS = 'isSuccess', + PROCESSING = 'isProcessing', +} + +const LoadingSpinner = ({ status }: { status: SpinnerStatus }) => { + // TODO: only monitoring the PendingTxs we can't determine the transaction's result + const isError = status === SpinnerStatus.ERROR + const isSuccess = status === SpinnerStatus.SUCCESS const rectTl = useRef(null) const rectTr = useRef(null) diff --git a/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css b/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css index 4dcb5c0b32..2ca4ef0c06 100644 --- a/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css +++ b/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css @@ -11,7 +11,8 @@ animation-play-state: paused; } -.rectSuccess .rectCenter { +.rectSuccess .rectCenter, +.rectError .rectCenter { visibility: visible; transform: translateY(30px) translateX(30px) scale(1); } diff --git a/src/components/new-safe/create/steps/StatusStep/StatusMessage.tsx b/src/components/new-safe/create/steps/StatusStep/StatusMessage.tsx index b385c299ef..76afa78314 100644 --- a/src/components/new-safe/create/steps/StatusStep/StatusMessage.tsx +++ b/src/components/new-safe/create/steps/StatusStep/StatusMessage.tsx @@ -1,6 +1,6 @@ import { Box, Typography } from '@mui/material' import { SafeCreationStatus } from '@/components/new-safe/create/steps/StatusStep/useSafeCreation' -import LoadingSpinner from '@/components/new-safe/create/steps/StatusStep/LoadingSpinner' +import LoadingSpinner, { SpinnerStatus } from '@/components/new-safe/create/steps/StatusStep/LoadingSpinner' const getStep = (status: SafeCreationStatus) => { const ERROR_TEXT = 'Please cancel the process or retry the transaction.' @@ -59,11 +59,13 @@ const StatusMessage = ({ status, isError }: { status: SafeCreationStatus; isErro const stepInfo = getStep(status) const color = isError ? 'error' : 'info' + const isSuccess = status >= SafeCreationStatus.SUCCESS + const spinnerStatus = isError ? SpinnerStatus.ERROR : isSuccess ? SpinnerStatus.SUCCESS : SpinnerStatus.PROCESSING return ( <> - + {stepInfo.description} diff --git a/src/components/new-safe/create/styles.module.css b/src/components/new-safe/create/styles.module.css index 2cae562226..38feb0b251 100644 --- a/src/components/new-safe/create/styles.module.css +++ b/src/components/new-safe/create/styles.module.css @@ -3,7 +3,7 @@ padding: var(--space-4) var(--space-7); } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .row { padding: var(--space-2); } diff --git a/src/components/nfts/NftCollections/index.tsx b/src/components/nfts/NftCollections/index.tsx index 50118b301f..e9414f4854 100644 --- a/src/components/nfts/NftCollections/index.tsx +++ b/src/components/nfts/NftCollections/index.tsx @@ -1,9 +1,8 @@ -import { type SyntheticEvent, type ReactElement, useCallback, useEffect, useState } from 'react' +import { type SyntheticEvent, type ReactElement, useCallback, useEffect, useState, useContext } from 'react' import { type SafeCollectibleResponse } from '@safe-global/safe-gateway-typescript-sdk' import ErrorMessage from '@/components/tx/ErrorMessage' import PagePlaceholder from '@/components/common/PagePlaceholder' import NftIcon from '@/public/images/common/nft.svg' -import NftBatchModal from '@/components/tx/modals/NftBatchModal' import useCollectibles from '@/hooks/useCollectibles' import InfiniteScroll from '@/components/common/InfiniteScroll' import { NFT_EVENTS } from '@/services/analytics/events/nfts' @@ -11,6 +10,8 @@ import { trackEvent } from '@/services/analytics' import NftGrid from '../NftGrid' import NftSendForm from '../NftSendForm' import NftPreviewModal from '../NftPreviewModal' +import { TxModalContext } from '@/components/tx-flow' +import NftTransferFlow from '@/components/tx-flow/flows/NftTransfer' const NftCollections = (): ReactElement => { // Track the current NFT page url @@ -21,10 +22,10 @@ const NftCollections = (): ReactElement => { const [allNfts, setAllNfts] = useState([]) // Selected NFTs const [selectedNfts, setSelectedNfts] = useState([]) - // Modal open state - const [showSendModal, setShowSendModal] = useState(false) // Preview const [previewNft, setPreviewNft] = useState() + // Tx modal + const { setTxFlow } = useContext(TxModalContext) // On NFT preview click const onPreview = useCallback((token: SafeCollectibleResponse) => { @@ -38,13 +39,13 @@ const NftCollections = (): ReactElement => { if (selectedNfts.length) { // Show the NFT transfer modal - setShowSendModal(true) + setTxFlow() // Track how many NFTs are being sent trackEvent({ ...NFT_EVENTS.SEND, label: selectedNfts.length }) } }, - [selectedNfts.length], + [selectedNfts, setTxFlow], ) // Add new NFTs to the accumulated list @@ -84,19 +85,6 @@ const NftCollections = (): ReactElement => { )} - {/* Send NFT modal */} - {showSendModal && ( - setShowSendModal(false)} - initialData={[ - { - recipient: '', - tokens: selectedNfts, - }, - ]} - /> - )} - {/* NFT preview */} { setPreviewNft(undefined)} nft={previewNft} />} diff --git a/src/components/safe-apps/AppFrame/index.tsx b/src/components/safe-apps/AppFrame/index.tsx index 2852c3872a..a16eba2f65 100644 --- a/src/components/safe-apps/AppFrame/index.tsx +++ b/src/components/safe-apps/AppFrame/index.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react' +import { useContext, useState } from 'react' import type { ReactElement } from 'react' import { useMemo } from 'react' import { useCallback, useEffect } from 'react' @@ -6,7 +6,14 @@ import { CircularProgress, Typography } from '@mui/material' import { useRouter } from 'next/router' import Head from 'next/head' import { getBalances, getTransactionDetails, getSafeMessage } from '@safe-global/safe-gateway-typescript-sdk' -import type { AddressBookItem, EIP712TypedData, RequestId, SafeSettings } from '@safe-global/safe-apps-sdk' +import type { + AddressBookItem, + BaseTransaction, + EIP712TypedData, + RequestId, + SafeSettings, + SendTransactionRequestParams, +} from '@safe-global/safe-apps-sdk' import { Methods } from '@safe-global/safe-apps-sdk' import { trackSafeAppOpenCount } from '@/services/safe-apps/track-app-usage-count' @@ -27,12 +34,7 @@ import useAnalyticsFromSafeApp from './useFromAppAnalytics' import useAppIsLoading from './useAppIsLoading' import useAppCommunicator, { CommunicatorMessages } from './useAppCommunicator' import { ThirdPartyCookiesWarning } from './ThirdPartyCookiesWarning' -import SafeAppsTxModal from '@/components/safe-apps/SafeAppsTxModal' -import useTxModal from '@/components/safe-apps/SafeAppsTxModal/useTxModal' -import SafeAppsSignMessageModal from '@/components/safe-apps/SafeAppsSignMessageModal' -import useSignMessageModal from '@/components/safe-apps/SignMessageModal/useSignMessageModal' import TransactionQueueBar, { TRANSACTION_BAR_HEIGHT } from './TransactionQueueBar' -import MsgModal from '@/components/safe-messages/MsgModal' import { safeMsgSubscribe, SafeMsgEvent } from '@/services/safe-messages/safeMsgEvents' import { useAppSelector } from '@/store' import { selectSafeMessages } from '@/store/safeMessagesSlice' @@ -46,6 +48,10 @@ import SafeAppIframe from './SafeAppIframe' import useGetSafeInfo from './useGetSafeInfo' import { hasFeature, FEATURES } from '@/utils/chains' import { selectTokenList, selectOnChainSigning, TOKEN_LISTS } from '@/store/settingsSlice' +import { TxModalContext } from '@/components/tx-flow' +import SafeAppsTxFlow from '@/components/tx-flow/flows/SafeAppsTx' +import SignMessageFlow from '@/components/tx-flow/flows/SignMessage' +import SignMessageOnChainFlow from '@/components/tx-flow/flows/SignMessageOnChain' const UNKNOWN_APP_NAME = 'Unknown Safe App' @@ -56,13 +62,12 @@ type AppFrameProps = { const AppFrame = ({ appUrl, allowedFeaturesList }: AppFrameProps): ReactElement => { const chainId = useChainId() - const [txModalState, openTxModal, closeTxModal] = useTxModal() // We use offChainSigning by default const [settings, setSettings] = useState({ offChainSigning: true, }) + const [currentRequestId, setCurrentRequestId] = useState() const safeMessages = useAppSelector(selectSafeMessages) - const [signMessageModalState, openSignMessageModal, closeSignMessageModal] = useSignMessageModal() const { safe, safeLoaded, safeAddress } = useSafeInfo() const tokenlist = useAppSelector(selectTokenList) const onChainSigning = useAppSelector(selectOnChainSigning) @@ -86,9 +91,31 @@ const AppFrame = ({ appUrl, allowedFeaturesList }: AppFrameProps): ReactElement const { getPermissions, hasPermission, permissionsRequest, setPermissionsRequest, confirmPermissionRequest } = useSafePermissions() const appName = useMemo(() => (remoteApp ? remoteApp.name : appUrl), [appUrl, remoteApp]) + const { setTxFlow } = useContext(TxModalContext) + + const onTxFlowClose = () => { + setCurrentRequestId((prevId) => { + if (prevId) { + communicator?.send(CommunicatorMessages.REJECT_TRANSACTION_MESSAGE, prevId, true) + trackSafeAppEvent(SAFE_APPS_EVENTS.PROPOSE_TRANSACTION_REJECTED, appName) + } + return undefined + }) + } const communicator = useAppCommunicator(iframeRef, remoteApp || safeAppFromManifest, chain, { - onConfirmTransactions: openTxModal, + onConfirmTransactions: (txs: BaseTransaction[], requestId: RequestId, params?: SendTransactionRequestParams) => { + const data = { + app: safeAppFromManifest, + appId: remoteApp ? String(remoteApp.id) : undefined, + requestId: requestId, + txs: txs, + params: params, + } + + setCurrentRequestId(requestId) + setTxFlow(, onTxFlowClose) + }, onSignMessage: ( message: string | EIP712TypedData, requestId: string, @@ -97,7 +124,33 @@ const AppFrame = ({ appUrl, allowedFeaturesList }: AppFrameProps): ReactElement ) => { const isOffChainSigningSupported = isOffchainEIP1271Supported(safe, chain, sdkVersion) const signOffChain = isOffChainSigningSupported && !onChainSigning - openSignMessageModal(message, requestId, method, signOffChain && !!settings.offChainSigning) + + setCurrentRequestId(requestId) + + if (signOffChain) { + setTxFlow( + , + onTxFlowClose, + ) + } else { + setTxFlow( + , + ) + } }, onGetPermissions: getPermissions, onSetPermissions: setPermissionsRequest, @@ -161,6 +214,20 @@ const AppFrame = ({ appUrl, allowedFeaturesList }: AppFrameProps): ReactElement }, }) + const onAcceptPermissionRequest = (_origin: string, requestId: RequestId) => { + const permissions = confirmPermissionRequest(PermissionStatus.GRANTED) + communicator?.send(permissions, requestId as string) + } + + const onRejectPermissionRequest = (requestId?: RequestId) => { + if (requestId) { + confirmPermissionRequest(PermissionStatus.DENIED) + communicator?.send('Permissions were rejected', requestId as string, true) + } else { + setPermissionsRequest(undefined) + } + } + useEffect(() => { if (!remoteApp) return @@ -190,55 +257,26 @@ const AppFrame = ({ appUrl, allowedFeaturesList }: AppFrameProps): ReactElement useEffect(() => { const unsubscribe = txSubscribe(TxEvent.SAFE_APPS_REQUEST, async ({ safeAppRequestId, safeTxHash }) => { - const currentSafeAppRequestId = signMessageModalState.requestId || txModalState.requestId - - if (currentSafeAppRequestId === safeAppRequestId) { + if (safeAppRequestId && currentRequestId === safeAppRequestId) { trackSafeAppEvent(SAFE_APPS_EVENTS.PROPOSE_TRANSACTION, appName) - communicator?.send({ safeTxHash }, safeAppRequestId) - - txModalState.isOpen ? closeTxModal() : closeSignMessageModal() + setTxFlow(undefined) } }) return unsubscribe - }, [appName, chainId, closeSignMessageModal, closeTxModal, communicator, signMessageModalState, txModalState]) + }, [appName, chainId, communicator, currentRequestId, setTxFlow]) useEffect(() => { const unsubscribe = safeMsgSubscribe(SafeMsgEvent.SIGNATURE_PREPARED, ({ messageHash, requestId, signature }) => { - if (signMessageModalState.requestId === requestId) { + if (requestId && currentRequestId === requestId) { communicator?.send({ messageHash, signature }, requestId) + setTxFlow(undefined) } }) return unsubscribe - }, [communicator, signMessageModalState.requestId]) - - const onSafeAppsModalClose = () => { - if (txModalState.isOpen) { - communicator?.send(CommunicatorMessages.REJECT_TRANSACTION_MESSAGE, txModalState.requestId, true) - closeTxModal() - } else { - communicator?.send(CommunicatorMessages.REJECT_TRANSACTION_MESSAGE, signMessageModalState.requestId, true) - closeSignMessageModal() - } - - trackSafeAppEvent(SAFE_APPS_EVENTS.PROPOSE_TRANSACTION_REJECTED, appName) - } - - const onAcceptPermissionRequest = (origin: string, requestId: RequestId) => { - const permissions = confirmPermissionRequest(PermissionStatus.GRANTED) - communicator?.send(permissions, requestId as string) - } - - const onRejectPermissionRequest = (requestId?: RequestId) => { - if (requestId) { - confirmPermissionRequest(PermissionStatus.DENIED) - communicator?.send('Permissions were rejected', requestId as string, true) - } else { - setPermissionsRequest(undefined) - } - } + }, [communicator, currentRequestId, setTxFlow]) if (!safeLoaded) { return
    @@ -288,46 +326,6 @@ const AppFrame = ({ appUrl, allowedFeaturesList }: AppFrameProps): ReactElement transactions={transactions} /> - {txModalState.isOpen && ( - - )} - - {signMessageModalState.isOpen && - (signMessageModalState.isOffChain ? ( - - ) : ( - - ))} - {permissionsRequest && ( { document.body.removeChild(iframeRef.current as Node) } } catch (error) { - logError(Errors._905, (error as Error).message) + logError(Errors._905, error) } }, []) diff --git a/src/components/safe-apps/SafeAppLandingPage/index.tsx b/src/components/safe-apps/SafeAppLandingPage/index.tsx index 2f14c7c250..7567e014d1 100644 --- a/src/components/safe-apps/SafeAppLandingPage/index.tsx +++ b/src/components/safe-apps/SafeAppLandingPage/index.tsx @@ -42,7 +42,7 @@ const SafeAppLanding = ({ appUrl, chain }: Props) => { trackEvent(OVERVIEW_EVENTS.OPEN_ONBOARD) - onboard.connectWallet().catch((e) => logError(Errors._302, (e as Error).message)) + onboard.connectWallet().catch((e) => logError(Errors._302, e)) } const handleDemoClick = () => { diff --git a/src/components/safe-apps/SafeAppsHeader/styles.module.css b/src/components/safe-apps/SafeAppsHeader/styles.module.css index 95f75eb8c3..b400ca92f4 100644 --- a/src/components/safe-apps/SafeAppsHeader/styles.module.css +++ b/src/components/safe-apps/SafeAppsHeader/styles.module.css @@ -27,7 +27,7 @@ border-bottom: 1px solid var(--color-border-light); } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .tabs { padding: 0 24px; } diff --git a/src/components/safe-apps/SafeAppsModalLabel/index.tsx b/src/components/safe-apps/SafeAppsModalLabel/index.tsx deleted file mode 100644 index 6fbb02027c..0000000000 --- a/src/components/safe-apps/SafeAppsModalLabel/index.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import type { SafeAppData } from '@safe-global/safe-gateway-typescript-sdk' -import { Typography, Box } from '@mui/material' -import SafeAppIconCard from '@/components/safe-apps/SafeAppIconCard' - -const APP_LOGO_FALLBACK_IMAGE = '/images/apps/apps-icon.svg' - -const SafeAppsModalLabel = ({ app }: { app?: SafeAppData }) => { - if (!app) { - return Safe Apps Transaction - } - - return ( - - - - - {app.name} - - ) -} - -export default SafeAppsModalLabel diff --git a/src/components/safe-apps/SafeAppsSignMessageModal/SafeAppsSignMessageModal.test.tsx b/src/components/safe-apps/SafeAppsSignMessageModal/SafeAppsSignMessageModal.test.tsx deleted file mode 100644 index 4bcd6e9906..0000000000 --- a/src/components/safe-apps/SafeAppsSignMessageModal/SafeAppsSignMessageModal.test.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { Methods } from '@safe-global/safe-apps-sdk' -import * as web3 from '../../../hooks/wallets/web3' -import { Web3Provider } from '@ethersproject/providers' -import { render, screen } from '@/tests/test-utils' -import SafeAppsSignMessageModal from './' -import { SafeAppAccessPolicyTypes } from '@safe-global/safe-gateway-typescript-sdk' - -describe('SafeAppsSignMessageModal', () => { - test('can handle messages with EIP712Domain type in the JSON-RPC payload', () => { - jest.spyOn(web3, 'getWeb3ReadOnly').mockImplementation(() => new Web3Provider(jest.fn())) - - render( - {}} - initialData={[ - { - app: { - id: 73, - url: 'https://app.com', - name: 'App', - iconUrl: 'https://app.com/icon.png', - description: 'App description', - chainIds: ['1'], - tags: [], - features: [], - socialProfiles: [], - developerWebsite: '', - accessControl: { - type: SafeAppAccessPolicyTypes.NoRestrictions, - }, - }, - appId: 73, - requestId: '73', - message: { - types: { - Vote: [ - { - name: 'from', - type: 'address', - }, - { - name: 'space', - type: 'string', - }, - { - name: 'timestamp', - type: 'uint64', - }, - { - name: 'proposal', - type: 'bytes32', - }, - { - name: 'choice', - type: 'uint32', - }, - ], - EIP712Domain: [ - { name: 'name', type: 'string' }, - { name: 'version', type: 'string' }, - ], - }, - domain: { - name: 'snapshot', - version: '0.1.4', - }, - message: { - from: '0x292bacf82268e143f5195af6928693699e31f911', - space: 'fabien.eth', - timestamp: '1663592967', - proposal: '0xbe992f0a433d2dbe2e0cee579e5e1bdb625cdcb3a14357ea990c6cdc3e129991', - choice: '1', - }, - }, - method: Methods.signTypedMessage, - }, - ]} - />, - ) - - expect(screen.getByText('Interact with SignMessageLib')).toBeInTheDocument() - }) -}) diff --git a/src/components/safe-apps/SafeAppsSignMessageModal/index.tsx b/src/components/safe-apps/SafeAppsSignMessageModal/index.tsx deleted file mode 100644 index c443b5d472..0000000000 --- a/src/components/safe-apps/SafeAppsSignMessageModal/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import type { SafeAppData } from '@safe-global/safe-gateway-typescript-sdk' -import type { EIP712TypedData, Methods, RequestId } from '@safe-global/safe-apps-sdk' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import type { TxModalProps } from '@/components/tx/TxModal' -import TxModal from '@/components/tx/TxModal' -import SafeAppsModalLabel from '@/components/safe-apps/SafeAppsModalLabel' -import ReviewSafeAppsSignMessage from './ReviewSafeAppsSignMessage' - -export type SafeAppsSignMessageParams = { - appId?: number - app?: SafeAppData - requestId: RequestId - message: string | EIP712TypedData - method: Methods.signMessage | Methods.signTypedMessage -} - -const SafeAppsSignSteps: TxStepperProps['steps'] = [ - { - label: (data) => { - const { app } = data as SafeAppsSignMessageParams - - return - }, - render: (data) => { - return - }, - }, -] - -const SafeAppsSignMessageModal = ( - props: Omit & { initialData: [SafeAppsSignMessageParams] }, -) => { - return -} - -export default SafeAppsSignMessageModal diff --git a/src/components/safe-apps/SafeAppsTxModal/InvalidTransaction.tsx b/src/components/safe-apps/SafeAppsTxModal/InvalidTransaction.tsx deleted file mode 100644 index 650fe1edaa..0000000000 --- a/src/components/safe-apps/SafeAppsTxModal/InvalidTransaction.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import type { ReactElement } from 'react' -import { Box, SvgIcon, Typography } from '@mui/material' -import ErrorIcon from '@/public/images/notifications/error.svg' - -const InvalidTransaction = (): ReactElement => { - return ( - - - - Transaction error - -
    - - This Safe App initiated a transaction which cannot be processed. Please get in touch with the developer of this - Safe App for more information. - -
    - ) -} - -export default InvalidTransaction diff --git a/src/components/safe-apps/SafeAppsTxModal/ReviewSafeAppsTx.tsx b/src/components/safe-apps/SafeAppsTxModal/ReviewSafeAppsTx.tsx deleted file mode 100644 index 8e0cc66409..0000000000 --- a/src/components/safe-apps/SafeAppsTxModal/ReviewSafeAppsTx.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import { useMemo, useState } from 'react' -import type { ReactElement } from 'react' -import { ErrorBoundary } from '@sentry/react' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' -import SendFromBlock from '@/components/tx/SendFromBlock' -import SendToBlock from '@/components/tx/SendToBlock' -import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -import useAsync from '@/hooks/useAsync' -import { useCurrentChain } from '@/hooks/useChains' -import { getInteractionTitle } from '../utils' -import type { SafeAppsTxParams } from '.' -import { trackSafeAppTxCount } from '@/services/safe-apps/track-app-usage-count' -import { getTxOrigin } from '@/utils/transactions' -import { ApprovalEditor } from '../../tx/ApprovalEditor' -import { createMultiSendCallOnlyTx, createTx, dispatchSafeAppsTx } from '@/services/tx/tx-sender' -import useOnboard from '@/hooks/wallets/useOnboard' -import useSafeInfo from '@/hooks/useSafeInfo' -import { Box, Typography } from '@mui/material' -import { generateDataRowValue } from '@/components/transactions/TxDetails/Summary/TxDataRow' -import useHighlightHiddenTab from '@/hooks/useHighlightHiddenTab' - -type ReviewSafeAppsTxProps = { - safeAppsTx: SafeAppsTxParams -} - -const ReviewSafeAppsTx = ({ - safeAppsTx: { txs, requestId, params, appId, app }, -}: ReviewSafeAppsTxProps): ReactElement => { - const { safe } = useSafeInfo() - const onboard = useOnboard() - const chain = useCurrentChain() - const [txList, setTxList] = useState(txs) - const [submitError, setSubmitError] = useState() - const isMultiSend = txList.length > 1 - - useHighlightHiddenTab() - - const [safeTx, safeTxError] = useAsync(async () => { - const tx = isMultiSend ? await createMultiSendCallOnlyTx(txList) : await createTx(txList[0]) - - if (params?.safeTxGas) { - // FIXME: do it properly via the Core SDK - // @ts-expect-error safeTxGas readonly - tx.data.safeTxGas = params.safeTxGas - } - - return tx - }, [txList]) - - const handleSubmit = async () => { - setSubmitError(undefined) - if (!safeTx || !onboard) return - trackSafeAppTxCount(Number(appId)) - - try { - await dispatchSafeAppsTx(safeTx, requestId, onboard, safe.chainId) - } catch (error) { - setSubmitError(error as Error) - } - } - - const origin = useMemo(() => getTxOrigin(app), [app]) - - return ( - - <> - Error parsing data
    }> - - - - - - {safeTx && ( - <> - - - - - Data (hex encoded) - - {generateDataRowValue(safeTx.data.data, 'rawData')} - - - )} - - - ) -} - -export default ReviewSafeAppsTx diff --git a/src/components/safe-apps/SafeAppsTxModal/index.tsx b/src/components/safe-apps/SafeAppsTxModal/index.tsx deleted file mode 100644 index fa1f0207a3..0000000000 --- a/src/components/safe-apps/SafeAppsTxModal/index.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import type { SafeAppData } from '@safe-global/safe-gateway-typescript-sdk' -import type { BaseTransaction, RequestId, SendTransactionRequestParams } from '@safe-global/safe-apps-sdk' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import type { TxModalProps } from '@/components/tx/TxModal' -import TxModal from '@/components/tx/TxModal' -import ReviewSafeAppsTx from './ReviewSafeAppsTx' -import InvalidTransaction from './InvalidTransaction' -import SafeAppsTxModalLabel from '@/components/safe-apps/SafeAppsModalLabel' -import { isTxValid } from '@/components/safe-apps/utils' - -export type SafeAppsTxParams = { - appId?: string - app?: SafeAppData - requestId: RequestId - txs: BaseTransaction[] - params?: SendTransactionRequestParams -} - -const SafeAppsTxSteps: TxStepperProps['steps'] = [ - { - label: (data) => { - const { app } = data as SafeAppsTxParams - - return - }, - render: (data) => { - if (!isTxValid((data as SafeAppsTxParams).txs)) { - return - } - - return - }, - }, -] - -const SafeAppsTxModal = (props: Omit) => { - return -} - -export default SafeAppsTxModal diff --git a/src/components/safe-apps/SafeAppsTxModal/useTxModal.ts b/src/components/safe-apps/SafeAppsTxModal/useTxModal.ts deleted file mode 100644 index dd847cf037..0000000000 --- a/src/components/safe-apps/SafeAppsTxModal/useTxModal.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { useCallback, useState } from 'react' -import type { BaseTransaction, RequestId, SendTransactionRequestParams } from '@safe-global/safe-apps-sdk' - -type TxModalState = { - isOpen: boolean - txs: BaseTransaction[] - requestId: RequestId - params?: SendTransactionRequestParams -} - -const INITIAL_CONFIRM_TX_MODAL_STATE: TxModalState = { - isOpen: false, - txs: [], - requestId: '', - params: undefined, -} - -type ReturnType = [ - TxModalState, - (txs: BaseTransaction[], requestId: RequestId, params?: SendTransactionRequestParams) => void, - () => void, -] - -const useTxModal = (): ReturnType => { - const [txModalState, setTxModalState] = useState(INITIAL_CONFIRM_TX_MODAL_STATE) - - const openTxModal = useCallback( - (txs: BaseTransaction[], requestId: RequestId, params?: SendTransactionRequestParams) => - setTxModalState({ - isOpen: true, - txs, - requestId, - params, - }), - [], - ) - - const closeTxModal = useCallback(() => setTxModalState(INITIAL_CONFIRM_TX_MODAL_STATE), []) - - return [txModalState, openTxModal, closeTxModal] -} - -export default useTxModal diff --git a/src/components/safe-apps/SignMessageModal/useSignMessageModal.ts b/src/components/safe-apps/SignMessageModal/useSignMessageModal.ts deleted file mode 100644 index ca2ea268ca..0000000000 --- a/src/components/safe-apps/SignMessageModal/useSignMessageModal.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { useState, useCallback } from 'react' -import type { EIP712TypedData } from '@safe-global/safe-apps-sdk' -import { Methods } from '@safe-global/safe-apps-sdk' - -type StateType = { - isOpen: boolean - message: string | EIP712TypedData - requestId: string - method: Methods - isOffChain: boolean -} - -const INITIAL_MODAL_STATE: StateType = { - isOpen: false, - message: '', - requestId: '', - method: Methods.signMessage, - isOffChain: false, -} - -type ReturnType = [ - StateType, - ( - message: string | EIP712TypedData, - requestId: string, - method: Methods.signMessage | Methods.signTypedMessage, - isOffChain: boolean, - ) => void, - () => void, -] - -const useSignMessageModal = (): ReturnType => { - const [signMessageModalState, setSignMessageModalState] = useState(INITIAL_MODAL_STATE) - - const openSignMessageModal = useCallback( - ( - message: string | EIP712TypedData, - requestId: string, - method: Methods, - isOffChain = INITIAL_MODAL_STATE.isOffChain, - ) => { - setSignMessageModalState({ - ...INITIAL_MODAL_STATE, - isOpen: true, - message, - requestId, - method, - isOffChain, - }) - }, - [], - ) - - const closeSignMessageModal = useCallback(() => { - setSignMessageModalState(INITIAL_MODAL_STATE) - }, []) - - return [signMessageModalState, openSignMessageModal, closeSignMessageModal] -} - -export default useSignMessageModal diff --git a/src/components/safe-messages/InfoBox/index.tsx b/src/components/safe-messages/InfoBox/index.tsx index b644c68d5a..21a22a5c6c 100644 --- a/src/components/safe-messages/InfoBox/index.tsx +++ b/src/components/safe-messages/InfoBox/index.tsx @@ -5,10 +5,12 @@ import InfoIcon from '@/public/images/notifications/info.svg' import css from './styles.module.css' const InfoBox = ({ + title, message, children, className, }: { + title: string message: string children: ReactNode className?: string @@ -16,14 +18,15 @@ const InfoBox = ({ return (
    - +
    - - {message} + + {title} + {message}
    - +
    {children}
    ) diff --git a/src/components/safe-messages/InfoBox/styles.module.css b/src/components/safe-messages/InfoBox/styles.module.css index 2de4715456..ae24d95400 100644 --- a/src/components/safe-messages/InfoBox/styles.module.css +++ b/src/components/safe-messages/InfoBox/styles.module.css @@ -1,7 +1,6 @@ .container { background-color: var(--color-info-background); padding: var(--space-2); - margin: var(--space-2) 0; border-radius: 4px; display: flex; flex-direction: column; @@ -19,12 +18,14 @@ text-decoration: underline; } -.message svg { - margin-top: 4px; -} - .details { margin-top: var(--space-1); color: var(--color-primary-light); word-break: break-word; } + +.divider { + margin-right: calc(-1 * var(--space-2)); + margin-left: calc(-1 * var(--space-2)); + border-color: var(--color-info-light); +} diff --git a/src/components/safe-messages/MsgModal/ConfirmationDialog.tsx b/src/components/safe-messages/MsgModal/ConfirmationDialog.tsx deleted file mode 100644 index 3c73abc02c..0000000000 --- a/src/components/safe-messages/MsgModal/ConfirmationDialog.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Dialog, DialogTitle, DialogContent, DialogContentText, Typography, DialogActions, Button } from '@mui/material' - -export const ConfirmationDialog = ({ - open, - onCancel, - onClose, -}: { - open: boolean - onCancel: () => void - onClose: () => void -}) => ( - - Cancel message signing request - - - If you close this modal, the signing request will be aborted. - - - - - - - -) diff --git a/src/components/safe-messages/MsgSigners/index.tsx b/src/components/safe-messages/MsgSigners/index.tsx index 045a1602bd..a0e0c59938 100644 --- a/src/components/safe-messages/MsgSigners/index.tsx +++ b/src/components/safe-messages/MsgSigners/index.tsx @@ -79,7 +79,7 @@ export const MsgSigners = ({ )} - + @@ -92,7 +92,7 @@ export const MsgSigners = ({ {!hideConfirmations && confirmations.map(({ owner }) => ( - + @@ -115,7 +115,7 @@ export const MsgSigners = ({ {showMissingSignatures && missingConfirmations.map((_, idx) => ( - + @@ -130,7 +130,7 @@ export const MsgSigners = ({ ))} {isConfirmed && ( - + Confirmed diff --git a/src/components/safe-messages/MsgSigners/styles.module.css b/src/components/safe-messages/MsgSigners/styles.module.css index 7a6581ed4a..7d4aa34ecf 100644 --- a/src/components/safe-messages/MsgSigners/styles.module.css +++ b/src/components/safe-messages/MsgSigners/styles.module.css @@ -30,6 +30,11 @@ padding-right: 0; } +.signers :global .MuiListItemText-root { + margin-top: var(--space-1); + margin-bottom: var(--space-1); +} + .signers :global .MuiListItemIcon-root { color: var(--color-primary-main); justify-content: center; diff --git a/src/components/safe-messages/SignMsgButton/index.tsx b/src/components/safe-messages/SignMsgButton/index.tsx index 29d46336f9..9f5339ef4a 100644 --- a/src/components/safe-messages/SignMsgButton/index.tsx +++ b/src/components/safe-messages/SignMsgButton/index.tsx @@ -1,5 +1,5 @@ import { Button, Tooltip, IconButton } from '@mui/material' -import { useState } from 'react' +import { useContext } from 'react' import CheckIcon from '@mui/icons-material/Check' import type { SyntheticEvent, ReactElement } from 'react' import type { SafeMessage } from '@safe-global/safe-gateway-typescript-sdk' @@ -9,41 +9,38 @@ import Track from '@/components/common/Track' import { MESSAGE_EVENTS } from '@/services/analytics/events/txList' import useIsSafeMessageSignableBy from '@/hooks/messages/useIsSafeMessageSignableBy' import useIsSafeMessagePending from '@/hooks/messages/useIsSafeMessagePending' -import MsgModal from '@/components/safe-messages/MsgModal' +import { TxModalContext } from '@/components/tx-flow' +import SignMessageFlow from '@/components/tx-flow/flows/SignMessage' const SignMsgButton = ({ msg, compact = false }: { msg: SafeMessage; compact?: boolean }): ReactElement => { - const [open, setOpen] = useState(false) const wallet = useWallet() const isSignable = useIsSafeMessageSignableBy(msg, wallet?.address || '') const isPending = useIsSafeMessagePending(msg.messageHash) + const { setTxFlow } = useContext(TxModalContext) const onClick = (e: SyntheticEvent) => { e.stopPropagation() - setOpen(true) + setTxFlow() } const isDisabled = !isSignable || isPending return ( - <> - - {compact ? ( - - - - - - - - ) : ( - - )} - - - {open && setOpen(false)} {...msg} />} - + + {compact ? ( + + + + + + + + ) : ( + + )} + ) } diff --git a/src/components/settings/ContractVersion/index.tsx b/src/components/settings/ContractVersion/index.tsx index 491d1814e7..a1a7feac40 100644 --- a/src/components/settings/ContractVersion/index.tsx +++ b/src/components/settings/ContractVersion/index.tsx @@ -1,5 +1,5 @@ -import { useMemo } from 'react' -import { Box, SvgIcon, Typography, Alert, AlertTitle, Skeleton } from '@mui/material' +import { useContext, useMemo } from 'react' +import { Box, SvgIcon, Typography, Alert, AlertTitle, Skeleton, Button } from '@mui/material' import { ImplementationVersionState } from '@safe-global/safe-gateway-typescript-sdk' import { LATEST_SAFE_VERSION } from '@/config/constants' import { sameAddress } from '@/utils/addresses' @@ -8,10 +8,13 @@ import { MasterCopyDeployer, useMasterCopies } from '@/hooks/useMasterCopies' import useSafeInfo from '@/hooks/useSafeInfo' import CheckCircleIcon from '@mui/icons-material/CheckCircle' import InfoIcon from '@/public/images/notifications/info.svg' - -import UpdateSafeDialog from './UpdateSafeDialog' +import { TxModalContext } from '@/components/tx-flow' +import UpdateSafeFlow from '@/components/tx-flow/flows/UpdateSafe' import ExternalLink from '@/components/common/ExternalLink' +import CheckWallet from '@/components/common/CheckWallet' + export const ContractVersion = () => { + const { setTxFlow } = useContext(TxModalContext) const [masterCopies] = useMasterCopies() const { safe, safeLoaded } = useSafeInfo() const masterCopyAddress = safe.implementation.value @@ -40,12 +43,20 @@ export const ContractVersion = () => { icon={} > New version is available: {LATEST_SAFE_VERSION} + Update now to take advantage of new features and the highest security standards available. You will need to confirm this update just like any other transaction.{' '} GitHub - + + + {(isOk) => ( + + )} + ) : ( diff --git a/src/components/settings/DataManagement/useGlobalImportFileParser.ts b/src/components/settings/DataManagement/useGlobalImportFileParser.ts index 767776d259..b7c535c1e6 100644 --- a/src/components/settings/DataManagement/useGlobalImportFileParser.ts +++ b/src/components/settings/DataManagement/useGlobalImportFileParser.ts @@ -92,7 +92,7 @@ export const useGlobalImportJsonParser = (jsonData: string | undefined): Data => try { parsedFile = JSON.parse(jsonData) } catch (err) { - logError(ErrorCodes._704, (err as Error).message) + logError(ErrorCodes._704, err) data.error = ImportErrors.INVALID_JSON_FORMAT return data diff --git a/src/components/settings/RequiredConfirmations/index.tsx b/src/components/settings/RequiredConfirmations/index.tsx index 74837884a2..5b05b4eb3b 100644 --- a/src/components/settings/RequiredConfirmations/index.tsx +++ b/src/components/settings/RequiredConfirmations/index.tsx @@ -1,7 +1,14 @@ -import { ChangeThresholdDialog } from '@/components/settings/owner/ChangeThresholdDialog' -import { Box, Grid, Typography } from '@mui/material' +import { Box, Button, Grid, Typography } from '@mui/material' +import Track from '@/components/common/Track' +import { SETTINGS_EVENTS } from '@/services/analytics' +import ChangeThresholdFlow from '@/components/tx-flow/flows/ChangeThreshold' +import CheckWallet from '@/components/common/CheckWallet' +import { useContext } from 'react' +import { TxModalContext } from '@/components/tx-flow' export const RequiredConfirmation = ({ threshold, owners }: { threshold: number; owners: number }) => { + const { setTxFlow } = useContext(TxModalContext) + return ( @@ -17,7 +24,19 @@ export const RequiredConfirmation = ({ threshold, owners }: { threshold: number; {threshold} out of {owners} owners. - {owners > 1 && } + {owners > 1 && ( + + + {(isOk) => ( + + + + )} + + + )}
    diff --git a/src/components/settings/SafeModules/RemoveModule/index.tsx b/src/components/settings/SafeModules/RemoveModule/index.tsx deleted file mode 100644 index 6423c420e8..0000000000 --- a/src/components/settings/SafeModules/RemoveModule/index.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import { useState } from 'react' -import { IconButton, SvgIcon } from '@mui/material' -import TxModal from '@/components/tx/TxModal' -import DeleteIcon from '@/public/images/common/delete.svg' -import { ReviewRemoveModule } from '@/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule' -import CheckWallet from '@/components/common/CheckWallet' - -export type RemoveModuleData = { - address: string -} - -const RemoveModuleSteps: TxStepperProps['steps'] = [ - { - label: 'Remove module', - render: (data, onSubmit) => , - }, -] - -export const RemoveModule = ({ address }: { address: string }) => { - const [open, setOpen] = useState(false) - - const initialData = { - address, - } - - return ( - <> - - {(isOk) => ( - setOpen(true)} color="error" size="small" disabled={!isOk}> - - - )} - - - {open && setOpen(false)} steps={RemoveModuleSteps} initialData={[initialData]} />} - - ) -} diff --git a/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx b/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx deleted file mode 100644 index cef844ad24..0000000000 --- a/src/components/settings/SafeModules/RemoveModule/steps/ReviewRemoveModule.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import useAsync from '@/hooks/useAsync' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' -import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -import { Typography } from '@mui/material' -import SendToBlock from '@/components/tx/SendToBlock' -import type { RemoveModuleData } from '@/components/settings/SafeModules/RemoveModule' -import { useEffect } from 'react' -import { Errors, logError } from '@/services/exceptions' -import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' -import { createRemoveModuleTx } from '@/services/tx/tx-sender' - -export const ReviewRemoveModule = ({ data, onSubmit }: { data: RemoveModuleData; onSubmit: () => void }) => { - const [safeTx, safeTxError] = useAsync(() => { - return createRemoveModuleTx(data.address) - }, [data.address]) - - useEffect(() => { - if (safeTxError) { - logError(Errors._806, safeTxError.message) - } - }, [safeTxError]) - - const onFormSubmit = () => { - trackEvent(SETTINGS_EVENTS.MODULES.REMOVE_MODULE) - - onSubmit() - } - - return ( - - - - After removing this module, any feature or app that uses this module might no longer work. If this Safe Account - requires more then one signature, the module removal will have to be confirmed by other owners as well. - - - ) -} diff --git a/src/components/settings/SafeModules/index.tsx b/src/components/settings/SafeModules/index.tsx index 26695c9ec1..9c1dca7c56 100644 --- a/src/components/settings/SafeModules/index.tsx +++ b/src/components/settings/SafeModules/index.tsx @@ -1,10 +1,14 @@ import EthHashInfo from '@/components/common/EthHashInfo' import useSafeInfo from '@/hooks/useSafeInfo' -import { Paper, Grid, Typography, Box } from '@mui/material' +import { Paper, Grid, Typography, Box, IconButton, SvgIcon } from '@mui/material' import css from './styles.module.css' -import { RemoveModule } from '@/components/settings/SafeModules/RemoveModule' import ExternalLink from '@/components/common/ExternalLink' +import RemoveModuleFlow from '@/components/tx-flow/flows/RemoveModule' +import DeleteIcon from '@/public/images/common/delete.svg' +import CheckWallet from '@/components/common/CheckWallet' +import { useContext } from 'react' +import { TxModalContext } from '@/components/tx-flow' const NoModules = () => { return ( @@ -15,6 +19,8 @@ const NoModules = () => { } const ModuleDisplay = ({ moduleAddress, chainId, name }: { moduleAddress: string; chainId: string; name?: string }) => { + const { setTxFlow } = useContext(TxModalContext) + return ( - + + {(isOk) => ( + setTxFlow()} + color="error" + size="small" + disabled={!isOk} + > + + + )} + ) } diff --git a/src/components/settings/SpendingLimits/NewSpendingLimit/index.tsx b/src/components/settings/SpendingLimits/NewSpendingLimit/index.tsx deleted file mode 100644 index fbaf98d1b4..0000000000 --- a/src/components/settings/SpendingLimits/NewSpendingLimit/index.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Button } from '@mui/material' -import { useState } from 'react' -import TxModal from '@/components/tx/TxModal' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import { SpendingLimitForm } from '@/components/settings/SpendingLimits/NewSpendingLimit/steps/SpendingLimitForm' -import { ReviewSpendingLimit } from '@/components/settings/SpendingLimits/NewSpendingLimit/steps/ReviewSpendingLimit' -import Track from '@/components/common/Track' -import { SETTINGS_EVENTS } from '@/services/analytics/events/settings' -import CheckWallet from '@/components/common/CheckWallet' - -const NewSpendingLimitSteps: TxStepperProps['steps'] = [ - { - label: 'New spending limit', - render: (data, onSubmit) => , - }, - { - label: 'Review spending limit', - render: (data, onSubmit) => , - }, -] - -export type NewSpendingLimitData = { - beneficiary: string - tokenAddress: string - amount: string - resetTime: string -} - -export const NewSpendingLimit = () => { - const [open, setOpen] = useState(false) - - return ( - <> - - {(isOk) => ( - - - - )} - - - {open && setOpen(false)} steps={NewSpendingLimitSteps} />} - - ) -} diff --git a/src/components/settings/SpendingLimits/NewSpendingLimit/steps/ReviewSpendingLimit.tsx b/src/components/settings/SpendingLimits/NewSpendingLimit/steps/ReviewSpendingLimit.tsx deleted file mode 100644 index 61f8be0757..0000000000 --- a/src/components/settings/SpendingLimits/NewSpendingLimit/steps/ReviewSpendingLimit.tsx +++ /dev/null @@ -1,121 +0,0 @@ -import { Typography, Box } from '@mui/material' -import useBalances from '@/hooks/useBalances' -import { useEffect, useMemo, useState } from 'react' -import useAsync from '@/hooks/useAsync' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' -import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -import EthHashInfo from '@/components/common/EthHashInfo' -import useChainId from '@/hooks/useChainId' -import { useSelector } from 'react-redux' -import type { SpendingLimitState } from '@/store/spendingLimitsSlice' -import { selectSpendingLimits } from '@/store/spendingLimitsSlice' -import { getResetTimeOptions } from '@/components/transactions/TxDetails/TxData/SpendingLimits' -import { BigNumber } from '@ethersproject/bignumber' -import { formatVisualAmount } from '@/utils/formatters' -import { relativeTime } from '@/utils/date' -import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' -import { TokenTransferReview } from '@/components/tx/modals/TokenTransferModal/ReviewTokenTx' -import SpendingLimitLabel from '@/components/common/SpendingLimitLabel' -import type { NewSpendingLimitData } from '@/services/tx/tx-sender' -import { createNewSpendingLimitTx } from '@/services/tx/tx-sender' - -type Props = { - data: NewSpendingLimitData - onSubmit: () => void -} - -export const ReviewSpendingLimit = ({ data, onSubmit }: Props) => { - const [existingSpendingLimit, setExistingSpendingLimit] = useState() - const spendingLimits = useSelector(selectSpendingLimits) - const chainId = useChainId() - const { balances } = useBalances() - - useEffect(() => { - const existingSpendingLimit = spendingLimits.find( - (spendingLimit) => - spendingLimit.beneficiary === data.beneficiary && spendingLimit.token.address === data.tokenAddress, - ) - setExistingSpendingLimit(existingSpendingLimit) - }, [spendingLimits, data]) - - const token = balances.items.find((item) => item.tokenInfo.address === data.tokenAddress) - const { decimals, symbol } = token?.tokenInfo || {} - - const isOneTime = data.resetTime === '0' - const resetTime = useMemo(() => { - return isOneTime - ? 'One-time spending limit' - : getResetTimeOptions(chainId).find((time) => time.value === data.resetTime)?.label - }, [isOneTime, data.resetTime, chainId]) - - const [safeTx, safeTxError] = useAsync(() => { - return createNewSpendingLimitTx(data, spendingLimits, chainId, decimals, existingSpendingLimit) - }, [data, spendingLimits, chainId, decimals, existingSpendingLimit]) - - const onFormSubmit = () => { - trackEvent({ - ...SETTINGS_EVENTS.SPENDING_LIMIT.RESET_PERIOD, - label: resetTime, - }) - - onSubmit() - } - - return ( - - {token && ( - - {!!existingSpendingLimit && ( - <> - - {formatVisualAmount(BigNumber.from(existingSpendingLimit.amount), decimals)} {symbol} - - {' → '} - - )} - - )} - palette.text.secondary} pb={1}> - Beneficiary - - - - - - - palette.text.secondary}>Reset time - {existingSpendingLimit ? ( - <> - - {existingSpendingLimit.resetTimeMin !== data.resetTime && ( - <> - - {relativeTime(existingSpendingLimit.lastResetMin, existingSpendingLimit.resetTimeMin)} - - {' → '} - - )} - - {resetTime} - - - } - isOneTime={existingSpendingLimit.resetTimeMin === '0'} - mb={2} - /> - - You are about to replace an existent spending limit - - - ) : ( - - )} - - ) -} diff --git a/src/components/settings/SpendingLimits/NewSpendingLimit/steps/SpendingLimitForm.tsx b/src/components/settings/SpendingLimits/NewSpendingLimit/steps/SpendingLimitForm.tsx deleted file mode 100644 index b5b78c1cad..0000000000 --- a/src/components/settings/SpendingLimits/NewSpendingLimit/steps/SpendingLimitForm.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import { useMemo, useState } from 'react' -import { FormProvider, useForm, Controller } from 'react-hook-form' -import { - Button, - DialogContent, - FormControl, - InputLabel, - MenuItem, - Select, - Switch, - Typography, - RadioGroup, - FormControlLabel, - Radio, - FormGroup, -} from '@mui/material' -import AddressBookInput from '@/components/common/AddressBookInput' -import { validateAmount, validateDecimalLength } from '@/utils/validation' -import { AutocompleteItem } from '@/components/tx/modals/TokenTransferModal/SendAssetsForm' -import useChainId from '@/hooks/useChainId' -import { getResetTimeOptions } from '@/components/transactions/TxDetails/TxData/SpendingLimits' -import { defaultAbiCoder } from '@ethersproject/abi' -import { parseUnits } from 'ethers/lib/utils' -import NumberField from '@/components/common/NumberField' -import { useVisibleBalances } from '@/hooks/useVisibleBalances' - -export type NewSpendingLimitData = { - beneficiary: string - tokenAddress: string - amount: string - resetTime: string -} - -type Props = { - data?: NewSpendingLimitData - onSubmit: (data: NewSpendingLimitData) => void -} - -export const _validateSpendingLimit = (val: string, decimals?: number) => { - // Allowance amount is uint96 https://github.com/safe-global/safe-modules/blob/master/allowances/contracts/AlowanceModule.sol#L52 - try { - const amount = parseUnits(val, decimals) - defaultAbiCoder.encode(['int96'], [amount]) - } catch (e) { - return Number(val) > 1 ? 'Amount is too big' : 'Amount is too small' - } -} - -export const SpendingLimitForm = ({ data, onSubmit }: Props) => { - const chainId = useChainId() - const [showResetTime, setShowResetTime] = useState(false) - const { balances } = useVisibleBalances() - - const resetTimeOptions = useMemo(() => getResetTimeOptions(chainId), [chainId]) - - const formMethods = useForm({ - defaultValues: { ...data, resetTime: '0' }, - mode: 'onChange', - }) - const { - register, - handleSubmit, - setValue, - watch, - control, - formState: { errors }, - } = formMethods - - const tokenAddress = watch('tokenAddress') - const selectedToken = tokenAddress - ? balances.items.find((item) => item.tokenInfo.address === tokenAddress) - : undefined - - const toggleResetTime = () => { - setValue('resetTime', showResetTime ? '0' : resetTimeOptions[0].value) - setShowResetTime((prev) => !prev) - } - - return ( - -
    - - - - - - - - Select an asset - - - - - - { - const decimals = selectedToken?.tokenInfo.decimals - return ( - validateAmount(val) || - validateDecimalLength(val, decimals) || - _validateSpendingLimit(val, selectedToken?.tokenInfo.decimals) - ) - }, - })} - /> - - - Set a reset time so the allowance automatically refills after the defined time period. - - - - } - label={`Reset time (${showResetTime ? 'choose reset time period' : 'one time'})`} - /> - - - {showResetTime && ( - - ( - - {resetTimeOptions.map((resetTime) => ( - } - /> - ))} - - )} - /> - - )} - - - -
    -
    - ) -} diff --git a/src/components/settings/SpendingLimits/RemoveSpendingLimit/index.tsx b/src/components/settings/SpendingLimits/RemoveSpendingLimit/index.tsx deleted file mode 100644 index f65ef2fdda..0000000000 --- a/src/components/settings/SpendingLimits/RemoveSpendingLimit/index.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -import { getSpendingLimitInterface, getSpendingLimitModuleAddress } from '@/services/contracts/spendingLimitContracts' -import useChainId from '@/hooks/useChainId' -import useAsync from '@/hooks/useAsync' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' -import EthHashInfo from '@/components/common/EthHashInfo' -import { Typography } from '@mui/material' -import type { SpendingLimitState } from '@/store/spendingLimitsSlice' -import { relativeTime } from '@/utils/date' -import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' -import useBalances from '@/hooks/useBalances' -import { TokenTransferReview } from '@/components/tx/modals/TokenTransferModal/ReviewTokenTx' -import { safeFormatUnits } from '@/utils/formatters' -import SpendingLimitLabel from '@/components/common/SpendingLimitLabel' -import { createTx } from '@/services/tx/tx-sender' - -export const RemoveSpendingLimit = ({ data, onSubmit }: { data: SpendingLimitState; onSubmit: () => void }) => { - const chainId = useChainId() - const { balances } = useBalances() - const token = balances.items.find((item) => item.tokenInfo.address === data.token.address) - - const [safeTx, safeTxError] = useAsync(() => { - const spendingLimitAddress = getSpendingLimitModuleAddress(chainId) - if (!spendingLimitAddress) return - - const spendingLimitInterface = getSpendingLimitInterface() - const txData = spendingLimitInterface.encodeFunctionData('deleteAllowance', [data.beneficiary, data.token.address]) - - const txParams = { - to: spendingLimitAddress, - value: '0', - data: txData, - } - - return createTx(txParams) - }, [chainId, data.beneficiary, data.token]) - - const onFormSubmit = () => { - trackEvent(SETTINGS_EVENTS.SPENDING_LIMIT.LIMIT_REMOVED) - - onSubmit() - } - - return ( - - {token && ( - - )} - ({ color: palette.primary.light })}>Beneficiary - - ({ color: palette.primary.light })}> - Reset time - - - - ) -} diff --git a/src/components/settings/SpendingLimits/SpendingLimitsTable.tsx b/src/components/settings/SpendingLimits/SpendingLimitsTable.tsx index 854c6d7549..fff812535f 100644 --- a/src/components/settings/SpendingLimits/SpendingLimitsTable.tsx +++ b/src/components/settings/SpendingLimits/SpendingLimitsTable.tsx @@ -4,25 +4,17 @@ import { safeFormatUnits } from '@/utils/formatters' import { Box, IconButton, Skeleton, SvgIcon, Typography } from '@mui/material' import { relativeTime } from '@/utils/date' import EthHashInfo from '@/components/common/EthHashInfo' -import { useMemo, useState } from 'react' +import { useContext, useMemo } from 'react' import type { SpendingLimitState } from '@/store/spendingLimitsSlice' import { BigNumber } from '@ethersproject/bignumber' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import TxModal from '@/components/tx/TxModal' -import { RemoveSpendingLimit } from '@/components/settings/SpendingLimits/RemoveSpendingLimit' +import RemoveSpendingLimitFlow from '@/components/tx-flow/flows/RemoveSpendingLimit' +import { TxModalContext } from '@/components/tx-flow' import Track from '@/components/common/Track' import { SETTINGS_EVENTS } from '@/services/analytics/events/settings' import TokenIcon from '@/components/common/TokenIcon' import SpendingLimitLabel from '@/components/common/SpendingLimitLabel' import CheckWallet from '@/components/common/CheckWallet' -const RemoveSpendingLimitSteps: TxStepperProps['steps'] = [ - { - label: 'Remove spending limit', - render: (data, onSubmit) => , - }, -] - const SKELETON_ROWS = new Array(3).fill('').map(() => { return { cells: { @@ -72,13 +64,7 @@ export const SpendingLimitsTable = ({ spendingLimits: SpendingLimitState[] isLoading: boolean }) => { - const [open, setOpen] = useState(false) - const [initialData, setInitialData] = useState() - - const onRemove = (spendingLimit: SpendingLimitState) => { - setOpen(true) - setInitialData(spendingLimit) - } + const { setTxFlow } = useContext(TxModalContext) const headCells = useMemo( () => [ @@ -135,7 +121,7 @@ export const SpendingLimitsTable = ({ {(isOk) => ( onRemove(spendingLimit)} + onClick={() => setTxFlow()} color="error" size="small" disabled={!isOk} @@ -150,12 +136,7 @@ export const SpendingLimitsTable = ({ }, } }), - [isLoading, spendingLimits], + [isLoading, setTxFlow, spendingLimits], ) - return spendingLimits.length > 0 ? ( - <> - - {open && setOpen(false)} steps={RemoveSpendingLimitSteps} initialData={[initialData]} />} - - ) : null + return spendingLimits.length > 0 ? : null } diff --git a/src/components/settings/SpendingLimits/index.tsx b/src/components/settings/SpendingLimits/index.tsx index d79d0fa919..148313cdef 100644 --- a/src/components/settings/SpendingLimits/index.tsx +++ b/src/components/settings/SpendingLimits/index.tsx @@ -1,13 +1,19 @@ -import { Paper, Grid, Typography, Box } from '@mui/material' +import { useContext } from 'react' +import { Paper, Grid, Typography, Box, Button } from '@mui/material' import { NoSpendingLimits } from '@/components/settings/SpendingLimits/NoSpendingLimits' import { SpendingLimitsTable } from '@/components/settings/SpendingLimits/SpendingLimitsTable' import { useSelector } from 'react-redux' import { selectSpendingLimits, selectSpendingLimitsLoading } from '@/store/spendingLimitsSlice' -import { NewSpendingLimit } from '@/components/settings/SpendingLimits/NewSpendingLimit' import { FEATURES } from '@/utils/chains' import { useHasFeature } from '@/hooks/useChains' +import NewSpendingLimitFlow from '@/components/tx-flow/flows/NewSpendingLimit' +import { SETTINGS_EVENTS } from '@/services/analytics' +import CheckWallet from '@/components/common/CheckWallet' +import Track from '@/components/common/Track' +import { TxModalContext } from '@/components/tx-flow' const SpendingLimits = () => { + const { setTxFlow } = useContext(TxModalContext) const spendingLimits = useSelector(selectSpendingLimits) const spendingLimitsLoading = useSelector(selectSpendingLimitsLoading) const isEnabled = useHasFeature(FEATURES.SPENDING_LIMIT) @@ -29,7 +35,20 @@ const SpendingLimits = () => { collect all signatures. - + + {(isOk) => ( + + + + )} + {!spendingLimits.length && !spendingLimitsLoading && } diff --git a/src/components/settings/TransactionGuards/RemoveGuard/index.tsx b/src/components/settings/TransactionGuards/RemoveGuard/index.tsx deleted file mode 100644 index f54414cfb2..0000000000 --- a/src/components/settings/TransactionGuards/RemoveGuard/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { useState } from 'react' -import { IconButton, SvgIcon } from '@mui/material' -import DeleteIcon from '@/public/images/common/delete.svg' - -import TxModal from '@/components/tx/TxModal' -import { ReviewRemoveGuard } from '@/components/settings/TransactionGuards/RemoveGuard/steps/ReviewRemoveGuard' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import CheckWallet from '@/components/common/CheckWallet' - -export type RemoveGuardData = { - address: string -} - -const RemoveGuardSteps: TxStepperProps['steps'] = [ - { - label: 'Remove transaction guard', - render: (data, onSubmit) => , - }, -] - -export const RemoveGuard = ({ address }: { address: string }) => { - const [open, setOpen] = useState(false) - - const initialData: RemoveGuardData = { - address, - } - - return ( - <> - - {(isOk) => ( - setOpen(true)} color="error" size="small" disabled={!isOk}> - - - )} - - - {open && setOpen(false)} steps={RemoveGuardSteps} initialData={[initialData]} />} - - ) -} diff --git a/src/components/settings/TransactionGuards/index.tsx b/src/components/settings/TransactionGuards/index.tsx index 00e11b4f21..484fe8e46c 100644 --- a/src/components/settings/TransactionGuards/index.tsx +++ b/src/components/settings/TransactionGuards/index.tsx @@ -1,13 +1,17 @@ import EthHashInfo from '@/components/common/EthHashInfo' import useSafeInfo from '@/hooks/useSafeInfo' -import { Paper, Grid, Typography, Box } from '@mui/material' -import { RemoveGuard } from './RemoveGuard' +import { Paper, Grid, Typography, Box, IconButton, SvgIcon } from '@mui/material' import css from './styles.module.css' import ExternalLink from '@/components/common/ExternalLink' import { SAFE_FEATURES } from '@safe-global/safe-core-sdk-utils' import { hasSafeFeature } from '@/utils/safe-versions' import { HelpCenterArticle } from '@/config/constants' +import DeleteIcon from '@/public/images/common/delete.svg' +import CheckWallet from '@/components/common/CheckWallet' +import { useContext } from 'react' +import { TxModalContext } from '@/components/tx-flow' +import RemoveGuardFlow from '@/components/tx-flow/flows/RemoveGuard' const NoTransactionGuard = () => { return ( @@ -18,10 +22,23 @@ const NoTransactionGuard = () => { } const GuardDisplay = ({ guardAddress, chainId }: { guardAddress: string; chainId: string }) => { + const { setTxFlow } = useContext(TxModalContext) + return ( - + + {(isOk) => ( + setTxFlow()} + color="error" + size="small" + disabled={!isOk} + > + + + )} + ) } diff --git a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx b/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx deleted file mode 100644 index a89bb63a91..0000000000 --- a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ChooseOwnerStep.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import AddressBookInput from '@/components/common/AddressBookInput' -import EthHashInfo from '@/components/common/EthHashInfo' -import NameInput from '@/components/common/NameInput' -import type { ChangeOwnerData, OwnerData } from '@/components/settings/owner/AddOwnerDialog/DialogSteps/types' -import useSafeInfo from '@/hooks/useSafeInfo' -import { addressIsNotCurrentSafe, uniqueAddress } from '@/utils/validation' -import { Box, Button, CircularProgress, DialogContent, FormControl, InputAdornment, Typography } from '@mui/material' -import { FormProvider, useForm } from 'react-hook-form' -import { useAddressResolver } from '@/hooks/useAddressResolver' - -export const ChooseOwnerStep = ({ - data, - onSubmit, -}: { - data: ChangeOwnerData - onSubmit: (data: ChangeOwnerData) => void -}) => { - const { safe, safeAddress } = useSafeInfo() - const { removedOwner, newOwner } = data - const owners = safe.owners - - const isReplace = Boolean(removedOwner) - - const defaultValues: OwnerData = { - address: newOwner?.address, - name: newOwner?.name, - } - - const formMethods = useForm({ - defaultValues, - mode: 'onChange', - }) - const { handleSubmit, formState, watch } = formMethods - const isValid = Object.keys(formState.errors).length === 0 // do not use formState.isValid because names can be empty - - const notAlreadyOwner = uniqueAddress(owners?.map((owner) => owner.value)) - const notCurrentSafe = addressIsNotCurrentSafe(safeAddress) - const combinedValidate = (address: string) => notAlreadyOwner(address) || notCurrentSafe(address) - - const address = watch('address') - - const { name, ens, resolving } = useAddressResolver(address) - - // Address book, ENS - const fallbackName = name || ens - - const onFormSubmit = handleSubmit((formData: OwnerData) => { - onSubmit({ - ...data, - newOwner: { - ...formData, - name: formData.name || fallbackName, - }, - }) - }) - - return ( - -
    - - - {isReplace - ? 'Review the owner you want to replace in the active Safe Account, then specify the new owner you want to replace it with:' - : 'Add a new owner to the active Safe Account.'} - - - {removedOwner && ( - - Current owner - - - )} - - - New owner - - - - - ), - }} - /> - - - - - - - - - -
    -
    - ) -} diff --git a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx b/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx deleted file mode 100644 index 835fc7986e..0000000000 --- a/src/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import EthHashInfo from '@/components/common/EthHashInfo' -import useSafeInfo from '@/hooks/useSafeInfo' -import { Box, Divider, Grid, Typography } from '@mui/material' -import css from './styles.module.css' -import type { ChangeOwnerData } from '@/components/settings/owner/AddOwnerDialog/DialogSteps/types' -import useAsync from '@/hooks/useAsync' -import { upsertAddressBookEntry } from '@/store/addressBookSlice' -import { useAppDispatch } from '@/store' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' -import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -import { sameAddress } from '@/utils/addresses' -import useAddressBook from '@/hooks/useAddressBook' -import React from 'react' -import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' -import { createAddOwnerTx, createSwapOwnerTx } from '@/services/tx/tx-sender' - -export const ReviewOwnerTxStep = ({ data, onSubmit }: { data: ChangeOwnerData; onSubmit: () => void }) => { - const { safe, safeAddress } = useSafeInfo() - const { chainId } = safe - const dispatch = useAppDispatch() - const addressBook = useAddressBook() - const { newOwner, removedOwner, threshold } = data - - const [safeTx, safeTxError] = useAsync(() => { - if (removedOwner) { - return createSwapOwnerTx({ - newOwnerAddress: newOwner.address, - oldOwnerAddress: removedOwner.address, - }) - } else { - return createAddOwnerTx({ - ownerAddress: newOwner.address, - threshold, - }) - } - }, [removedOwner, newOwner]) - - const isReplace = Boolean(removedOwner) - - const addAddressBookEntryAndSubmit = () => { - if (typeof newOwner.name !== 'undefined') { - dispatch( - upsertAddressBookEntry({ - chainId: chainId, - address: newOwner.address, - name: newOwner.name, - }), - ) - } - - trackEvent({ ...SETTINGS_EVENTS.SETUP.THRESHOLD, label: safe.threshold }) - trackEvent({ ...SETTINGS_EVENTS.SETUP.OWNERS, label: safe.owners.length }) - - onSubmit() - } - - return ( - - `1px solid ${palette.border.light}`} - > - - Details - - Name of the Safe Account: - - {addressBook[safeAddress] || 'No name'} - - Any transaction requires the confirmation of: - - - {threshold} out of {safe.owners.length + (isReplace ? 0 : 1)} owners - - - - [undefined, undefined, `1px solid ${palette.border.light}`]} - borderTop={({ palette }) => [`1px solid ${palette.border.light}`, undefined, 'none']} - > - {safe.owners.length} Safe Account owner(s) - - - {safe.owners - .filter((owner) => !removedOwner || !sameAddress(owner.value, removedOwner.address)) - .map((owner) => { - return ( - - ) - })} - - {removedOwner && ( - <> -
    - Removing owner ↓ -
    - - - - - - - )} -
    - Adding new owner ↓ -
    - - - - -
    -
    -
    - ) -} diff --git a/src/components/settings/owner/AddOwnerDialog/DialogSteps/SetThresholdStep.tsx b/src/components/settings/owner/AddOwnerDialog/DialogSteps/SetThresholdStep.tsx deleted file mode 100644 index 3e5168dbb5..0000000000 --- a/src/components/settings/owner/AddOwnerDialog/DialogSteps/SetThresholdStep.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import type { SelectChangeEvent } from '@mui/material' -import { Button, DialogContent, Grid, MenuItem, Select, Typography } from '@mui/material' -import type { SyntheticEvent } from 'react' -import { useState } from 'react' -import type { ChangeOwnerData } from '@/components/settings/owner/AddOwnerDialog/DialogSteps/types' -import useSafeInfo from '@/hooks/useSafeInfo' - -export const SetThresholdStep = ({ - data, - onSubmit, -}: { - data: ChangeOwnerData - onSubmit: (data: ChangeOwnerData) => void -}) => { - const { safe } = useSafeInfo() - const [selectedThreshold, setSelectedThreshold] = useState(data.threshold ?? 1) - - const handleChange = (event: SelectChangeEvent) => { - setSelectedThreshold(parseInt(event.target.value.toString())) - } - - const onSubmitHandler = (e: SyntheticEvent) => { - e.preventDefault() - onSubmit({ ...data, threshold: selectedThreshold }) - } - - const newNumberOfOwners = safe.owners.length + 1 - - return ( -
    - - Set the required owner confirmations: - - Any transaction requires the confirmation of: - - - - - - - out of {newNumberOfOwners} owner(s) - - - - - -
    - ) -} diff --git a/src/components/settings/owner/AddOwnerDialog/DialogSteps/styles.module.css b/src/components/settings/owner/AddOwnerDialog/DialogSteps/styles.module.css deleted file mode 100644 index 7ec06ea4e1..0000000000 --- a/src/components/settings/owner/AddOwnerDialog/DialogSteps/styles.module.css +++ /dev/null @@ -1,15 +0,0 @@ -.info { - background-color: var(--color-background-main); - align-items: center; - display: flex; - flex-direction: column; - padding: var(--space-1); -} - -.overline { - font-size: 11px; - line-height: 14px; - letter-spacing: 1px; - align-self: center; - text-transform: uppercase; -} diff --git a/src/components/settings/owner/AddOwnerDialog/DialogSteps/types.d.ts b/src/components/settings/owner/AddOwnerDialog/DialogSteps/types.d.ts deleted file mode 100644 index 6608336192..0000000000 --- a/src/components/settings/owner/AddOwnerDialog/DialogSteps/types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface ChangeOwnerData { - removedOwner?: OwnerData - newOwner: OwnerData - threshold?: number -} - -export interface OwnerData { - address: string - name?: string -} diff --git a/src/components/settings/owner/AddOwnerDialog/index.tsx b/src/components/settings/owner/AddOwnerDialog/index.tsx deleted file mode 100644 index 668c3e6891..0000000000 --- a/src/components/settings/owner/AddOwnerDialog/index.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { Button, SvgIcon } from '@mui/material' -import { useState } from 'react' -import AddIcon from '@/public/images/common/add.svg' -import { ChooseOwnerStep } from './DialogSteps/ChooseOwnerStep' - -import TxModal from '@/components/tx/TxModal' -import useSafeInfo from '@/hooks/useSafeInfo' -import { ReviewOwnerTxStep } from '@/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep' -import type { ChangeOwnerData } from '@/components/settings/owner/AddOwnerDialog/DialogSteps/types' -import { SetThresholdStep } from '@/components/settings/owner/AddOwnerDialog/DialogSteps/SetThresholdStep' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import Box from '@mui/material/Box' -import Track from '@/components/common/Track' -import { SETTINGS_EVENTS } from '@/services/analytics/events/settings' -import CheckWallet from '@/components/common/CheckWallet' - -const AddOwnerSteps: TxStepperProps['steps'] = [ - { - label: 'Add new owner', - render: (data, onSubmit) => , - }, - { - label: 'Set threshold', - render: (data, onSubmit) => , - }, - { - label: 'Review transaction', - render: (data, onSubmit) => , - }, -] - -export const AddOwnerDialog = () => { - const [open, setOpen] = useState(false) - - const { safe } = useSafeInfo() - - const handleClose = () => setOpen(false) - - const initialModalData: Partial = { threshold: safe.threshold } - - return ( - - - {(isOk) => ( - - - - )} - - - {open && } - - ) -} diff --git a/src/components/settings/owner/ChangeThresholdDialog/index.tsx b/src/components/settings/owner/ChangeThresholdDialog/index.tsx deleted file mode 100644 index 84d11659f4..0000000000 --- a/src/components/settings/owner/ChangeThresholdDialog/index.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import type { SelectChangeEvent } from '@mui/material' -import { Box, Button, DialogContent, Grid, MenuItem, Select, Typography } from '@mui/material' -import { useState } from 'react' - -import TxModal from '@/components/tx/TxModal' -import useSafeInfo from '@/hooks/useSafeInfo' - -import useAsync from '@/hooks/useAsync' - -import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' -import Track from '@/components/common/Track' -import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' -import { createUpdateThresholdTx } from '@/services/tx/tx-sender' -import CheckWallet from '@/components/common/CheckWallet' - -interface ChangeThresholdData { - threshold: number -} - -const ChangeThresholdSteps: TxStepperProps['steps'] = [ - { - label: 'Change threshold', - render: (data, onSubmit) => , - }, -] - -export const ChangeThresholdDialog = () => { - const [open, setOpen] = useState(false) - - const { safe } = useSafeInfo() - - const handleClose = () => setOpen(false) - - const initialModalData: ChangeThresholdData = { threshold: safe.threshold || 1 } - - return ( - - - {(isOk) => ( - - - - )} - - - {open && } - - ) -} - -const ChangeThresholdStep = ({ data, onSubmit }: { data: ChangeThresholdData; onSubmit: () => void }) => { - const { safe } = useSafeInfo() - const [selectedThreshold, setSelectedThreshold] = useState(safe.threshold) - const [isChanged, setChanged] = useState(false) - const isSameThreshold = selectedThreshold === safe.threshold - - const handleChange = (event: SelectChangeEvent) => { - const newThreshold = parseInt(event.target.value.toString()) - setSelectedThreshold(newThreshold) - setChanged(true) - } - - const [safeTx, safeTxError] = useAsync(() => { - if (!selectedThreshold) return - - return createUpdateThresholdTx(selectedThreshold) - }, [selectedThreshold]) - - const onChangeThreshold = () => { - trackEvent({ ...SETTINGS_EVENTS.SETUP.OWNERS, label: safe.owners.length }) - trackEvent({ ...SETTINGS_EVENTS.SETUP.THRESHOLD, label: selectedThreshold }) - - onSubmit() - } - - return ( - <> - - Any transaction will require the confirmation of: - - - - - - - - out of {safe.owners.length} owner(s) - - - - {isChanged && isSameThreshold ? ( - - Current policy is already set to {data.threshold} - - ) : ( - - {isChanged ? 'Previous policy was ' : 'Current policy is '} - - {data.threshold} out of {safe.owners.length} - - . - - )} - - - - - - - ) -} diff --git a/src/components/settings/owner/OwnerList/index.tsx b/src/components/settings/owner/OwnerList/index.tsx index 512b084e0d..01532c1f20 100644 --- a/src/components/settings/owner/OwnerList/index.tsx +++ b/src/components/settings/owner/OwnerList/index.tsx @@ -1,13 +1,20 @@ import EthHashInfo from '@/components/common/EthHashInfo' -import { AddOwnerDialog } from '@/components/settings/owner/AddOwnerDialog' +import AddOwnerFlow from '@/components/tx-flow/flows/AddOwner' import useAddressBook from '@/hooks/useAddressBook' import useSafeInfo from '@/hooks/useSafeInfo' -import { Box, Grid, Typography } from '@mui/material' -import { useMemo } from 'react' +import { Box, Grid, Typography, Button, SvgIcon, Tooltip, IconButton } from '@mui/material' +import { useContext, useMemo } from 'react' import { EditOwnerDialog } from '../EditOwnerDialog' -import { RemoveOwnerDialog } from '../RemoveOwnerDialog' -import { ReplaceOwnerDialog } from '../ReplaceOwnerDialog' +import ReplaceOwnerFlow from '@/components/tx-flow/flows/ReplaceOwner' +import RemoveOwnerFlow from '@/components/tx-flow/flows/RemoveOwner' import EnhancedTable from '@/components/common/EnhancedTable' +import AddIcon from '@/public/images/common/add.svg' +import Track from '@/components/common/Track' +import { SETTINGS_EVENTS } from '@/services/analytics/events/settings' +import CheckWallet from '@/components/common/CheckWallet' +import { TxModalContext } from '@/components/tx-flow' +import ReplaceOwnerIcon from '@/public/images/settings/setup/replace-owner.svg' +import DeleteIcon from '@/public/images/common/delete.svg' import tableCss from '@/components/common/EnhancedTable/styles.module.css' @@ -19,8 +26,11 @@ const headCells = [ export const OwnerList = () => { const addressBook = useAddressBook() const { safe } = useSafeInfo() + const { setTxFlow } = useContext(TxModalContext) const rows = useMemo(() => { + const showRemoveOwnerButton = safe.owners.length > 1 + return safe.owners.map((owner) => { const address = owner.value const name = addressBook[address] @@ -36,16 +46,48 @@ export const OwnerList = () => { sticky: true, content: (
    - + + {(isOk) => ( + + + setTxFlow()} + size="small" + disabled={!isOk} + > + + + + + )} + + - + + {showRemoveOwnerButton && ( + + {(isOk) => ( + + + setTxFlow()} + size="small" + disabled={!isOk} + > + + + + + )} + + )}
    ), }, }, } }) - }, [safe, addressBook]) + }, [safe.owners, safe.chainId, addressBook, setTxFlow]) return ( @@ -63,7 +105,23 @@ export const OwnerList = () => { - + + + + {(isOk) => ( + + + + )} + + diff --git a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx deleted file mode 100644 index b152ff6fef..0000000000 --- a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewRemoveOwnerTxStep.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import EthHashInfo from '@/components/common/EthHashInfo' -import useSafeInfo from '@/hooks/useSafeInfo' -import { Box, Divider, Grid, Typography } from '@mui/material' -import css from './styles.module.css' -import useAsync from '@/hooks/useAsync' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' -import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -import { sameAddress } from '@/utils/addresses' -import useAddressBook from '@/hooks/useAddressBook' -import type { RemoveOwnerData } from '..' -import React from 'react' -import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' -import { createRemoveOwnerTx } from '@/services/tx/tx-sender' - -export const ReviewRemoveOwnerTxStep = ({ data, onSubmit }: { data: RemoveOwnerData; onSubmit: () => void }) => { - const { safe, safeAddress } = useSafeInfo() - const addressBook = useAddressBook() - const { removedOwner, threshold } = data - - const [safeTx, safeTxError] = useAsync(async () => { - return createRemoveOwnerTx({ ownerAddress: removedOwner.address, threshold }) - }, [removedOwner.address, threshold]) - - const newOwnerLength = safe.owners.length - 1 - - const onFormSubmit = () => { - trackEvent({ ...SETTINGS_EVENTS.SETUP.THRESHOLD, label: safe.threshold }) - trackEvent({ ...SETTINGS_EVENTS.SETUP.OWNERS, label: safe.owners.length }) - - onSubmit() - } - - return ( - - `1px solid ${palette.border.light}`} - > - - Details - - Name of the Safe Account: - - {addressBook[safeAddress] || 'No name'} - - Any transaction requires the confirmation of: - - - {threshold} out of {newOwnerLength} owners - - - - [undefined, undefined, `1px solid ${palette.border.light}`]} - borderTop={({ palette }) => [`1px solid ${palette.border.light}`, undefined, 'none']} - > - {newOwnerLength} Safe Account owner(s) - - {safe.owners - .filter((owner) => !sameAddress(owner.value, removedOwner.address)) - .map((owner) => ( -
    - - - - -
    - ))} - { - <> -
    - Removing owner ↓ -
    - - - - - - - } -
    -
    -
    - ) -} diff --git a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx deleted file mode 100644 index 2fed2df8db..0000000000 --- a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/ReviewSelectedOwnerStep.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import EthHashInfo from '@/components/common/EthHashInfo' -import { Button, DialogContent, Typography } from '@mui/material' -import type { RemoveOwnerData } from '..' - -export const ReviewSelectedOwnerStep = ({ - data, - onSubmit, -}: { - data: RemoveOwnerData - onSubmit: (data: RemoveOwnerData) => void -}) => { - return ( -
    onSubmit(data)}> - - Review the owner you want to remove from the active Safe Account: - - - -
    - ) -} diff --git a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/SetThresholdStep.tsx b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/SetThresholdStep.tsx deleted file mode 100644 index fdad1591d7..0000000000 --- a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/SetThresholdStep.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import type { SelectChangeEvent } from '@mui/material' -import { Button, DialogContent, Grid, MenuItem, Select, Typography } from '@mui/material' -import type { SyntheticEvent } from 'react' -import { useState } from 'react' -import useSafeInfo from '@/hooks/useSafeInfo' -import type { RemoveOwnerData } from '..' - -export const SetThresholdStep = ({ - data, - onSubmit, -}: { - data: RemoveOwnerData - onSubmit: (data: RemoveOwnerData) => void -}) => { - const { safe } = useSafeInfo() - const [selectedThreshold, setSelectedThreshold] = useState(data.threshold ?? 1) - - const handleChange = (event: SelectChangeEvent) => { - setSelectedThreshold(parseInt(event.target.value.toString())) - } - - const onSubmitHandler = (e: SyntheticEvent) => { - e.preventDefault() - onSubmit({ ...data, threshold: selectedThreshold }) - } - - const newNumberOfOwners = safe ? safe.owners.length - 1 : 1 - - return ( -
    - - Set the required owner confirmations: - - Any transaction requires the confirmation of: - - - - - - - out of {newNumberOfOwners} owner(s) - - - - - -
    - ) -} diff --git a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/styles.module.css b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/styles.module.css deleted file mode 100644 index d3772b38d0..0000000000 --- a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/styles.module.css +++ /dev/null @@ -1,7 +0,0 @@ -.info { - background-color: var(--color-background-main); - align-items: center; - display: flex; - flex-direction: column; - padding: var(--space-1); -} diff --git a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/types.d.ts b/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/types.d.ts deleted file mode 100644 index 6608336192..0000000000 --- a/src/components/settings/owner/RemoveOwnerDialog/DialogSteps/types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface ChangeOwnerData { - removedOwner?: OwnerData - newOwner: OwnerData - threshold?: number -} - -export interface OwnerData { - address: string - name?: string -} diff --git a/src/components/settings/owner/RemoveOwnerDialog/index.tsx b/src/components/settings/owner/RemoveOwnerDialog/index.tsx deleted file mode 100644 index 00082e45ca..0000000000 --- a/src/components/settings/owner/RemoveOwnerDialog/index.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { IconButton, Tooltip, SvgIcon } from '@mui/material' -import { useState } from 'react' -import DeleteIcon from '@/public/images/common/delete.svg' -import TxModal from '@/components/tx/TxModal' -import useSafeInfo from '@/hooks/useSafeInfo' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import type { OwnerData } from './DialogSteps/types' -import { ReviewSelectedOwnerStep } from './DialogSteps/ReviewSelectedOwnerStep' -import { SetThresholdStep } from './DialogSteps/SetThresholdStep' -import { ReviewRemoveOwnerTxStep } from './DialogSteps/ReviewRemoveOwnerTxStep' -import Track from '@/components/common/Track' -import { SETTINGS_EVENTS } from '@/services/analytics/events/settings' -import CheckWallet from '@/components/common/CheckWallet' - -export type RemoveOwnerData = { - removedOwner: OwnerData - threshold: number -} - -const RemoveOwnerSteps: TxStepperProps['steps'] = [ - { - label: 'Remove owner', - render: (data, onSubmit) => , - }, - { - label: 'Set threshold', - render: (data, onSubmit) => , - }, - { - label: 'Review transaction', - render: (data, onSubmit) => , - }, -] - -export const RemoveOwnerDialog = ({ owner }: { owner: OwnerData }) => { - const [open, setOpen] = useState(false) - - const { safe } = useSafeInfo() - - const handleClose = () => setOpen(false) - - const showRemoveOwnerButton = safe.owners.length > 1 - - if (!showRemoveOwnerButton) { - return null - } - - const initialModalData: RemoveOwnerData = { - threshold: Math.min(safe.threshold, safe.owners.length - 1), - removedOwner: owner, - } - - return ( -
    - - {(isOk) => ( - - - setOpen(true)} size="small" disabled={!isOk}> - - - - - )} - - - {open && } -
    - ) -} diff --git a/src/components/settings/owner/ReplaceOwnerDialog/index.tsx b/src/components/settings/owner/ReplaceOwnerDialog/index.tsx deleted file mode 100644 index 1cda1147ff..0000000000 --- a/src/components/settings/owner/ReplaceOwnerDialog/index.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { IconButton, Tooltip, SvgIcon } from '@mui/material' -import { useState } from 'react' -import { ChooseOwnerStep } from '../AddOwnerDialog/DialogSteps/ChooseOwnerStep' - -import TxModal from '@/components/tx/TxModal' -import useSafeInfo from '@/hooks/useSafeInfo' -import { ReviewOwnerTxStep } from '@/components/settings/owner/AddOwnerDialog/DialogSteps/ReviewOwnerTxStep' -import type { ChangeOwnerData } from '@/components/settings/owner/AddOwnerDialog/DialogSteps/types' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import Track from '@/components/common/Track' -import { SETTINGS_EVENTS } from '@/services/analytics/events/settings' -import ReplaceOwnerIcon from '@/public/images/settings/setup/replace-owner.svg' -import CheckWallet from '@/components/common/CheckWallet' - -const ReplaceOwnerSteps: TxStepperProps['steps'] = [ - { - label: 'Replace owner', - render: (data, onSubmit) => , - }, - { - label: 'Review transaction', - render: (data, onSubmit) => , - }, -] - -export const ReplaceOwnerDialog = ({ address }: { address: string }) => { - const [open, setOpen] = useState(false) - - const handleClose = () => setOpen(false) - - const { safe } = useSafeInfo() - - const initialModalData: Partial = { - removedOwner: { address }, - threshold: safe.threshold, - } - - return ( -
    - - {(isOk) => ( - - - setOpen(true)} size="small" disabled={!isOk}> - - - - - )} - - - {open && } -
    - ) -} diff --git a/src/components/sidebar/NewTxButton/index.tsx b/src/components/sidebar/NewTxButton/index.tsx index eb7659d703..7bd49a6b4a 100644 --- a/src/components/sidebar/NewTxButton/index.tsx +++ b/src/components/sidebar/NewTxButton/index.tsx @@ -1,45 +1,35 @@ -import { Suspense, useState, type ReactElement } from 'react' -import dynamic from 'next/dynamic' +import { type ReactElement, useContext } from 'react' import Button from '@mui/material/Button' import css from './styles.module.css' -import { trackEvent, OVERVIEW_EVENTS } from '@/services/analytics' +import { OVERVIEW_EVENTS, trackEvent } from '@/services/analytics' import CheckWallet from '@/components/common/CheckWallet' - -const NewTxModal = dynamic(() => import('@/components/tx/modals/NewTxModal')) +import { TxModalContext } from '@/components/tx-flow' +import NewTxMenu from '@/components/tx-flow/flows/NewTx' const NewTxButton = (): ReactElement => { - const [txOpen, setTxOpen] = useState(false) + const { setTxFlow } = useContext(TxModalContext) const onClick = () => { - setTxOpen(true) - + setTxFlow(, undefined, false) trackEvent(OVERVIEW_EVENTS.NEW_TRANSACTION) } return ( - <> - - {(isOk) => ( - - )} - - - {txOpen && ( - - setTxOpen(false)} /> - + + {(isOk) => ( + )} - + ) } diff --git a/src/components/sidebar/SafeList/styles.module.css b/src/components/sidebar/SafeList/styles.module.css index 2074c89fee..275ee9c000 100644 --- a/src/components/sidebar/SafeList/styles.module.css +++ b/src/components/sidebar/SafeList/styles.module.css @@ -37,7 +37,7 @@ padding: 0 0; } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .list { overflow-x: auto; } diff --git a/src/components/sidebar/Sidebar/styles.module.css b/src/components/sidebar/Sidebar/styles.module.css index f6d1be7b18..08b9dff4c3 100644 --- a/src/components/sidebar/Sidebar/styles.module.css +++ b/src/components/sidebar/Sidebar/styles.module.css @@ -64,7 +64,7 @@ transform: translateX(-25%); } -@media (max-width: 900px) { +@media (max-width: 899.95px) { .container { padding-top: var(--header-height); } diff --git a/src/components/transactions/BatchExecuteButton/index.tsx b/src/components/transactions/BatchExecuteButton/index.tsx index 4cb0a891a0..301fb0b9b3 100644 --- a/src/components/transactions/BatchExecuteButton/index.tsx +++ b/src/components/transactions/BatchExecuteButton/index.tsx @@ -1,17 +1,18 @@ -import { useCallback, useContext, useState } from 'react' +import { useCallback, useContext } from 'react' import { Button, Tooltip } from '@mui/material' import { BatchExecuteHoverContext } from '@/components/transactions/BatchExecuteButton/BatchExecuteHoverProvider' import { useAppSelector } from '@/store' import { selectPendingTxs } from '@/store/pendingTxsSlice' import useBatchedTxs from '@/hooks/useBatchedTxs' -import BatchExecuteModal from '@/components/tx/modals/BatchExecuteModal' +import ExecuteBatchFlow from '@/components/tx-flow/flows/ExecuteBatch' import { trackEvent } from '@/services/analytics' import { TX_LIST_EVENTS } from '@/services/analytics/events/txList' import useWallet from '@/hooks/wallets/useWallet' import useTxQueue from '@/hooks/useTxQueue' +import { TxModalContext } from '@/components/tx-flow' const BatchExecuteButton = () => { - const [open, setOpen] = useState(false) + const { setTxFlow } = useContext(TxModalContext) const pendingTxs = useAppSelector(selectPendingTxs) const hoverContext = useContext(BatchExecuteHoverContext) const { page } = useTxQueue() @@ -36,7 +37,7 @@ const BatchExecuteButton = () => { label: batchableTransactions.length, }) - setOpen(true) + setTxFlow(, undefined, false) } return ( @@ -63,7 +64,6 @@ const BatchExecuteButton = () => { - {open && setOpen(false)} initialData={[{ txs: batchableTransactions }]} />} ) } diff --git a/src/components/transactions/ExecuteTxButton/index.tsx b/src/components/transactions/ExecuteTxButton/index.tsx index 302310b933..1cc4d8e60a 100644 --- a/src/components/transactions/ExecuteTxButton/index.tsx +++ b/src/components/transactions/ExecuteTxButton/index.tsx @@ -1,11 +1,10 @@ import type { SyntheticEvent } from 'react' -import { useState, type ReactElement, useContext } from 'react' +import { type ReactElement, useContext } from 'react' import { type TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' import { Button, Tooltip, SvgIcon } from '@mui/material' import useSafeInfo from '@/hooks/useSafeInfo' import { isMultisigExecutionInfo } from '@/utils/transaction-guards' -import ExecuteTxModal from '@/components/tx/modals/ExecuteTxModal' import useIsPending from '@/hooks/useIsPending' import RocketIcon from '@/public/images/transactions/rocket.svg' import IconButton from '@mui/material/IconButton' @@ -15,6 +14,8 @@ import { ReplaceTxHoverContext } from '../GroupedTxListItems/ReplaceTxHoverProvi import CheckWallet from '@/components/common/CheckWallet' import { useSafeSDK } from '@/hooks/coreSDK/safeCoreSDK' import { getTxButtonTooltip } from '@/components/transactions/utils' +import { TxModalContext } from '@/components/tx-flow' +import ConfirmTxFlow from '@/components/tx-flow/flows/ConfirmTx' const ExecuteTxButton = ({ txSummary, @@ -23,7 +24,7 @@ const ExecuteTxButton = ({ txSummary: TransactionSummary compact?: boolean }): ReactElement => { - const [open, setOpen] = useState(false) + const { setTxFlow } = useContext(TxModalContext) const { safe } = useSafeInfo() const txNonce = isMultisigExecutionInfo(txSummary.executionInfo) ? txSummary.executionInfo.nonce : undefined const isPending = useIsPending(txSummary.id) @@ -37,7 +38,7 @@ const ExecuteTxButton = ({ const onClick = (e: SyntheticEvent) => { e.stopPropagation() - setOpen(true) + setTxFlow(, undefined, false) } const onMouseEnter = () => { @@ -83,8 +84,6 @@ const ExecuteTxButton = ({ )} - - {open && setOpen(false)} initialData={[txSummary]} />} ) } diff --git a/src/components/transactions/GroupedTxListItems/styles.module.css b/src/components/transactions/GroupedTxListItems/styles.module.css index 6fc69fbf51..e9581dfbb2 100644 --- a/src/components/transactions/GroupedTxListItems/styles.module.css +++ b/src/components/transactions/GroupedTxListItems/styles.module.css @@ -31,7 +31,7 @@ text-decoration: line-through; } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .disclaimerContainer { gap: var(--space-1); align-items: flex-start; diff --git a/src/components/transactions/RejectTxButton/index.tsx b/src/components/transactions/RejectTxButton/index.tsx index 88590cf96e..33289fb1a1 100644 --- a/src/components/transactions/RejectTxButton/index.tsx +++ b/src/components/transactions/RejectTxButton/index.tsx @@ -1,10 +1,9 @@ import type { TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' -import { Button, Tooltip, SvgIcon } from '@mui/material' +import { Button, SvgIcon, Tooltip } from '@mui/material' -import type { SyntheticEvent, ReactElement } from 'react' -import { useState, Suspense } from 'react' +import type { ReactElement } from 'react' +import { useContext } from 'react' import { isMultisigExecutionInfo } from '@/utils/transaction-guards' -import dynamic from 'next/dynamic' import useIsPending from '@/hooks/useIsPending' import IconButton from '@mui/material/IconButton' import ErrorIcon from '@/public/images/notifications/error.svg' @@ -13,8 +12,8 @@ import { TX_LIST_EVENTS } from '@/services/analytics/events/txList' import CheckWallet from '@/components/common/CheckWallet' import { useSafeSDK } from '@/hooks/coreSDK/safeCoreSDK' import { getTxButtonTooltip } from '@/components/transactions/utils' - -const NewTxModal = dynamic(() => import('@/components/tx/modals/NewTxModal')) +import { TxModalContext } from '@/components/tx-flow' +import ReplaceTxMenu from '@/components/tx-flow/flows/ReplaceTx' const RejectTxButton = ({ txSummary, @@ -23,7 +22,8 @@ const RejectTxButton = ({ txSummary: TransactionSummary compact?: boolean }): ReactElement | null => { - const [open, setOpen] = useState(false) + const { setTxFlow } = useContext(TxModalContext) + const txNonce = isMultisigExecutionInfo(txSummary.executionInfo) ? txSummary.executionInfo.nonce : undefined const isPending = useIsPending(txSummary.id) const safeSDK = useSafeSDK() @@ -31,39 +31,31 @@ const RejectTxButton = ({ const tooltipTitle = getTxButtonTooltip('Replace', { hasSafeSDK: !!safeSDK }) - const onClick = (e: SyntheticEvent) => { - e.stopPropagation() - setOpen(true) + const openReplacementModal = () => { + if (!txNonce) return + setTxFlow() } return ( - <> - - {(isOk) => ( - - {compact ? ( - - - - - - - - ) : ( - - )} - - )} - - - {open && ( - - setOpen(false)} txNonce={txNonce} /> - + + {(isOk) => ( + + {compact ? ( + + + + + + + + ) : ( + + )} + )} - + ) } diff --git a/src/components/transactions/SignTxButton/index.tsx b/src/components/transactions/SignTxButton/index.tsx index 2c0b3b4c0f..fbd35d7901 100644 --- a/src/components/transactions/SignTxButton/index.tsx +++ b/src/components/transactions/SignTxButton/index.tsx @@ -1,11 +1,10 @@ import type { SyntheticEvent } from 'react' -import { useState, type ReactElement } from 'react' +import { useContext, type ReactElement } from 'react' import { type TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' import { Button, Tooltip } from '@mui/material' import { isSignableBy } from '@/utils/transaction-guards' import useWallet from '@/hooks/wallets/useWallet' -import ConfirmTxModal from '@/components/tx/modals/ConfirmTxModal' import useIsPending from '@/hooks/useIsPending' import IconButton from '@mui/material/IconButton' import CheckIcon from '@mui/icons-material/Check' @@ -14,6 +13,8 @@ import { TX_LIST_EVENTS } from '@/services/analytics/events/txList' import CheckWallet from '@/components/common/CheckWallet' import { useSafeSDK } from '@/hooks/coreSDK/safeCoreSDK' import { getTxButtonTooltip } from '@/components/transactions/utils' +import { TxModalContext } from '@/components/tx-flow' +import ConfirmTxFlow from '@/components/tx-flow/flows/ConfirmTx' const SignTxButton = ({ txSummary, @@ -22,7 +23,7 @@ const SignTxButton = ({ txSummary: TransactionSummary compact?: boolean }): ReactElement => { - const [open, setOpen] = useState(false) + const { setTxFlow } = useContext(TxModalContext) const wallet = useWallet() const isSignable = isSignableBy(txSummary, wallet?.address || '') const isPending = useIsPending(txSummary.id) @@ -34,33 +35,29 @@ const SignTxButton = ({ const onClick = (e: SyntheticEvent) => { e.stopPropagation() - setOpen(true) + setTxFlow(, undefined, false) } return ( - <> - - {(isOk) => ( - - {compact ? ( - - - - - - - - ) : ( - - )} - - )} - - - {open && setOpen(false)} initialData={[txSummary]} />} - + + {(isOk) => ( + + {compact ? ( + + + + + + + + ) : ( + + )} + + )} + ) } diff --git a/src/components/transactions/TxDetails/SafeTxGasForm.tsx b/src/components/transactions/TxDetails/SafeTxGasForm.tsx new file mode 100644 index 0000000000..5cbae524ca --- /dev/null +++ b/src/components/transactions/TxDetails/SafeTxGasForm.tsx @@ -0,0 +1,79 @@ +import { useContext, useState } from 'react' +import { Link, Box, Paper, Button } from '@mui/material' +import { useForm } from 'react-hook-form' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' +import NumberField from '@/components/common/NumberField' +import useSafeInfo from '@/hooks/useSafeInfo' +import { isLegacyVersion } from '@/hooks/coreSDK/safeCoreSDK' + +type FormFields = { + safeTxGas: number +} + +const Form = ({ onSubmit }: { onSubmit: () => void }) => { + const { safeTxGas = 0, setSafeTxGas } = useContext(SafeTxContext) + + const formMethods = useForm({ + defaultValues: { + safeTxGas, + }, + mode: 'onChange', + }) + + const onFormSubmit = (values: FormFields) => { + setSafeTxGas(values.safeTxGas || 0) + onSubmit() + } + + // Close the form w/o submitting if the user clicks outside of it + const onBlur = () => { + setTimeout(onSubmit, 100) + } + + return ( + +
    + + + +
    + ) +} + +const SafeTxGasForm = () => { + const { safeTx, safeTxGas = 0 } = useContext(SafeTxContext) + const { safe } = useSafeInfo() + const isOldSafe = safe.version && isLegacyVersion(safe.version) + const isEditable = safeTx?.signatures.size === 0 && (safeTxGas > 0 || isOldSafe) + const [editing, setEditing] = useState(false) + + return ( + + {safeTxGas} + + {isEditable && ( + setEditing(true)} fontSize="small"> + Edit + + )} + + {editing &&
    setEditing(false)} />} + + ) +} + +export default SafeTxGasForm diff --git a/src/components/transactions/TxDetails/Summary/TxDataRow/index.tsx b/src/components/transactions/TxDetails/Summary/TxDataRow/index.tsx index b5361ccb57..893dc08503 100644 --- a/src/components/transactions/TxDetails/Summary/TxDataRow/index.tsx +++ b/src/components/transactions/TxDetails/Summary/TxDataRow/index.tsx @@ -4,6 +4,7 @@ import { Typography } from '@mui/material' import { hexDataLength } from 'ethers/lib/utils' import type { ReactElement, ReactNode } from 'react' import css from './styles.module.css' +import valueCss from '@/components/transactions/TxDetails/TxData/DecodedData/ValueArray/styles.module.css' import EthHashInfo from '@/components/common/EthHashInfo' type TxDataRowProps = { @@ -31,7 +32,11 @@ export const generateDataRowValue = ( switch (type) { case 'hash': case 'address': - return + return ( +
    + +
    + ) case 'rawData': return (
    diff --git a/src/components/transactions/TxDetails/Summary/TxDataRow/styles.module.css b/src/components/transactions/TxDetails/Summary/TxDataRow/styles.module.css index b27dff0d8c..91bad958c2 100644 --- a/src/components/transactions/TxDetails/Summary/TxDataRow/styles.module.css +++ b/src/components/transactions/TxDetails/Summary/TxDataRow/styles.module.css @@ -26,7 +26,7 @@ align-items: center; } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .gridRow { grid-template-columns: 1fr; gap: 0; diff --git a/src/components/transactions/TxDetails/Summary/index.tsx b/src/components/transactions/TxDetails/Summary/index.tsx index ff39c72872..24eb2a0ef4 100644 --- a/src/components/transactions/TxDetails/Summary/index.tsx +++ b/src/components/transactions/TxDetails/Summary/index.tsx @@ -7,6 +7,8 @@ import type { TransactionDetails } from '@safe-global/safe-gateway-typescript-sd import { Operation } from '@safe-global/safe-gateway-typescript-sdk' import { dateString } from '@/utils/formatters' import css from './styles.module.css' +import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' +import SafeTxGasForm from '../SafeTxGasForm' interface Props { txDetails: TransactionDetails @@ -69,3 +71,17 @@ const Summary = ({ txDetails, defaultExpanded = false }: Props): ReactElement => } export default Summary + +export const PartialSummary = ({ safeTx }: { safeTx: SafeTransaction }) => { + const txData = safeTx.data + return ( + <> + + + + {txData.baseGas} + {generateDataRowValue(txData.refundReceiver, 'hash', true)} + {generateDataRowValue(txData.data, 'rawData')} + + ) +} diff --git a/src/components/transactions/TxDetails/TxData/DecodedData/Multisend/index.tsx b/src/components/transactions/TxDetails/TxData/DecodedData/Multisend/index.tsx index b592b371c6..892cfebb15 100644 --- a/src/components/transactions/TxDetails/TxData/DecodedData/Multisend/index.tsx +++ b/src/components/transactions/TxDetails/TxData/DecodedData/Multisend/index.tsx @@ -5,8 +5,9 @@ import { useState, useEffect } from 'react' import type { Dispatch, ReactElement, SetStateAction } from 'react' import type { AccordionProps } from '@mui/material/Accordion/Accordion' import SingleTxDecoded from '@/components/transactions/TxDetails/TxData/DecodedData/SingleTxDecoded' -import { Box, Button, Divider, Stack } from '@mui/material' +import { Button, Divider, Stack } from '@mui/material' import css from './styles.module.css' +import classnames from 'classnames' type MultisendProps = { txData?: TransactionData @@ -14,20 +15,24 @@ type MultisendProps = { compact?: boolean } -const MultisendActionsHeader = ({ +export const MultisendActionsHeader = ({ setOpen, amount, + compact = false, + title = 'All actions', }: { setOpen: Dispatch | undefined>> amount: number + compact?: boolean + title?: string }) => { const onClickAll = (expanded: boolean) => () => { setOpen(Array(amount).fill(expanded)) } return ( -
    - All actions +
    + {title} }> + + ) +} + +export const SendNFTsButton = () => { + const router = useRouter() + + return ( + + + + + + ) +} + +export const TxBuilderButton = () => { + const txBuilder = useTxBuilderApp() + if (!txBuilder?.app) return null + + return ( + + + + + + + + ) +} diff --git a/src/components/tx-flow/common/TxCard/index.tsx b/src/components/tx-flow/common/TxCard/index.tsx new file mode 100644 index 0000000000..85ec9aa00b --- /dev/null +++ b/src/components/tx-flow/common/TxCard/index.tsx @@ -0,0 +1,15 @@ +import type { ReactNode } from 'react' +import { Card, CardContent } from '@mui/material' +import css from '../styles.module.css' + +const sx = { my: 2, border: 0 } + +const TxCard = ({ children }: { children: ReactNode }) => { + return ( + + {children} + + ) +} + +export default TxCard diff --git a/src/components/tx-flow/common/TxLayout/index.tsx b/src/components/tx-flow/common/TxLayout/index.tsx new file mode 100644 index 0000000000..652f633055 --- /dev/null +++ b/src/components/tx-flow/common/TxLayout/index.tsx @@ -0,0 +1,162 @@ +import { type ComponentType, type ReactElement, type ReactNode, useContext, useEffect, useState } from 'react' +import { Box, Container, Grid, Typography, Button, Paper, SvgIcon, IconButton, useMediaQuery } from '@mui/material' +import { useTheme } from '@mui/material/styles' +import type { TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' +import classnames from 'classnames' +import { ProgressBar } from '@/components/common/ProgressBar' +import SafeTxProvider, { SafeTxContext } from '../../SafeTxProvider' +import { TxInfoProvider } from '@/components/tx-flow/TxInfoProvider' +import TxNonce from '../TxNonce' +import TxStatusWidget from '../TxStatusWidget' +import css from './styles.module.css' +import { TxSimulationMessage } from '@/components/tx/security/tenderly' +import SafeLogo from '@/public/images/logo-no-text.svg' +import { RedefineMessage } from '@/components/tx/security/redefine' +import { TxSecurityProvider } from '@/components/tx/security/shared/TxSecurityContext' +import ChainIndicator from '@/components/common/ChainIndicator' + +const TxLayoutHeader = ({ + hideNonce, + icon, + subtitle, +}: { + hideNonce: TxLayoutProps['hideNonce'] + icon: TxLayoutProps['icon'] + subtitle: TxLayoutProps['subtitle'] +}) => { + const { nonceNeeded } = useContext(SafeTxContext) + + if (hideNonce && !icon && !subtitle) return null + + return ( + + + {icon && ( +
    + +
    + )} + + + {subtitle} + +
    + + {!hideNonce && nonceNeeded && } +
    + ) +} + +type TxLayoutProps = { + title: ReactNode + children: ReactNode + subtitle?: ReactNode + icon?: ComponentType + step?: number + txSummary?: TransactionSummary + onBack?: () => void + hideNonce?: boolean + isBatch?: boolean + isReplacement?: boolean +} + +const TxLayout = ({ + title, + subtitle, + icon, + children, + step = 0, + txSummary, + onBack, + hideNonce = false, + isBatch = false, + isReplacement = false, +}: TxLayoutProps): ReactElement => { + const [statusVisible, setStatusVisible] = useState(true) + + const theme = useTheme() + const isSmallScreen = useMediaQuery(theme.breakpoints.down('md')) + + const steps = Array.isArray(children) ? children : [children] + const progress = Math.round(((step + 1) / steps.length) * 100) + + useEffect(() => { + setStatusVisible(!isSmallScreen) + }, [isSmallScreen]) + + const toggleStatus = () => { + setStatusVisible((prev) => !prev) + } + + return ( + + + + + + + + + {title} + + + + + + + + + + + + + + + + + + + +
    + {steps[step]} + + {onBack && step > 0 && ( + + )} +
    +
    + + + {statusVisible && ( + setStatusVisible(false)} + isReplacement={isReplacement} + isBatch={isBatch} + /> + )} + + + + + + + +
    +
    +
    +
    +
    +
    + ) +} + +export default TxLayout diff --git a/src/components/tx-flow/common/TxLayout/styles.module.css b/src/components/tx-flow/common/TxLayout/styles.module.css new file mode 100644 index 0000000000..504c07542d --- /dev/null +++ b/src/components/tx-flow/common/TxLayout/styles.module.css @@ -0,0 +1,152 @@ +.container { + margin-top: 42px; +} + +.header { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.headerInner { + display: flex; + justify-content: space-between; + align-items: center; + padding: var(--space-3); + border-bottom: 1px solid var(--color-border-light); +} + +.step { + position: relative; +} + +/* Back button */ +.backButton { + position: absolute; + left: var(--space-3); + bottom: var(--space-3); +} + +.step :global(.MuiCard-root:first-child) { + border-top-right-radius: 0; + border-top-left-radius: 0; + margin-top: 0; +} + +/* Submit button */ +.step :global(.MuiCardActions-root) { + display: flex; + flex-direction: column; + padding: 0; + margin-top: var(--space-3); +} + +.step :global(.MuiCardActions-root) > * { + align-self: flex-end; +} + +.icon { + width: 32px; + height: 32px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + border-radius: 6px; + border: 1px solid var(--color-border-light); + margin-right: var(--space-2); +} + +.icon svg { + height: 16px; + width: auto; +} + +.step :global(.MuiAccordionSummary-content), +.step :global(.MuiAccordionSummary-content) p { + font-weight: bold; + font-size: 14px; +} + +.step :global(.MuiAccordionSummary-expandIconWrapper) { + margin-left: var(--space-2); +} + +.statusButton { + position: absolute; + top: 0; + right: 57px; + color: var(--color-text-primary); + padding: var(--space-2); + border-left: 1px solid var(--color-border-light); + border-right: 1px solid var(--color-border-light); + border-radius: 0; + width: 24px; + height: 24px; + box-sizing: content-box; + display: none; +} + +.sticky { + display: flex; + flex-direction: column; + gap: var(--space-2); + position: sticky; + top: var(--space-2); + margin-top: var(--space-2); +} + +.titleWrapper { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--space-2); +} + +@media (max-width: 899.95px) { + .widget { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -1; + } + + .widget.active { + z-index: 1; + } + + .widget :global .MuiPaper-root { + height: 100%; + } + + .titleWrapper { + position: absolute; + top: 12px; + left: var(--space-2); + margin-bottom: 0; + width: calc(100% - 145px); + } + + .title { + font-size: 16px; + } + + .container { + padding: 0; + } + + .progressBar { + display: none; + } + + .step :global(.MuiCard-root), + .header { + border-radius: 0; + } + + .statusButton { + display: inline-flex; + } +} diff --git a/src/components/tx-flow/common/TxNonce/index.tsx b/src/components/tx-flow/common/TxNonce/index.tsx new file mode 100644 index 0000000000..378afc43c5 --- /dev/null +++ b/src/components/tx-flow/common/TxNonce/index.tsx @@ -0,0 +1,214 @@ +import { memo, type ReactElement, useContext, useMemo } from 'react' +import { + Autocomplete, + Box, + IconButton, + InputAdornment, + Skeleton, + Tooltip, + Popper, + type PopperProps, + type MenuItemProps, + MenuItem, + Typography, +} from '@mui/material' +import { Controller, useForm } from 'react-hook-form' + +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' +import RotateLeftIcon from '@mui/icons-material/RotateLeft' +import NumberField from '@/components/common/NumberField' +import { useQueuedTxByNonce } from '@/hooks/useTxQueue' +import useSafeInfo from '@/hooks/useSafeInfo' +import useAddressBook from '@/hooks/useAddressBook' +import { getLatestTransactions } from '@/utils/tx-list' +import { getTransactionType } from '@/hooks/useTransactionType' +import usePreviousNonces from '@/hooks/usePreviousNonces' +import { isRejectionTx } from '@/utils/transactions' + +import css from './styles.module.css' +import classNames from 'classnames' + +const CustomPopper = function (props: PopperProps) { + return +} + +const NonceFormOption = memo(function NonceFormOption({ + nonce, + menuItemProps, +}: { + nonce: string + menuItemProps: MenuItemProps +}): ReactElement { + const addressBook = useAddressBook() + const transactions = useQueuedTxByNonce(Number(nonce)) + + const label = useMemo(() => { + const [{ transaction }] = getLatestTransactions(transactions) + return getTransactionType(transaction, addressBook).text + }, [addressBook, transactions]) + + return ( + + {nonce} ({label} transaction) + + ) +}) + +const getFieldMinWidth = (value: string): string => { + const MIN_CHARS = 5 + const MAX_WIDTH = '200px' + + return `clamp(calc(${MIN_CHARS}ch + 6px), calc(${Math.max(MIN_CHARS, value.length)}ch + 6px), ${MAX_WIDTH})` +} + +enum TxNonceFormFieldNames { + NONCE = 'nonce', +} + +const TxNonceForm = ({ nonce, recommendedNonce }: { nonce: string; recommendedNonce: string }) => { + const { safeTx, setNonce } = useContext(SafeTxContext) + const previousNonces = usePreviousNonces().map((nonce) => nonce.toString()) + const { safe } = useSafeInfo() + + const isEditable = !safeTx || safeTx?.signatures.size === 0 + const readOnly = !isEditable || isRejectionTx(safeTx) + + const formMethods = useForm({ + defaultValues: { + [TxNonceFormFieldNames.NONCE]: nonce, + }, + mode: 'all', + }) + + const resetNonce = () => { + formMethods.setValue(TxNonceFormFieldNames.NONCE, recommendedNonce) + } + + return ( + { + const newNonce = Number(value) + + if (isNaN(newNonce)) { + return 'Nonce must be a number' + } + + if (newNonce < safe.nonce) { + return `Nonce can't be lower than ${safe.nonce}` + } + + if (newNonce >= Number.MAX_SAFE_INTEGER) { + return 'Nonce is too high' + } + + // Update context with valid nonce + setNonce(newNonce) + }, + }} + render={({ field, fieldState }) => { + if (readOnly) { + return ( + + {nonce} + + ) + } + + const showRecommendedNonceButton = recommendedNonce !== field.value + + return ( + field.onChange(value)} + onInputChange={(_, value) => field.onChange(value)} + onBlur={() => { + field.onBlur() + + if (fieldState.error) { + formMethods.setValue(field.name, recommendedNonce.toString()) + } + }} + options={[recommendedNonce, ...previousNonces]} + getOptionLabel={(option) => option.toString()} + renderOption={(props, option) => { + return option === recommendedNonce ? ( + + {option} (recommended nonce) + + ) : ( + + ) + }} + disableClearable + componentsProps={{ + paper: { + elevation: 2, + }, + }} + renderInput={(params) => { + return ( + + + + + + + + + ) : null, + }} + className={classNames([ + css.input, + { + [css.withAdornment]: showRecommendedNonceButton, + }, + ])} + sx={{ + minWidth: getFieldMinWidth(field.value), + }} + /> + + ) + }} + PopperComponent={CustomPopper} + /> + ) + }} + /> + ) +} + +const skeletonMinWidth = getFieldMinWidth('') + +const TxNonce = () => { + const { nonce, recommendedNonce } = useContext(SafeTxContext) + + return ( + + Nonce{' '} + + # + + {nonce === undefined || recommendedNonce === undefined ? ( + + ) : ( + + )} + + ) +} + +export default TxNonce diff --git a/src/components/tx-flow/common/TxNonce/styles.module.css b/src/components/tx-flow/common/TxNonce/styles.module.css new file mode 100644 index 0000000000..614c607033 --- /dev/null +++ b/src/components/tx-flow/common/TxNonce/styles.module.css @@ -0,0 +1,19 @@ +.input :global .MuiOutlinedInput-root { + padding: 0; +} + +.input input { + font-weight: bold; + min-width: 0px !important; +} + +.input.withAdornment input { + padding-right: 24px !important; +} + +.adornment { + margin-left: 0; + margin-right: 4px; + position: absolute; + right: 0; +} diff --git a/src/components/tx-flow/common/TxStatusWidget/index.tsx b/src/components/tx-flow/common/TxStatusWidget/index.tsx new file mode 100644 index 0000000000..30862c0516 --- /dev/null +++ b/src/components/tx-flow/common/TxStatusWidget/index.tsx @@ -0,0 +1,115 @@ +import { Divider, IconButton, List, ListItem, ListItemIcon, ListItemText, Paper, Typography } from '@mui/material' +import CreatedIcon from '@/public/images/messages/created.svg' +import SignedIcon from '@/public/images/messages/signed.svg' +import { type TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' +import useSafeInfo from '@/hooks/useSafeInfo' +import { isMultisigExecutionInfo, isSignableBy } from '@/utils/transaction-guards' +import classnames from 'classnames' +import css from './styles.module.css' +import CloseIcon from '@mui/icons-material/Close' +import useWallet from '@/hooks/wallets/useWallet' +import SafeLogo from '@/public/images/logo-no-text.svg' +import { useContext } from 'react' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' + +const confirmedMessage = (threshold: number, confirmations: number) => { + return ( + <> + Confirmed ({confirmations} of {threshold}) + + ) +} + +const TxStatusWidget = ({ + step, + txSummary, + handleClose, + isReplacement = false, + isBatch = false, +}: { + step: number + txSummary?: TransactionSummary + handleClose: () => void + isReplacement?: boolean + isBatch?: boolean +}) => { + const wallet = useWallet() + const { safe } = useSafeInfo() + const { nonceNeeded } = useContext(SafeTxContext) + const { threshold } = safe + + const { executionInfo = undefined } = txSummary || {} + const { confirmationsSubmitted = 0 } = isMultisigExecutionInfo(executionInfo) ? executionInfo : {} + + const isConfirmedStepIncomplete = step < 1 && !confirmationsSubmitted + const canSign = txSummary ? isSignableBy(txSummary, wallet?.address || '') : true + + return ( + +
    + + + Transaction status + + + + +
    + + + +
    + + + + + + + {isReplacement ? 'Create replacement transaction' : isBatch ? 'Queue transactions' : 'Create'} + + + + + + + + + {isBatch ? ( + 'Create batch' + ) : !nonceNeeded ? ( + 'Confirmed' + ) : ( + <> + {confirmedMessage(threshold, confirmationsSubmitted)} + {canSign && ( + + +1 + + )} + + )} + + + + + + + + Execute + + + {isReplacement && ( + + + + + Transaction is replaced + + )} + +
    +
    + ) +} + +export default TxStatusWidget diff --git a/src/components/tx-flow/common/TxStatusWidget/styles.module.css b/src/components/tx-flow/common/TxStatusWidget/styles.module.css new file mode 100644 index 0000000000..80817f9cd0 --- /dev/null +++ b/src/components/tx-flow/common/TxStatusWidget/styles.module.css @@ -0,0 +1,93 @@ +.header { + padding: var(--space-3); + display: flex; + flex-direction: column; + align-items: center; + gap: var(--space-1); +} + +.content { + padding: var(--space-3); +} + +.status { + padding: 0; +} + +.status::before { + content: ''; + position: absolute; + border-left: 2px solid var(--color-border-light); + left: 15px; + top: 20px; + height: calc(100% - 40px); +} + +.status :global .MuiListItem-root:first-of-type { + padding-top: 0; +} + +.status :global .MuiListItem-root { + padding-left: 0; + padding-right: 0; +} + +.status :global .MuiListItemIcon-root { + color: var(--color-primary-main); + justify-content: center; + min-width: 32px; + padding: var(--space-1); + background-color: var(--color-background-paper); +} + +.incomplete > * { + color: var(--color-text-secondary) !important; +} + +.close { + color: var(--color-border-main); + padding: var(--space-2); + border-left: 1px solid var(--color-border-light); + border-radius: 0; + margin-left: auto; + display: none; +} + +.badge { + margin-left: var(--space-1); + padding-right: 2px; + border-radius: 50%; + width: var(--space-3); + height: var(--space-3); + display: inline-flex; + align-items: center; + justify-content: center; + background-color: var(--color-secondary-main); + color: var(--color-text-primary); +} + +[data-theme='dark'] .badge { + background-color: var(--color-primary-main); + color: var(--color-text-secondary); +} + +@media (max-width: 899.95px) { + .header { + padding: 0; + flex-direction: row; + } + + .logo { + width: 24px; + height: 24px; + margin-left: 16px; + } + + .title { + font-size: 16px; + } + + .close { + display: flex; + } +} diff --git a/src/components/tx-flow/common/constants.ts b/src/components/tx-flow/common/constants.ts new file mode 100644 index 0000000000..60e9de90a6 --- /dev/null +++ b/src/components/tx-flow/common/constants.ts @@ -0,0 +1,4 @@ +export const TOOLTIP_TITLES = { + THRESHOLD: + 'The threshold of a Safe Account specifies how many owners need to confirm a Safe Account transaction before it can be executed.', +} as const diff --git a/src/components/tx-flow/common/styles.module.css b/src/components/tx-flow/common/styles.module.css new file mode 100644 index 0000000000..55fb434f16 --- /dev/null +++ b/src/components/tx-flow/common/styles.module.css @@ -0,0 +1,18 @@ +.cardContent { + display: flex; + flex-direction: column; + gap: var(--space-2); + padding: var(--space-3); +} + +.cardContent :global .errorMessage { + margin: 0; +} + +.nestedDivider { + margin: 0 calc(-1 * var(--space-3)); +} + +.form > :global(.MuiFormControl-root) { + margin-bottom: 28px; +} diff --git a/src/components/tx-flow/flows/AddOwner/ChooseOwner.tsx b/src/components/tx-flow/flows/AddOwner/ChooseOwner.tsx new file mode 100644 index 0000000000..73590da568 --- /dev/null +++ b/src/components/tx-flow/flows/AddOwner/ChooseOwner.tsx @@ -0,0 +1,189 @@ +import { EthHashInfo } from '@safe-global/safe-react-components' +import { + Box, + Typography, + FormControl, + InputAdornment, + CircularProgress, + Button, + CardActions, + Divider, + Grid, + TextField, + MenuItem, + SvgIcon, + Tooltip, +} from '@mui/material' +import { useForm, FormProvider, Controller } from 'react-hook-form' + +import AddressBookInput from '@/components/common/AddressBookInput' +import NameInput from '@/components/common/NameInput' +import { useAddressResolver } from '@/hooks/useAddressResolver' +import useSafeInfo from '@/hooks/useSafeInfo' +import { uniqueAddress, addressIsNotCurrentSafe } from '@/utils/validation' +import type { AddOwnerFlowProps } from '.' +import type { ReplaceOwnerFlowProps } from '../ReplaceOwner' +import TxCard from '../../common/TxCard' +import InfoIcon from '@/public/images/notifications/info.svg' +import commonCss from '@/components/tx-flow/common/styles.module.css' +import { TOOLTIP_TITLES } from '@/components/tx-flow/common/constants' + +type FormData = Pick + +export enum ChooseOwnerMode { + REPLACE, + ADD, +} + +export const ChooseOwner = ({ + params, + onSubmit, + mode, +}: { + params: AddOwnerFlowProps | ReplaceOwnerFlowProps + onSubmit: (data: FormData) => void + mode: ChooseOwnerMode +}) => { + const { safe, safeAddress } = useSafeInfo() + + const formMethods = useForm({ + defaultValues: params, + mode: 'onChange', + }) + const { handleSubmit, formState, watch, control } = formMethods + const isValid = Object.keys(formState.errors).length === 0 // do not use formState.isValid because names can be empty + + const notAlreadyOwner = uniqueAddress(safe.owners.map((owner) => owner.value)) + const notCurrentSafe = addressIsNotCurrentSafe(safeAddress) + const combinedValidate = (address: string) => notAlreadyOwner(address) || notCurrentSafe(address) + + const address = watch('newOwner.address') + + const { name, ens, resolving } = useAddressResolver(address) + + // Address book, ENS + const fallbackName = name || ens + + const onFormSubmit = handleSubmit((formData: FormData) => { + onSubmit({ + ...formData, + newOwner: { + ...formData.newOwner, + name: formData.newOwner.name || fallbackName, + }, + threshold: formData.threshold, + }) + }) + + const newNumberOfOwners = safe.owners.length + (!params.removedOwner ? 1 : 0) + + return ( + + + + {params.removedOwner && ( + <> + + {params.removedOwner && + 'Review the owner you want to replace in the active Safe Account, then specify the new owner you want to replace it with:'} + + + + Current owner + + + + + )} + + + + + + ), + }} + /> + + + + + + + + + {mode === ChooseOwnerMode.ADD && ( + + + Threshold + + + + + + + + + Any transaction requires the confirmation of: + + + + + ( + + {safe.owners.map((_, idx) => ( + + {idx + 1} + + ))} + {!params.removedOwner && ( + + {newNumberOfOwners} + + )} + + )} + /> + + + out of {newNumberOfOwners} owner(s) + + + + )} + + + + + + + + + + ) +} diff --git a/src/components/tx-flow/flows/AddOwner/ReviewOwner.tsx b/src/components/tx-flow/flows/AddOwner/ReviewOwner.tsx new file mode 100644 index 0000000000..d2c18301b3 --- /dev/null +++ b/src/components/tx-flow/flows/AddOwner/ReviewOwner.tsx @@ -0,0 +1,88 @@ +import { useContext, useEffect } from 'react' +import { Typography, Divider, Box, SvgIcon, Paper } from '@mui/material' + +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' +import useSafeInfo from '@/hooks/useSafeInfo' +import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' +import { createSwapOwnerTx, createAddOwnerTx } from '@/services/tx/tx-sender' +import { useAppDispatch } from '@/store' +import { upsertAddressBookEntry } from '@/store/addressBookSlice' +import { SafeTxContext } from '../../SafeTxProvider' +import type { AddOwnerFlowProps } from '.' +import type { ReplaceOwnerFlowProps } from '../ReplaceOwner' +import PlusIcon from '@/public/images/common/plus.svg' +import MinusIcon from '@/public/images/common/minus.svg' +import EthHashInfo from '@/components/common/EthHashInfo' +import commonCss from '@/components/tx-flow/common/styles.module.css' + +export const ReviewOwner = ({ params }: { params: AddOwnerFlowProps | ReplaceOwnerFlowProps }) => { + const dispatch = useAppDispatch() + const { setSafeTx, setSafeTxError } = useContext(SafeTxContext) + const { safe } = useSafeInfo() + const { chainId } = safe + const { newOwner, removedOwner, threshold } = params + + useEffect(() => { + const promise = removedOwner + ? createSwapOwnerTx({ + newOwnerAddress: newOwner.address, + oldOwnerAddress: removedOwner.address, + }) + : createAddOwnerTx({ + ownerAddress: newOwner.address, + threshold, + }) + + promise.then(setSafeTx).catch(setSafeTxError) + }, [removedOwner, newOwner, threshold, setSafeTx, setSafeTxError]) + + const addAddressBookEntryAndSubmit = () => { + if (typeof newOwner.name !== 'undefined') { + dispatch( + upsertAddressBookEntry({ + chainId: chainId, + address: newOwner.address, + name: newOwner.name, + }), + ) + } + + trackEvent({ ...SETTINGS_EVENTS.SETUP.THRESHOLD, label: safe.threshold }) + trackEvent({ ...SETTINGS_EVENTS.SETUP.OWNERS, label: safe.owners.length }) + } + + return ( + + {params.removedOwner && ( + palette.warning.background, p: 2 }}> + + + Previous owner + + + + )} + palette.success.background, p: 2 }}> + + + New owner + + + + + + Any transaction requires the confirmation of: + + {threshold} out of {safe.owners.length + (removedOwner ? 0 : 1)} owners + + + + + ) +} diff --git a/src/components/tx-flow/flows/AddOwner/index.tsx b/src/components/tx-flow/flows/AddOwner/index.tsx new file mode 100644 index 0000000000..43d20cfec0 --- /dev/null +++ b/src/components/tx-flow/flows/AddOwner/index.tsx @@ -0,0 +1,55 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import useTxStepper from '@/components/tx-flow/useTxStepper' +import { ChooseOwner, ChooseOwnerMode } from '@/components/tx-flow/flows/AddOwner/ChooseOwner' +import { ReviewOwner } from '@/components/tx-flow/flows/AddOwner/ReviewOwner' +import SaveAddressIcon from '@/public/images/common/save-address.svg' +import useSafeInfo from '@/hooks/useSafeInfo' + +type Owner = { + address: string + name?: string +} + +export type AddOwnerFlowProps = { + newOwner: Owner + removedOwner?: Owner + threshold: number +} + +const AddOwnerFlow = () => { + const { safe } = useSafeInfo() + + const defaultValues: AddOwnerFlowProps = { + newOwner: { + address: '', + name: '', + }, + threshold: safe.threshold, + } + + const { data, step, nextStep, prevStep } = useTxStepper(defaultValues) + + const steps = [ + nextStep({ ...data, ...formData })} + mode={ChooseOwnerMode.ADD} + />, + , + ] + + return ( + + {steps} + + ) +} + +export default AddOwnerFlow diff --git a/src/components/tx-flow/flows/ChangeThreshold/ChooseThreshold.tsx b/src/components/tx-flow/flows/ChangeThreshold/ChooseThreshold.tsx new file mode 100644 index 0000000000..5b113d3c8e --- /dev/null +++ b/src/components/tx-flow/flows/ChangeThreshold/ChooseThreshold.tsx @@ -0,0 +1,135 @@ +import { Controller, useForm } from 'react-hook-form' +import { + TextField, + MenuItem, + Button, + CardActions, + Divider, + Typography, + Box, + Grid, + SvgIcon, + Tooltip, +} from '@mui/material' +import type { ReactElement } from 'react' + +import useSafeInfo from '@/hooks/useSafeInfo' +import TxCard from '@/components/tx-flow/common/TxCard' +import { ChangeThresholdFlowFieldNames } from '@/components/tx-flow/flows/ChangeThreshold' +import type { ChangeThresholdFlowProps } from '@/components/tx-flow/flows/ChangeThreshold' +import InfoIcon from '@/public/images/notifications/info.svg' +import { TOOLTIP_TITLES } from '@/components/tx-flow/common/constants' + +import commonCss from '@/components/tx-flow/common/styles.module.css' + +export const ChooseThreshold = ({ + params, + onSubmit, +}: { + params: ChangeThresholdFlowProps + onSubmit: (data: ChangeThresholdFlowProps) => void +}): ReactElement => { + const { safe } = useSafeInfo() + + const formMethods = useForm({ + defaultValues: params, + mode: 'onChange', + }) + + const newThreshold = formMethods.watch(ChangeThresholdFlowFieldNames.threshold) + + return ( + +
    + + Threshold + + + + + + + + Any transaction will require the confirmation of: +
    + +
    + + { + if (value === safe.threshold) { + return `Current policy is already set to ${safe.threshold}.` + } + }, + }} + name={ChangeThresholdFlowFieldNames.threshold} + render={({ field, fieldState }) => { + const isError = !!fieldState.error + + return ( + + + + {safe.owners.map((_, idx) => ( + + {idx + 1} + + ))} + + + + + out of {safe.owners.length} owner(s) + + + + {isError ? ( + + {fieldState.error?.message} + + ) : ( + + {fieldState.isDirty ? 'Previous policy was ' : 'Current policy is '} + + {safe.threshold} out of {safe.owners.length} + + . + + )} + + + ) + }} + /> + + + + + + + + +
    + ) +} diff --git a/src/components/tx-flow/flows/ChangeThreshold/ReviewChangeThreshold.tsx b/src/components/tx-flow/flows/ChangeThreshold/ReviewChangeThreshold.tsx new file mode 100644 index 0000000000..6c1aa11d61 --- /dev/null +++ b/src/components/tx-flow/flows/ChangeThreshold/ReviewChangeThreshold.tsx @@ -0,0 +1,47 @@ +import useSafeInfo from '@/hooks/useSafeInfo' +import { useContext, useEffect } from 'react' +import { Box, Divider, Typography } from '@mui/material' + +import { createUpdateThresholdTx } from '@/services/tx/tx-sender' +import { SETTINGS_EVENTS, trackEvent } from '@/services/analytics' +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' +import { ChangeThresholdFlowFieldNames } from '@/components/tx-flow/flows/ChangeThreshold' +import type { ChangeThresholdFlowProps } from '@/components/tx-flow/flows/ChangeThreshold' + +import commonCss from '@/components/tx-flow/common/styles.module.css' + +const ReviewChangeThreshold = ({ params }: { params: ChangeThresholdFlowProps }) => { + const { safe } = useSafeInfo() + const newThreshold = params[ChangeThresholdFlowFieldNames.threshold] + + const { setSafeTx, setSafeTxError } = useContext(SafeTxContext) + + useEffect(() => { + createUpdateThresholdTx(newThreshold).then(setSafeTx).catch(setSafeTxError) + }, [newThreshold, setSafeTx, setSafeTxError]) + + const onChangeThreshold = () => { + trackEvent({ ...SETTINGS_EVENTS.SETUP.OWNERS, label: safe.owners.length }) + trackEvent({ ...SETTINGS_EVENTS.SETUP.THRESHOLD, label: newThreshold }) + } + + return ( + +
    + + Any transaction will require the confirmation of: + + + + {newThreshold} out of {safe.owners.length} owner(s) + +
    + + + +
    + ) +} + +export default ReviewChangeThreshold diff --git a/src/components/tx-flow/flows/ChangeThreshold/index.tsx b/src/components/tx-flow/flows/ChangeThreshold/index.tsx new file mode 100644 index 0000000000..907d48da78 --- /dev/null +++ b/src/components/tx-flow/flows/ChangeThreshold/index.tsx @@ -0,0 +1,41 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import ReviewChangeThreshold from '@/components/tx-flow/flows/ChangeThreshold/ReviewChangeThreshold' +import useTxStepper from '@/components/tx-flow/useTxStepper' +import SaveAddressIcon from '@/public/images/common/save-address.svg' +import useSafeInfo from '@/hooks/useSafeInfo' +import { ChooseThreshold } from '@/components/tx-flow/flows/ChangeThreshold/ChooseThreshold' + +export enum ChangeThresholdFlowFieldNames { + threshold = 'threshold', +} + +export type ChangeThresholdFlowProps = { + [ChangeThresholdFlowFieldNames.threshold]: number +} + +const ChangeThresholdFlow = () => { + const { safe } = useSafeInfo() + + const { data, step, nextStep, prevStep } = useTxStepper({ + [ChangeThresholdFlowFieldNames.threshold]: safe.threshold, + }) + + const steps = [ + nextStep(formData)} />, + , + ] + + return ( + + {steps} + + ) +} + +export default ChangeThresholdFlow diff --git a/src/components/tx/modals/ConfirmTxModal/ConfirmProposedTx.tsx b/src/components/tx-flow/flows/ConfirmTx/ConfirmProposedTx.tsx similarity index 55% rename from src/components/tx/modals/ConfirmTxModal/ConfirmProposedTx.tsx rename to src/components/tx-flow/flows/ConfirmTx/ConfirmProposedTx.tsx index 27e499eb84..557378f935 100644 --- a/src/components/tx/modals/ConfirmTxModal/ConfirmProposedTx.tsx +++ b/src/components/tx-flow/flows/ConfirmTx/ConfirmProposedTx.tsx @@ -1,59 +1,41 @@ -import type { ReactElement } from 'react' +import { type ReactElement, useContext, useEffect } from 'react' import type { TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' - import useSafeInfo from '@/hooks/useSafeInfo' import { useChainId } from '@/hooks/useChainId' -import useAsync from '@/hooks/useAsync' import useWallet from '@/hooks/wallets/useWallet' import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' import { isExecutable, isSignableBy } from '@/utils/transaction-guards' -import { Skeleton, Typography } from '@mui/material' +import { Typography } from '@mui/material' import { createExistingTx } from '@/services/tx/tx-sender' +import { SafeTxContext } from '../../SafeTxProvider' type ConfirmProposedTxProps = { txSummary: TransactionSummary - onSubmit: () => void } const SIGN_TEXT = 'Sign this transaction.' const EXECUTE_TEXT = 'Submit the form to execute this transaction.' const SIGN_EXECUTE_TEXT = 'Sign or immediately execute this transaction.' -const ConfirmProposedTx = ({ txSummary, onSubmit }: ConfirmProposedTxProps): ReactElement => { +const ConfirmProposedTx = ({ txSummary }: ConfirmProposedTxProps): ReactElement => { const wallet = useWallet() const { safe, safeAddress } = useSafeInfo() const chainId = useChainId() + const { setSafeTx, setSafeTxError } = useContext(SafeTxContext) const txId = txSummary.id const canExecute = isExecutable(txSummary, wallet?.address || '', safe) const canSign = isSignableBy(txSummary, wallet?.address || '') - const [safeTx, safeTxError] = useAsync(() => { - return createExistingTx(chainId, safeAddress, txId) - }, [txId, safeAddress, chainId]) + useEffect(() => { + createExistingTx(chainId, safeAddress, txId).then(setSafeTx).catch(setSafeTxError) + }, [txId, safeAddress, chainId, setSafeTx, setSafeTxError]) const text = canSign ? (canExecute ? SIGN_EXECUTE_TEXT : SIGN_TEXT) : EXECUTE_TEXT return ( - + {}} isExecutable={canExecute} onlyExecute={!canSign}> {text} - - - Transaction nonce:  - {safeTx ? ( - {safeTx?.data.nonce} - ) : ( - - )} - ) } diff --git a/src/components/tx-flow/flows/ConfirmTx/index.tsx b/src/components/tx-flow/flows/ConfirmTx/index.tsx new file mode 100644 index 0000000000..5df1140521 --- /dev/null +++ b/src/components/tx-flow/flows/ConfirmTx/index.tsx @@ -0,0 +1,27 @@ +import type { TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' +import TxLayout from '@/components/tx-flow/common/TxLayout' +import ConfirmProposedTx from './ConfirmProposedTx' +import { useTransactionType } from '@/hooks/useTransactionType' +import TxInfo from '@/components/transactions/TxInfo' + +const ConfirmTxFlow = ({ txSummary }: { txSummary: TransactionSummary }) => { + const { text } = useTransactionType(txSummary) + + return ( + + {text}  + + + } + step={0} + txSummary={txSummary} + > + + + ) +} + +export default ConfirmTxFlow diff --git a/src/components/tx-flow/flows/ExecuteBatch/DecodedTxs.tsx b/src/components/tx-flow/flows/ExecuteBatch/DecodedTxs.tsx new file mode 100644 index 0000000000..1c28414bcf --- /dev/null +++ b/src/components/tx-flow/flows/ExecuteBatch/DecodedTxs.tsx @@ -0,0 +1,73 @@ +import type { DataDecoded, TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' +import { Box } from '@mui/material' +import useSafeInfo from '@/hooks/useSafeInfo' +import extractTxInfo from '@/services/tx/extractTxInfo' +import { isCustomTxInfo, isNativeTokenTransfer, isTransferTxInfo } from '@/utils/transaction-guards' +import SingleTxDecoded from '@/components/transactions/TxDetails/TxData/DecodedData/SingleTxDecoded' +import css from '@/components/transactions/TxDetails/TxData/DecodedData/Multisend/styles.module.css' +import { useState } from 'react' +import { MultisendActionsHeader } from '@/components/transactions/TxDetails/TxData/DecodedData/Multisend' +import { type AccordionProps } from '@mui/material/Accordion/Accordion' + +const DecodedTxs = ({ txs }: { txs: TransactionDetails[] | undefined }) => { + const [openMap, setOpenMap] = useState>() + const { safeAddress } = useSafeInfo() + + if (!txs) return null + + return ( + <> + + + + {txs.map((transaction, idx) => { + if (!transaction.txData) return null + + const onChange: AccordionProps['onChange'] = (_, expanded) => { + setOpenMap((prev) => ({ + ...prev, + [idx]: expanded, + })) + } + + const { txParams } = extractTxInfo(transaction, safeAddress) + + let decodedDataParams: DataDecoded = { + method: '', + parameters: undefined, + } + + if (isCustomTxInfo(transaction.txInfo) && transaction.txInfo.isCancellation) { + decodedDataParams.method = 'On-chain rejection' + } + + if (isTransferTxInfo(transaction.txInfo) && isNativeTokenTransfer(transaction.txInfo.transferInfo)) { + decodedDataParams.method = 'transfer' + } + + const dataDecoded = transaction.txData.dataDecoded || decodedDataParams + + return ( + + ) + })} + + + ) +} + +export default DecodedTxs diff --git a/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx b/src/components/tx-flow/flows/ExecuteBatch/ReviewBatch.tsx similarity index 66% rename from src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx rename to src/components/tx-flow/flows/ExecuteBatch/ReviewBatch.tsx index 8c505df00c..c1277142af 100644 --- a/src/components/tx/modals/BatchExecuteModal/ReviewBatchExecute.tsx +++ b/src/components/tx-flow/flows/ExecuteBatch/ReviewBatch.tsx @@ -1,3 +1,4 @@ +import { Typography, Button, CardActions, Divider, Alert } from '@mui/material' import useAsync from '@/hooks/useAsync' import { FEATURES } from '@safe-global/safe-gateway-typescript-sdk' import type { TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' @@ -5,34 +6,41 @@ import { getMultiSendCallOnlyContract } from '@/services/contracts/safeContracts import { useCurrentChain } from '@/hooks/useChains' import useSafeInfo from '@/hooks/useSafeInfo' import { encodeMultiSendData } from '@safe-global/safe-core-sdk/dist/src/utils/transactions/utils' -import { Button, DialogContent, Typography } from '@mui/material' -import SendToBlock from '@/components/tx/SendToBlock' -import { type SyntheticEvent, useMemo, useState } from 'react' +import { useState, useMemo, useContext } from 'react' +import type { SyntheticEvent } from 'react' import { generateDataRowValue } from '@/components/transactions/TxDetails/Summary/TxDataRow' -import { Errors, logError } from '@/services/exceptions' import ErrorMessage from '@/components/tx/ErrorMessage' -import type { BatchExecuteData } from '@/components/tx/modals/BatchExecuteModal/index' -import DecodedTxs from '@/components/tx/modals/BatchExecuteModal/DecodedTxs' -import { getMultiSendTxs, getTxsWithDetails } from '@/utils/transactions' -import { TxSimulation } from '@/components/tx/TxSimulation' +import { ExecutionMethod, ExecutionMethodSelector } from '@/components/tx/ExecutionMethodSelector' +import DecodedTxs from '@/components/tx-flow/flows/ExecuteBatch/DecodedTxs' +import { TxSimulation } from '@/components/tx/security/tenderly' +import { WrongChainWarning } from '@/components/tx/WrongChainWarning' import { useRelaysBySafe } from '@/hooks/useRemainingRelays' -import { ExecutionMethod, ExecutionMethodSelector } from '../../ExecutionMethodSelector' -import { dispatchBatchExecution, dispatchBatchExecutionRelay } from '@/services/tx/tx-sender' import useOnboard from '@/hooks/wallets/useOnboard' -import { WrongChainWarning } from '@/components/tx/WrongChainWarning' import { useWeb3 } from '@/hooks/wallets/web3' +import { logError, Errors } from '@/services/exceptions' +import { dispatchBatchExecution, dispatchBatchExecutionRelay } from '@/services/tx/tx-sender' import { hasRemainingRelays } from '@/utils/relaying' +import { getTxsWithDetails, getMultiSendTxs } from '@/utils/transactions' +import TxCard from '../../common/TxCard' +import CheckWallet from '@/components/common/CheckWallet' +import type { ExecuteBatchFlowProps } from '.' +import { asError } from '@/services/exceptions/utils' +import SendToBlock from '@/components/tx-flow/flows/TokenTransfer/SendToBlock' +import ConfirmationTitle, { ConfirmationTitleTypes } from '@/components/tx/SignOrExecuteForm/ConfirmationTitle' +import commonCss from '@/components/tx-flow/common/styles.module.css' +import { TxModalContext } from '@/components/tx-flow' import useGasPrice from '@/hooks/useGasPrice' import { hasFeature } from '@/utils/chains' import type { PayableOverrides } from 'ethers' -const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubmit: (data: null) => void }) => { +export const ReviewBatch = ({ params }: { params: ExecuteBatchFlowProps }) => { const [isSubmittable, setIsSubmittable] = useState(true) const [submitError, setSubmitError] = useState() const [executionMethod, setExecutionMethod] = useState(ExecutionMethod.RELAY) const chain = useCurrentChain() const { safe } = useSafeInfo() const [relays] = useRelaysBySafe() + const { setTxFlow } = useContext(TxModalContext) const [gasPrice, , gasPriceLoading] = useGasPrice() const maxFeePerGas = gasPrice?.maxFeePerGas @@ -48,9 +56,8 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm const [txsWithDetails, error, loading] = useAsync(() => { if (!chain?.chainId) return - - return getTxsWithDetails(data.txs, chain.chainId) - }, [data.txs, chain?.chainId]) + return getTxsWithDetails(params.txs, chain.chainId) + }, [params.txs, chain?.chainId]) const multiSendContract = useMemo(() => { if (!chain?.chainId || !safe.version || !web3) return @@ -83,7 +90,6 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm safe.address.value, overrides, ) - onSubmit(null) } const onRelay = async () => { @@ -96,8 +102,6 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm safe.chainId, safe.address.value, ) - - onSubmit(null) } const handleSubmit = async (e: SyntheticEvent) => { @@ -107,10 +111,12 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm try { await (willRelay ? onRelay() : onExecute()) - } catch (err) { - logError(Errors._804, (err as Error).message) + setTxFlow(undefined) + } catch (_err) { + const err = asError(_err) + logError(Errors._804, err) setIsSubmittable(true) - setSubmitError(err as Error) + setSubmitError(err) return } } @@ -118,10 +124,10 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm const submitDisabled = loading || !isSubmittable || gasPriceLoading return ( -
    - - - This transaction batches a total of {data.txs.length} transactions from your queue into a single Ethereum + <> + + + This transaction batches a total of {params.txs.length} transactions from your queue into a single Ethereum transaction. Please check every included transaction carefully, especially if you have rejection transactions, and make sure you want to execute all of them. Included transactions are highlighted in green when you hover over the execute button. @@ -130,42 +136,47 @@ const ReviewBatchExecute = ({ data, onSubmit }: { data: BatchExecuteData; onSubm {multiSendContract && } {multiSendTxData && ( - <> - +
    + Data (hex encoded) {generateDataRowValue(multiSendTxData, 'rawData')} - +
    )} - - Batched transactions: - - +
    + +
    +
    + + {multiSendTxs && ( + + Transaction checks + + + + )} + + + + + {canRelay ? ( <> - - Gas fees: - ) : null} - {multiSendTxs && } - - - - + Be aware that if any of the included transactions revert, none of them will be executed. This will result in the loss of the allocated transaction fees. - + {error && ( @@ -177,17 +188,20 @@ executions from the same Safe Account." Error submitting the transaction. Please try again. )} - -
    -
    +
    + + + + + {(isOk) => ( + + )} + + +
    + + ) } - -export default ReviewBatchExecute diff --git a/src/components/tx-flow/flows/ExecuteBatch/index.tsx b/src/components/tx-flow/flows/ExecuteBatch/index.tsx new file mode 100644 index 0000000000..a2b9143adb --- /dev/null +++ b/src/components/tx-flow/flows/ExecuteBatch/index.tsx @@ -0,0 +1,19 @@ +import type { Transaction } from '@safe-global/safe-gateway-typescript-sdk' + +import TxLayout from '@/components/tx-flow/common/TxLayout' +import { ReviewBatch } from './ReviewBatch' +import BatchIcon from '@/public/images/apps/batch-icon.svg' + +export type ExecuteBatchFlowProps = { + txs: Transaction[] +} + +const ExecuteBatchFlow = (props: ExecuteBatchFlowProps) => { + return ( + + + + ) +} + +export default ExecuteBatchFlow diff --git a/src/components/tx-flow/flows/NewSpendingLimit/CreateSpendingLimit.tsx b/src/components/tx-flow/flows/NewSpendingLimit/CreateSpendingLimit.tsx new file mode 100644 index 0000000000..fd0c23a4e0 --- /dev/null +++ b/src/components/tx-flow/flows/NewSpendingLimit/CreateSpendingLimit.tsx @@ -0,0 +1,122 @@ +import { useCallback, useMemo, useState } from 'react' +import { Controller, FormProvider, useForm } from 'react-hook-form' +import { Box, Button, CardActions, FormControl, InputLabel, MenuItem, Select, Typography } from '@mui/material' +import ExpandMoreRoundedIcon from '@mui/icons-material/ExpandMoreRounded' +import { defaultAbiCoder, parseUnits } from 'ethers/lib/utils' + +import AddressBookInput from '@/components/common/AddressBookInput' +import useChainId from '@/hooks/useChainId' +import { getResetTimeOptions } from '@/components/transactions/TxDetails/TxData/SpendingLimits' +import { useVisibleBalances } from '@/hooks/useVisibleBalances' +import type { NewSpendingLimitFlowProps } from '.' +import TxCard from '../../common/TxCard' +import css from '@/components/tx/ExecuteCheckbox/styles.module.css' +import TokenAmountInput from '@/components/common/TokenAmountInput' +import { SpendingLimitFields } from '.' +import { validateAmount, validateDecimalLength } from '@/utils/validation' +import AddressInputReadOnly from '@/components/common/AddressInputReadOnly' +import useAddressBook from '@/hooks/useAddressBook' + +export const _validateSpendingLimit = (val: string, decimals?: number) => { + // Allowance amount is uint96 https://github.com/safe-global/safe-modules/blob/master/allowances/contracts/AlowanceModule.sol#L52 + try { + const amount = parseUnits(val, decimals) + defaultAbiCoder.encode(['int96'], [amount]) + } catch (e) { + return Number(val) > 1 ? 'Amount is too big' : 'Amount is too small' + } +} + +export const CreateSpendingLimit = ({ + params, + onSubmit, +}: { + params: NewSpendingLimitFlowProps + onSubmit: (data: NewSpendingLimitFlowProps) => void +}) => { + const [recipientFocus, setRecipientFocus] = useState(!params.beneficiary) + const chainId = useChainId() + const { balances } = useVisibleBalances() + const addressBook = useAddressBook() + + const resetTimeOptions = useMemo(() => getResetTimeOptions(chainId), [chainId]) + + const formMethods = useForm({ + defaultValues: params, + mode: 'onChange', + }) + + const { handleSubmit, setValue, watch, control } = formMethods + + const beneficiary = watch(SpendingLimitFields.beneficiary) + const tokenAddress = watch(SpendingLimitFields.tokenAddress) + const selectedToken = tokenAddress + ? balances.items.find((item) => item.tokenInfo.address === tokenAddress) + : undefined + + const validateSpendingLimit = useCallback( + (value: string) => { + return ( + validateAmount(value) || + validateDecimalLength(value, selectedToken?.tokenInfo.decimals) || + _validateSpendingLimit(value, selectedToken?.tokenInfo.decimals) + ) + }, + [selectedToken?.tokenInfo.decimals], + ) + + return ( + + +
    + + {addressBook[beneficiary] ? ( + { + setValue(SpendingLimitFields.beneficiary, '') + setRecipientFocus(true) + }} + > + + + ) : ( + + )} + + + + + + Reset Timer + + + Set a reset time so the allowance automatically refills after the defined time period. + + + Time Period + ( + + )} + /> + + + + + + +
    +
    + ) +} diff --git a/src/components/tx-flow/flows/NewSpendingLimit/ReviewSpendingLimit.tsx b/src/components/tx-flow/flows/NewSpendingLimit/ReviewSpendingLimit.tsx new file mode 100644 index 0000000000..5ab7d1a2a2 --- /dev/null +++ b/src/components/tx-flow/flows/NewSpendingLimit/ReviewSpendingLimit.tsx @@ -0,0 +1,144 @@ +import { useState, useEffect, useMemo, useContext } from 'react' +import { useSelector } from 'react-redux' +import { BigNumber } from 'ethers' +import { Typography, Grid, Alert } from '@mui/material' + +import SpendingLimitLabel from '@/components/common/SpendingLimitLabel' +import { getResetTimeOptions } from '@/components/transactions/TxDetails/TxData/SpendingLimits' +import SendAmountBlock from '@/components/tx-flow/flows/TokenTransfer/SendAmountBlock' +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' +import useBalances from '@/hooks/useBalances' +import useChainId from '@/hooks/useChainId' +import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' +import { createNewSpendingLimitTx } from '@/services/tx/tx-sender' +import { selectSpendingLimits } from '@/store/spendingLimitsSlice' +import { formatVisualAmount } from '@/utils/formatters' +import type { SpendingLimitState } from '@/store/spendingLimitsSlice' +import type { NewSpendingLimitFlowProps } from '.' +import EthHashInfo from '@/components/common/EthHashInfo' +import { SafeTxContext } from '../../SafeTxProvider' + +export const ReviewSpendingLimit = ({ params }: { params: NewSpendingLimitFlowProps }) => { + const [existingSpendingLimit, setExistingSpendingLimit] = useState() + const spendingLimits = useSelector(selectSpendingLimits) + const chainId = useChainId() + const { balances } = useBalances() + const { setSafeTx, setSafeTxError } = useContext(SafeTxContext) + const token = balances.items.find((item) => item.tokenInfo.address === params.tokenAddress) + const { decimals } = token?.tokenInfo || {} + + useEffect(() => { + const existingSpendingLimit = spendingLimits.find( + (spendingLimit) => + spendingLimit.beneficiary === params.beneficiary && spendingLimit.token.address === params.tokenAddress, + ) + setExistingSpendingLimit(existingSpendingLimit) + }, [spendingLimits, params]) + + useEffect(() => { + createNewSpendingLimitTx(params, spendingLimits, chainId, decimals, existingSpendingLimit) + .then(setSafeTx) + .catch(setSafeTxError) + }, [chainId, decimals, existingSpendingLimit, params, setSafeTx, setSafeTxError, spendingLimits]) + + const isOneTime = params.resetTime === '0' + const resetTime = useMemo(() => { + return isOneTime + ? 'One-time spending limit' + : getResetTimeOptions(chainId).find((time) => time.value === params.resetTime)?.label + }, [isOneTime, params.resetTime, chainId]) + + const onFormSubmit = () => { + trackEvent({ + ...SETTINGS_EVENTS.SPENDING_LIMIT.RESET_PERIOD, + label: resetTime, + }) + } + + const existingAmount = existingSpendingLimit + ? formatVisualAmount(BigNumber.from(existingSpendingLimit?.amount), decimals) + : undefined + + const oldResetTime = existingSpendingLimit + ? getResetTimeOptions(chainId).find((time) => time.value === existingSpendingLimit?.resetTimeMin)?.label + : undefined + + return ( + + {token && ( + + {existingAmount && existingAmount !== params.amount && ( + <> + + {existingAmount} + + {'→'} + + )} + + )} + + + + + Beneficiary + + + + + + + + + + + + Reset time + + + + {existingSpendingLimit ? ( + <> + + {existingSpendingLimit.resetTimeMin !== params.resetTime && ( + <> + + {oldResetTime} + + {' → '} + + )} + + {resetTime} + + + } + isOneTime={existingSpendingLimit.resetTimeMin === '0'} + /> + + ) : ( + + )} + + + {existingSpendingLimit && ( + + You are about to replace an existing spending limit + + )} + + ) +} diff --git a/src/components/settings/SpendingLimits/NewSpendingLimit/__tests__/SpendingLimitForm.test.ts b/src/components/tx-flow/flows/NewSpendingLimit/__tests__/SpendingLimitForm.test.ts similarity index 87% rename from src/components/settings/SpendingLimits/NewSpendingLimit/__tests__/SpendingLimitForm.test.ts rename to src/components/tx-flow/flows/NewSpendingLimit/__tests__/SpendingLimitForm.test.ts index 70891e3e1e..df35b74995 100644 --- a/src/components/settings/SpendingLimits/NewSpendingLimit/__tests__/SpendingLimitForm.test.ts +++ b/src/components/tx-flow/flows/NewSpendingLimit/__tests__/SpendingLimitForm.test.ts @@ -1,6 +1,6 @@ -import { _validateSpendingLimit } from '../steps/SpendingLimitForm' +import { _validateSpendingLimit } from '../CreateSpendingLimit' -describe('SpendingLimitForm', () => { +describe('CreateSpendingLimit', () => { describe('validateSpendingLimit', () => { it('should return no error if the amount is valid', () => { const result1 = _validateSpendingLimit('9999999999.999999999999999999') diff --git a/src/components/tx-flow/flows/NewSpendingLimit/index.tsx b/src/components/tx-flow/flows/NewSpendingLimit/index.tsx new file mode 100644 index 0000000000..aaea462271 --- /dev/null +++ b/src/components/tx-flow/flows/NewSpendingLimit/index.tsx @@ -0,0 +1,51 @@ +import TxLayout from '../../common/TxLayout' +import useTxStepper from '../../useTxStepper' +import { CreateSpendingLimit } from './CreateSpendingLimit' +import { ReviewSpendingLimit } from './ReviewSpendingLimit' +import SaveAddressIcon from '@/public/images/common/save-address.svg' +import { ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' +import { TokenAmountFields } from '@/components/common/TokenAmountInput' + +enum Fields { + beneficiary = 'beneficiary', + resetTime = 'resetTime', +} + +export const SpendingLimitFields = { ...Fields, ...TokenAmountFields } + +export type NewSpendingLimitFlowProps = { + [SpendingLimitFields.beneficiary]: string + [SpendingLimitFields.tokenAddress]: string + [SpendingLimitFields.amount]: string + [SpendingLimitFields.resetTime]: string +} + +const defaultValues: NewSpendingLimitFlowProps = { + beneficiary: '', + tokenAddress: ZERO_ADDRESS, + amount: '', + resetTime: '0', +} + +const NewSpendingLimitFlow = () => { + const { data, step, nextStep, prevStep } = useTxStepper(defaultValues) + + const steps = [ + nextStep({ ...data, ...formData })} />, + , + ] + + return ( + + {steps} + + ) +} + +export default NewSpendingLimitFlow diff --git a/src/components/tx-flow/flows/NewTx/index.tsx b/src/components/tx-flow/flows/NewTx/index.tsx new file mode 100644 index 0000000000..55e85333ef --- /dev/null +++ b/src/components/tx-flow/flows/NewTx/index.tsx @@ -0,0 +1,73 @@ +import { useCallback, useContext } from 'react' +import { SendNFTsButton, SendTokensButton, TxBuilderButton } from '@/components/tx-flow/common/TxButton' +import { Container, Grid, Paper, SvgIcon, Typography } from '@mui/material' +import { TxModalContext } from '../../' +import TokenTransferFlow from '../TokenTransfer' +import AssetsIcon from '@/public/images/sidebar/assets.svg' +import { useTxBuilderApp } from '@/hooks/safe-apps/useTxBuilderApp' +import { ProgressBar } from '@/components/common/ProgressBar' +import ChainIndicator from '@/components/common/ChainIndicator' +import NewTxIcon from '@/public/images/transactions/new-tx.svg' + +import css from './styles.module.css' + +const NewTxMenu = () => { + const txBuilder = useTxBuilderApp() + const { setTxFlow } = useContext(TxModalContext) + + const onTokensClick = useCallback(() => { + setTxFlow() + }, [setTxFlow]) + + const progress = 10 + + return ( + + + {/* Alignment of `TxLayout` */} + + + + + + + + +
    + +
    + + + New transaction + +
    + + + + + Assets + + + + + + + {txBuilder?.app && ( + <> + + {txBuilder.app.name} Contract + interaction + + + + + )} + +
    +
    +
    +
    + ) +} + +export default NewTxMenu diff --git a/src/components/tx-flow/flows/NewTx/styles.module.css b/src/components/tx-flow/flows/NewTx/styles.module.css new file mode 100644 index 0000000000..b6fb3f8456 --- /dev/null +++ b/src/components/tx-flow/flows/NewTx/styles.module.css @@ -0,0 +1,59 @@ +.container { + margin-top: 50px; +} + +.chain { + align-self: flex-end; + margin-bottom: var(--space-2); +} + +.pane { + display: flex; + flex-direction: column; + justify-content: center; + padding: var(--space-10) var(--space-8); + gap: var(--space-3); +} + +.title { + font-size: 44px; + font-weight: 700; +} + +.type { + font-weight: 700; + display: flex; + align-items: center; + gap: var(--space-1); +} + +.globs > div { + padding: 0; + margin: 0 0 var(--space-3) 0; +} + +@media (max-width: 899.95px) { + .container { + margin-top: var(--space-3); + padding: 0; + } + + .container :global(.MuiPaper-root) { + border-radius: unset; + } + + .chain { + position: absolute; + top: 0; + right: 57px; + margin: var(--space-2); + } + + .progressBar { + display: none; + } + + .pane + .pane { + padding-top: 0; + } +} diff --git a/src/components/tx-flow/flows/NftTransfer/ReviewNftBatch.tsx b/src/components/tx-flow/flows/NftTransfer/ReviewNftBatch.tsx new file mode 100644 index 0000000000..c9024eb02f --- /dev/null +++ b/src/components/tx-flow/flows/NftTransfer/ReviewNftBatch.tsx @@ -0,0 +1,60 @@ +import { type ReactElement, useEffect, useContext } from 'react' +import { Grid, Typography } from '@mui/material' +import SendToBlock from '@/components/tx-flow/flows/TokenTransfer/SendToBlock' +import { createNftTransferParams } from '@/services/tx/tokenTransferParams' +import type { NftTransferParams } from '.' +import useSafeAddress from '@/hooks/useSafeAddress' +import { createMultiSendCallOnlyTx, createTx } from '@/services/tx/tx-sender' +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' +import { SafeTxContext } from '../../SafeTxProvider' +import { NftItems } from '@/components/tx-flow/flows/NftTransfer/SendNftBatch' + +type ReviewNftBatchProps = { + params: NftTransferParams + onSubmit: () => void + txNonce?: number +} + +const ReviewNftBatch = ({ params, onSubmit, txNonce }: ReviewNftBatchProps): ReactElement => { + const { setSafeTx, setSafeTxError, setNonce } = useContext(SafeTxContext) + const safeAddress = useSafeAddress() + const { tokens } = params + + useEffect(() => { + if (txNonce !== undefined) { + setNonce(txNonce) + } + }, [txNonce, setNonce]) + + useEffect(() => { + if (!safeAddress) return + + const calls = params.tokens.map((token) => { + return createNftTransferParams(safeAddress, params.recipient, token.id, token.address) + }) + + const promise = calls.length > 1 ? createMultiSendCallOnlyTx(calls) : createTx(calls[0]) + + promise.then(setSafeTx).catch(setSafeTxError) + }, [safeAddress, params, setSafeTx, setSafeTxError]) + + return ( + + + + + Send + + + + + + + + + + + ) +} + +export default ReviewNftBatch diff --git a/src/components/tx-flow/flows/NftTransfer/SendNftBatch.tsx b/src/components/tx-flow/flows/NftTransfer/SendNftBatch.tsx new file mode 100644 index 0000000000..3aeee4fab7 --- /dev/null +++ b/src/components/tx-flow/flows/NftTransfer/SendNftBatch.tsx @@ -0,0 +1,146 @@ +import { useState } from 'react' +import { Box, Button, CardActions, Divider, FormControl, Grid, SvgIcon, Typography } from '@mui/material' +import { type SafeCollectibleResponse } from '@safe-global/safe-gateway-typescript-sdk' +import { FormProvider, useForm } from 'react-hook-form' +import NftIcon from '@/public/images/common/nft.svg' +import AddressBookInput from '@/components/common/AddressBookInput' +import type { NftTransferParams } from '.' +import ImageFallback from '@/components/common/ImageFallback' +import useAddressBook from '@/hooks/useAddressBook' +import TxCard from '../../common/TxCard' +import AddressInputReadOnly from '@/components/common/AddressInputReadOnly' +import commonCss from '@/components/tx-flow/common/styles.module.css' + +enum Field { + recipient = 'recipient', +} + +type FormData = Pick + +type SendNftBatchProps = { + onSubmit: (data: NftTransferParams) => void + params: NftTransferParams +} + +const NftItem = ({ image, name, description }: { image: string; name: string; description?: string }) => ( + + + + } + alt={name} + height={40} + /> + + + + + + {name} + + + {description && ( + + {description} + + )} + + +) + +export const NftItems = ({ tokens }: { tokens: SafeCollectibleResponse[] }) => { + return ( + + {tokens.map((token) => ( + + ))} + + ) +} + +const SendNftBatch = ({ params, onSubmit }: SendNftBatchProps) => { + const [recipientFocus, setRecipientFocus] = useState(false) + const addressBook = useAddressBook() + const { tokens } = params + + const formMethods = useForm({ + defaultValues: { + [Field.recipient]: params.recipient, + }, + }) + const { + handleSubmit, + watch, + setValue, + formState: { errors }, + } = formMethods + + const recipient = watch(Field.recipient) + const isAddressValid = !!recipient && !errors[Field.recipient] + + const onFormSubmit = (data: FormData) => { + onSubmit({ + recipient: data.recipient, + tokens, + }) + } + + return ( + + +
    + + {/* TODO: Extract this */} + {addressBook[recipient] ? ( + { + setValue(Field.recipient, '') + setRecipientFocus(true) + }} + > + + + ) : ( + + )} + + + + Selected NFTs + + + + + + + + + + +
    +
    + ) +} + +export default SendNftBatch diff --git a/src/components/tx-flow/flows/NftTransfer/index.tsx b/src/components/tx-flow/flows/NftTransfer/index.tsx new file mode 100644 index 0000000000..308357118c --- /dev/null +++ b/src/components/tx-flow/flows/NftTransfer/index.tsx @@ -0,0 +1,47 @@ +import type { SafeCollectibleResponse } from '@safe-global/safe-gateway-typescript-sdk' +import NftIcon from '@/public/images/common/nft.svg' +import TxLayout from '@/components/tx-flow/common/TxLayout' +import useTxStepper from '../../useTxStepper' +import SendNftBatch from './SendNftBatch' +import ReviewNftBatch from './ReviewNftBatch' + +export type NftTransferParams = { + recipient: string + tokens: SafeCollectibleResponse[] +} + +type NftTransferFlowProps = Partial & { + txNonce?: number +} + +const defaultParams: NftTransferParams = { + recipient: '', + tokens: [], +} + +const NftTransferFlow = ({ txNonce, ...params }: NftTransferFlowProps) => { + const { data, step, nextStep, prevStep } = useTxStepper({ + ...defaultParams, + ...params, + }) + + const steps = [ + nextStep({ ...data, ...formData })} />, + + null} />, + ] + + return ( + + {steps} + + ) +} + +export default NftTransferFlow diff --git a/src/components/tx/modals/RejectTxModal/RejectTx.tsx b/src/components/tx-flow/flows/RejectTx/RejectTx.tsx similarity index 61% rename from src/components/tx/modals/RejectTxModal/RejectTx.tsx rename to src/components/tx-flow/flows/RejectTx/RejectTx.tsx index 9be392c2e8..cc1a765294 100644 --- a/src/components/tx/modals/RejectTxModal/RejectTx.tsx +++ b/src/components/tx-flow/flows/RejectTx/RejectTx.tsx @@ -1,23 +1,25 @@ import type { ReactElement } from 'react' import { Typography } from '@mui/material' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' - -import useAsync from '@/hooks/useAsync' import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' import { createRejectTx } from '@/services/tx/tx-sender' +import { useContext, useEffect } from 'react' +import { SafeTxContext } from '../../SafeTxProvider' type RejectTxProps = { txNonce: number - onSubmit: () => void } -const RejectTx = ({ txNonce, onSubmit }: RejectTxProps): ReactElement => { - const [rejectTx, rejectError] = useAsync(() => { - return createRejectTx(txNonce) - }, [txNonce]) +const RejectTx = ({ txNonce }: RejectTxProps): ReactElement => { + const { setSafeTx, setSafeTxError, setNonce } = useContext(SafeTxContext) + + useEffect(() => { + setNonce(txNonce) + + createRejectTx(txNonce).then(setSafeTx).catch(setSafeTxError) + }, [txNonce, setNonce, setSafeTx, setSafeTxError]) return ( - + {}}> To reject the transaction, a separate rejection transaction will be created to replace the original one. diff --git a/src/components/tx-flow/flows/RejectTx/index.tsx b/src/components/tx-flow/flows/RejectTx/index.tsx new file mode 100644 index 0000000000..6d6702c046 --- /dev/null +++ b/src/components/tx-flow/flows/RejectTx/index.tsx @@ -0,0 +1,17 @@ +import type { ReactElement } from 'react' +import TxLayout from '../../common/TxLayout' +import RejectTx from './RejectTx' + +type RejectTxProps = { + txNonce: number +} + +const RejectTxFlow = ({ txNonce }: RejectTxProps): ReactElement => { + return ( + + + + ) +} + +export default RejectTxFlow diff --git a/src/components/settings/TransactionGuards/RemoveGuard/steps/ReviewRemoveGuard.tsx b/src/components/tx-flow/flows/RemoveGuard/ReviewRemoveGuard.tsx similarity index 58% rename from src/components/settings/TransactionGuards/RemoveGuard/steps/ReviewRemoveGuard.tsx rename to src/components/tx-flow/flows/RemoveGuard/ReviewRemoveGuard.tsx index 11abaf6d9d..e2155eb66e 100644 --- a/src/components/settings/TransactionGuards/RemoveGuard/steps/ReviewRemoveGuard.tsx +++ b/src/components/tx-flow/flows/RemoveGuard/ReviewRemoveGuard.tsx @@ -1,19 +1,19 @@ -import { useEffect } from 'react' +import { useContext, useEffect } from 'react' import { Typography } from '@mui/material' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' - -import useAsync from '@/hooks/useAsync' import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' import EthHashInfo from '@/components/common/EthHashInfo' -import type { RemoveGuardData } from '@/components/settings/TransactionGuards/RemoveGuard' import { Errors, logError } from '@/services/exceptions' import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' import { createRemoveGuardTx } from '@/services/tx/tx-sender' +import { type RemoveGuardFlowProps } from '.' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' + +export const ReviewRemoveGuard = ({ params }: { params: RemoveGuardFlowProps }) => { + const { setSafeTx, safeTxError, setSafeTxError } = useContext(SafeTxContext) -export const ReviewRemoveGuard = ({ data, onSubmit }: { data: RemoveGuardData; onSubmit: () => void }) => { - const [safeTx, safeTxError] = useAsync(() => { - return createRemoveGuardTx() - }, []) + useEffect(() => { + createRemoveGuardTx().then(setSafeTx).catch(setSafeTxError) + }, [setSafeTx, setSafeTxError]) useEffect(() => { if (safeTxError) { @@ -23,14 +23,14 @@ export const ReviewRemoveGuard = ({ data, onSubmit }: { data: RemoveGuardData; o const onFormSubmit = () => { trackEvent(SETTINGS_EVENTS.MODULES.REMOVE_GUARD) - - onSubmit() } return ( - + ({ color: palette.primary.light })}>Transaction guard - + + + Once the transaction guard has been removed, checks by the transaction guard will not be conducted before or after any subsequent transactions. diff --git a/src/components/tx-flow/flows/RemoveGuard/index.tsx b/src/components/tx-flow/flows/RemoveGuard/index.tsx new file mode 100644 index 0000000000..2e96e6b471 --- /dev/null +++ b/src/components/tx-flow/flows/RemoveGuard/index.tsx @@ -0,0 +1,17 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import { ReviewRemoveGuard } from '@/components/tx-flow/flows/RemoveGuard/ReviewRemoveGuard' + +// TODO: This can possibly be combined with the remove module type +export type RemoveGuardFlowProps = { + address: string +} + +const RemoveGuardFlow = ({ address }: RemoveGuardFlowProps) => { + return ( + + + + ) +} + +export default RemoveGuardFlow diff --git a/src/components/tx-flow/flows/RemoveModule/ReviewRemoveModule.tsx b/src/components/tx-flow/flows/RemoveModule/ReviewRemoveModule.tsx new file mode 100644 index 0000000000..01a11b223d --- /dev/null +++ b/src/components/tx-flow/flows/RemoveModule/ReviewRemoveModule.tsx @@ -0,0 +1,44 @@ +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' +import { Grid, Typography } from '@mui/material' +import { useContext, useEffect } from 'react' +import { Errors, logError } from '@/services/exceptions' +import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' +import { createRemoveModuleTx } from '@/services/tx/tx-sender' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' +import { type RemoveModuleFlowProps } from '.' +import EthHashInfo from '@/components/common/EthHashInfo' + +export const ReviewRemoveModule = ({ params }: { params: RemoveModuleFlowProps }) => { + const { setSafeTx, safeTxError, setSafeTxError } = useContext(SafeTxContext) + + useEffect(() => { + createRemoveModuleTx(params.address).then(setSafeTx).catch(setSafeTxError) + }, [params.address, setSafeTx, setSafeTxError]) + + useEffect(() => { + if (safeTxError) { + logError(Errors._806, safeTxError.message) + } + }, [safeTxError]) + + const onFormSubmit = () => { + trackEvent(SETTINGS_EVENTS.MODULES.REMOVE_MODULE) + } + + return ( + + + + Module + + + + + + + After removing this module, any feature or app that uses this module might no longer work. If this Safe Account + requires more then one signature, the module removal will have to be confirmed by other owners as well. + + + ) +} diff --git a/src/components/tx-flow/flows/RemoveModule/index.tsx b/src/components/tx-flow/flows/RemoveModule/index.tsx new file mode 100644 index 0000000000..5332d8c0c5 --- /dev/null +++ b/src/components/tx-flow/flows/RemoveModule/index.tsx @@ -0,0 +1,16 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import { ReviewRemoveModule } from './ReviewRemoveModule' + +export type RemoveModuleFlowProps = { + address: string +} + +const RemoveModuleFlow = ({ address }: RemoveModuleFlowProps) => { + return ( + + + + ) +} + +export default RemoveModuleFlow diff --git a/src/components/tx-flow/flows/RemoveOwner/ReviewRemoveOwner.tsx b/src/components/tx-flow/flows/RemoveOwner/ReviewRemoveOwner.tsx new file mode 100644 index 0000000000..3c59f4b35c --- /dev/null +++ b/src/components/tx-flow/flows/RemoveOwner/ReviewRemoveOwner.tsx @@ -0,0 +1,61 @@ +import { useContext, useEffect } from 'react' +import { Typography, Divider, Box, Paper, SvgIcon } from '@mui/material' +import { EthHashInfo } from '@safe-global/safe-react-components' +import type { ReactElement } from 'react' + +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' +import useAddressBook from '@/hooks/useAddressBook' +import useSafeInfo from '@/hooks/useSafeInfo' +import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' +import { createRemoveOwnerTx } from '@/services/tx/tx-sender' +import MinusIcon from '@/public/images/common/minus.svg' +import { SafeTxContext } from '../../SafeTxProvider' +import type { RemoveOwnerFlowProps } from '.' + +import commonCss from '@/components/tx-flow/common/styles.module.css' + +export const ReviewRemoveOwner = ({ params }: { params: RemoveOwnerFlowProps }): ReactElement => { + const addressBook = useAddressBook() + const { setSafeTx, setSafeTxError } = useContext(SafeTxContext) + const { safe } = useSafeInfo() + const { removedOwner, threshold } = params + + useEffect(() => { + createRemoveOwnerTx({ ownerAddress: removedOwner.address, threshold }).then(setSafeTx).catch(setSafeTxError) + }, [removedOwner.address, setSafeTx, setSafeTxError, threshold]) + + const newOwnerLength = safe.owners.length - 1 + + const onFormSubmit = () => { + trackEvent({ ...SETTINGS_EVENTS.SETUP.THRESHOLD, label: safe.threshold }) + trackEvent({ ...SETTINGS_EVENTS.SETUP.OWNERS, label: safe.owners.length }) + } + + return ( + + palette.warning.background, p: 2 }}> + + + Selected owner + + + + + + + Any transaction requires the confirmation of: + + + {threshold} out of {newOwnerLength} owners + + + + + ) +} diff --git a/src/components/tx-flow/flows/RemoveOwner/SetThreshold.tsx b/src/components/tx-flow/flows/RemoveOwner/SetThreshold.tsx new file mode 100644 index 0000000000..942fbdc0ae --- /dev/null +++ b/src/components/tx-flow/flows/RemoveOwner/SetThreshold.tsx @@ -0,0 +1,92 @@ +import { useState } from 'react' +import { Button, Box, CardActions, Divider, Grid, MenuItem, Select, Typography, SvgIcon, Tooltip } from '@mui/material' +import type { ReactElement, SyntheticEvent } from 'react' +import type { SelectChangeEvent } from '@mui/material' + +import EthHashInfo from '@/components/common/EthHashInfo' +import useSafeInfo from '@/hooks/useSafeInfo' +import TxCard from '../../common/TxCard' +import InfoIcon from '@/public/images/notifications/info.svg' +import { TOOLTIP_TITLES } from '@/components/tx-flow/common/constants' +import type { RemoveOwnerFlowProps } from '.' + +import commonCss from '@/components/tx-flow/common/styles.module.css' + +export const SetThreshold = ({ + params, + onSubmit, +}: { + params: RemoveOwnerFlowProps + onSubmit: (data: RemoveOwnerFlowProps) => void +}): ReactElement => { + const { safe } = useSafeInfo() + const [selectedThreshold, setSelectedThreshold] = useState(params.threshold || 1) + + const handleChange = (event: SelectChangeEvent) => { + setSelectedThreshold(parseInt(event.target.value.toString())) + } + + const onSubmitHandler = (e: SyntheticEvent) => { + e.preventDefault() + onSubmit({ ...params, threshold: selectedThreshold }) + } + + const newNumberOfOwners = safe ? safe.owners.length - 1 : 1 + + return ( + +
    + + Review the owner you want to remove from the active Safe Account: + {/* TODO: Update the EthHashInfo style from the replace owner PR */} + + + + + + + + Threshold + + + + + + + Any transaction requires the confirmation of: + + + + + + out of {newNumberOfOwners} owner(s) + + + + + + + + + + +
    + ) +} diff --git a/src/components/tx-flow/flows/RemoveOwner/index.tsx b/src/components/tx-flow/flows/RemoveOwner/index.tsx new file mode 100644 index 0000000000..37e803442d --- /dev/null +++ b/src/components/tx-flow/flows/RemoveOwner/index.tsx @@ -0,0 +1,46 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import useSafeInfo from '@/hooks/useSafeInfo' +import useTxStepper from '../../useTxStepper' +import { ReviewRemoveOwner } from './ReviewRemoveOwner' +import SaveAddressIcon from '@/public/images/common/save-address.svg' +import { SetThreshold } from './SetThreshold' + +type Owner = { + address: string + name?: string +} + +export type RemoveOwnerFlowProps = { + removedOwner: Owner + threshold: number +} + +const RemoveOwnerFlow = (props: Owner) => { + const { safe } = useSafeInfo() + + const defaultValues: RemoveOwnerFlowProps = { + removedOwner: props, + threshold: Math.min(safe.threshold, safe.owners.length - 1), + } + + const { data, step, nextStep, prevStep } = useTxStepper(defaultValues) + + const steps = [ + nextStep({ ...data, ...formData })} />, + , + ] + + return ( + + {steps} + + ) +} + +export default RemoveOwnerFlow diff --git a/src/components/tx-flow/flows/RemoveOwner/styles.module.css b/src/components/tx-flow/flows/RemoveOwner/styles.module.css new file mode 100644 index 0000000000..ddde4a925a --- /dev/null +++ b/src/components/tx-flow/flows/RemoveOwner/styles.module.css @@ -0,0 +1,6 @@ +.action { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 20px; +} diff --git a/src/components/tx-flow/flows/RemoveSpendingLimit/RemoveSpendingLimit.tsx b/src/components/tx-flow/flows/RemoveSpendingLimit/RemoveSpendingLimit.tsx new file mode 100644 index 0000000000..df046f6cc6 --- /dev/null +++ b/src/components/tx-flow/flows/RemoveSpendingLimit/RemoveSpendingLimit.tsx @@ -0,0 +1,91 @@ +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' +import { getSpendingLimitInterface, getSpendingLimitModuleAddress } from '@/services/contracts/spendingLimitContracts' +import useChainId from '@/hooks/useChainId' +import { useContext, useEffect } from 'react' +import { SafeTxContext } from '../../SafeTxProvider' +import EthHashInfo from '@/components/common/EthHashInfo' +import { Grid, Typography } from '@mui/material' +import type { SpendingLimitState } from '@/store/spendingLimitsSlice' +import { relativeTime } from '@/utils/date' +import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' +import useBalances from '@/hooks/useBalances' +import SendAmountBlock from '@/components/tx-flow/flows/TokenTransfer/SendAmountBlock' +import { safeFormatUnits } from '@/utils/formatters' +import SpendingLimitLabel from '@/components/common/SpendingLimitLabel' +import { createTx } from '@/services/tx/tx-sender' + +export const RemoveSpendingLimit = ({ params }: { params: SpendingLimitState }) => { + const { setSafeTx, setSafeTxError } = useContext(SafeTxContext) + const chainId = useChainId() + const { balances } = useBalances() + const token = balances.items.find((item) => item.tokenInfo.address === params.token.address) + + useEffect(() => { + const spendingLimitAddress = getSpendingLimitModuleAddress(chainId) + + if (!spendingLimitAddress) { + return + } + + const spendingLimitInterface = getSpendingLimitInterface() + const txData = spendingLimitInterface.encodeFunctionData('deleteAllowance', [ + params.beneficiary, + params.token.address, + ]) + + const txParams = { + to: spendingLimitAddress, + value: '0', + data: txData, + } + + createTx(txParams).then(setSafeTx).catch(setSafeTxError) + }, [chainId, params.beneficiary, params.token, setSafeTx, setSafeTxError]) + + const onFormSubmit = () => { + trackEvent(SETTINGS_EVENTS.SPENDING_LIMIT.LIMIT_REMOVED) + } + + return ( + + {token && ( + + )} + + + + + Beneficiary + + + + + + + + + + + Reset time + + + + + + + + ) +} diff --git a/src/components/tx-flow/flows/RemoveSpendingLimit/index.tsx b/src/components/tx-flow/flows/RemoveSpendingLimit/index.tsx new file mode 100644 index 0000000000..64f377e3e0 --- /dev/null +++ b/src/components/tx-flow/flows/RemoveSpendingLimit/index.tsx @@ -0,0 +1,14 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import { RemoveSpendingLimit } from './RemoveSpendingLimit' +import type { SpendingLimitState } from '@/store/spendingLimitsSlice' +import SaveAddressIcon from '@/public/images/common/save-address.svg' + +const RemoveSpendingLimitFlow = ({ spendingLimit }: { spendingLimit: SpendingLimitState }) => { + return ( + + + + ) +} + +export default RemoveSpendingLimitFlow diff --git a/src/components/tx-flow/flows/ReplaceOwner/index.tsx b/src/components/tx-flow/flows/ReplaceOwner/index.tsx new file mode 100644 index 0000000000..a8db411808 --- /dev/null +++ b/src/components/tx-flow/flows/ReplaceOwner/index.tsx @@ -0,0 +1,53 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import useTxStepper from '@/components/tx-flow/useTxStepper' +import useSafeInfo from '@/hooks/useSafeInfo' +import { ReviewOwner } from '../AddOwner/ReviewOwner' +import { ChooseOwner, ChooseOwnerMode } from '../AddOwner/ChooseOwner' +import SaveAddressIcon from '@/public/images/common/save-address.svg' + +type Owner = { + address: string + name?: string +} + +export type ReplaceOwnerFlowProps = { + newOwner: Owner + removedOwner: Owner + threshold: number +} + +const ReplaceOwnerFlow = ({ address }: { address: string }) => { + const { safe } = useSafeInfo() + + const defaultValues: ReplaceOwnerFlowProps = { + newOwner: { address: '' }, + removedOwner: { address }, + threshold: safe.threshold, + } + + const { data, step, nextStep, prevStep } = useTxStepper(defaultValues) + + const steps = [ + nextStep({ ...data, ...formData })} + mode={ChooseOwnerMode.REPLACE} + />, + , + ] + + return ( + + {steps} + + ) +} + +export default ReplaceOwnerFlow diff --git a/src/components/tx-flow/flows/ReplaceTx/index.tsx b/src/components/tx-flow/flows/ReplaceTx/index.tsx new file mode 100644 index 0000000000..6a36c47f6b --- /dev/null +++ b/src/components/tx-flow/flows/ReplaceTx/index.tsx @@ -0,0 +1,117 @@ +import { Box, Button, SvgIcon, Tooltip, Typography } from '@mui/material' + +import InfoIcon from '@/public/images/notifications/info.svg' +import ReplaceTxIcon from '@/public/images/transactions/replace-tx.svg' +import { SendTokensButton } from '@/components/tx-flow/common/TxButton' +import { useQueuedTxByNonce } from '@/hooks/useTxQueue' +import { isCustomTxInfo } from '@/utils/transaction-guards' + +import css from './styles.module.css' +import { useContext } from 'react' +import { TxModalContext } from '../..' +import TokenTransferFlow from '../TokenTransfer' +import RejectTx from '../RejectTx' +import TxLayout from '@/components/tx-flow/common/TxLayout' +import TxCard from '@/components/tx-flow/common/TxCard' + +// TODO: Move this to the status widget +/* + +const wrapIcon = (icon: React.ReactNode) =>
    {icon}
    +const steps = [ + { + label: 'Create new transaction with same nonce', + icon:
    , + }, + { + label: 'Collect confirmations from owners', + icon: wrapIcon(), + }, + { + label: 'Execute replacement transaction', + icon: wrapIcon(), + }, + { + label: 'Initial transaction is replaced', + icon: wrapIcon(), + }, +] + */ + +const btnWidth = { + width: { + xs: 240, + sm: '100%', + }, +} + +const ReplaceTxMenu = ({ txNonce }: { txNonce: number }) => { + const { setTxFlow } = useContext(TxModalContext) + const queuedTxsByNonce = useQueuedTxByNonce(txNonce) + const canCancel = !queuedTxsByNonce?.some( + (item) => isCustomTxInfo(item.transaction.txInfo) && item.transaction.txInfo.isCancellation, + ) + + return ( + + + + + + + Select how you would like to replace this transaction + + + A signed transaction cannot be removed but it can be replaced with a new transaction with the same nonce. + + +
    +
    + setTxFlow()} sx={btnWidth} /> +
    + + + or + + +
    + + + + + + + + + + + +
    +
    +
    +
    + ) +} + +export default ReplaceTxMenu diff --git a/src/components/tx/modals/NewTxModal/styles.module.css b/src/components/tx-flow/flows/ReplaceTx/styles.module.css similarity index 81% rename from src/components/tx/modals/NewTxModal/styles.module.css rename to src/components/tx-flow/flows/ReplaceTx/styles.module.css index 27968e698d..e007144b9c 100644 --- a/src/components/tx/modals/NewTxModal/styles.module.css +++ b/src/components/tx-flow/flows/ReplaceTx/styles.module.css @@ -1,8 +1,4 @@ .container { - display: flex; - flex-direction: column; - align-items: center; - padding: var(--space-4) !important; } .redCircle { @@ -44,11 +40,28 @@ .or { text-align: center; - font-weight: 700; padding: var(--space-2) var(--space-3); } -@media (max-width: 600px) { +.buttons { + display: flex; + align-items: center; + justify-content: center; +} + +.rejectButton { + position: relative; + display: flex; + align-items: center; +} + +.rejectHint { + position: absolute; + right: calc(-1 * var(--space-3)); + z-index: 1; +} + +@media (max-width: 599.95px) { .container { padding: var(--space-3) !important; } @@ -79,4 +92,8 @@ .or { padding: var(--space-1) var(--space-2); } + + .buttons { + flex-direction: column; + } } diff --git a/src/components/tx-flow/flows/SafeAppsTx/ReviewSafeAppsTx.tsx b/src/components/tx-flow/flows/SafeAppsTx/ReviewSafeAppsTx.tsx new file mode 100644 index 0000000000..d83a5d33ef --- /dev/null +++ b/src/components/tx-flow/flows/SafeAppsTx/ReviewSafeAppsTx.tsx @@ -0,0 +1,85 @@ +import { useContext, useEffect, useMemo, useState } from 'react' +import type { ReactElement } from 'react' +import { ErrorBoundary } from '@sentry/react' +import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' +import SendToBlock from '@/components/tx-flow/flows/TokenTransfer/SendToBlock' +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' +import { useCurrentChain } from '@/hooks/useChains' +import type { SafeAppsTxParams } from '.' +import { trackSafeAppTxCount } from '@/services/safe-apps/track-app-usage-count' +import { getTxOrigin } from '@/utils/transactions' +import { createMultiSendCallOnlyTx, createTx, dispatchSafeAppsTx } from '@/services/tx/tx-sender' +import useOnboard from '@/hooks/wallets/useOnboard' +import useSafeInfo from '@/hooks/useSafeInfo' +import useHighlightHiddenTab from '@/hooks/useHighlightHiddenTab' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' +import ApprovalEditor from '@/components/tx/ApprovalEditor' +import { getInteractionTitle, isTxValid } from '@/components/safe-apps/utils' +import ErrorMessage from '@/components/tx/ErrorMessage' +import { asError } from '@/services/exceptions/utils' + +type ReviewSafeAppsTxProps = { + safeAppsTx: SafeAppsTxParams +} + +const ReviewSafeAppsTx = ({ + safeAppsTx: { txs, requestId, params, appId, app }, +}: ReviewSafeAppsTxProps): ReactElement => { + const { safe } = useSafeInfo() + const onboard = useOnboard() + const chain = useCurrentChain() + const [txList, setTxList] = useState(txs) + const { safeTx, setSafeTx, safeTxError, setSafeTxError } = useContext(SafeTxContext) + + useHighlightHiddenTab() + + useEffect(() => { + const createSafeTx = async (): Promise => { + const isMultiSend = txList.length > 1 + const tx = isMultiSend ? await createMultiSendCallOnlyTx(txList) : await createTx(txList[0]) + + if (params?.safeTxGas) { + // FIXME: do it properly via the Core SDK + // @ts-expect-error safeTxGas readonly + tx.data.safeTxGas = params.safeTxGas + } + + return tx + } + + createSafeTx().then(setSafeTx).catch(setSafeTxError) + }, [txList, setSafeTx, setSafeTxError, params]) + + const handleSubmit = async () => { + if (!safeTx || !onboard) return + trackSafeAppTxCount(Number(appId)) + + try { + await dispatchSafeAppsTx(safeTx, requestId, onboard, safe.chainId) + } catch (error) { + setSafeTxError(asError(error)) + } + } + + const origin = useMemo(() => getTxOrigin(app), [app]) + const error = !isTxValid(txs) + + return ( + + Error parsing data
    }> + + + + {safeTx ? ( + + ) : error ? ( + + This Safe App initiated a transaction which cannot be processed. Please get in touch with the developer of + this Safe App for more information. + + ) : null} +
    + ) +} + +export default ReviewSafeAppsTx diff --git a/src/components/tx-flow/flows/SafeAppsTx/index.tsx b/src/components/tx-flow/flows/SafeAppsTx/index.tsx new file mode 100644 index 0000000000..fa778d01aa --- /dev/null +++ b/src/components/tx-flow/flows/SafeAppsTx/index.tsx @@ -0,0 +1,27 @@ +import type { BaseTransaction, RequestId, SendTransactionRequestParams } from '@safe-global/safe-apps-sdk' +import TxLayout from '@/components/tx-flow/common/TxLayout' +import type { SafeAppData } from '@safe-global/safe-gateway-typescript-sdk' +import ReviewSafeAppsTx from './ReviewSafeAppsTx' +import { AppTitle } from '@/components/tx-flow/flows/SignMessage' + +export type SafeAppsTxParams = { + appId?: string + app?: SafeAppData + requestId: RequestId + txs: BaseTransaction[] + params?: SendTransactionRequestParams +} + +const SafeAppsTxFlow = ({ data }: { data: SafeAppsTxParams }) => { + return ( + } + step={0} + > + + + ) +} + +export default SafeAppsTxFlow diff --git a/src/components/safe-messages/MsgModal/index.test.tsx b/src/components/tx-flow/flows/SignMessage/SignMessage.test.tsx similarity index 89% rename from src/components/safe-messages/MsgModal/index.test.tsx rename to src/components/tx-flow/flows/SignMessage/SignMessage.test.tsx index d44c40b44e..e11fb881c2 100644 --- a/src/components/safe-messages/MsgModal/index.test.tsx +++ b/src/components/tx-flow/flows/SignMessage/SignMessage.test.tsx @@ -2,7 +2,7 @@ import { hexlify, hexZeroPad, toUtf8Bytes } from 'ethers/lib/utils' import type { ChainInfo, SafeInfo, SafeMessage } from '@safe-global/safe-gateway-typescript-sdk' import { SafeMessageListItemType } from '@safe-global/safe-gateway-typescript-sdk' -import MsgModal from '@/components/safe-messages/MsgModal' +import SignMessage from './SignMessage' import * as useIsWrongChainHook from '@/hooks/useIsWrongChain' import * as useIsSafeOwnerHook from '@/hooks/useIsSafeOwner' import * as useWalletHook from '@/hooks/wallets/useWallet' @@ -67,7 +67,7 @@ const mockOnboard = { }, } as unknown as OnboardAPI -describe('MsgModal', () => { +describe('SignMessage', () => { beforeEach(() => { jest.clearAllMocks() @@ -94,12 +94,11 @@ describe('MsgModal', () => { it('renders the (decoded) message', () => { const { getByText } = render( - , ) @@ -108,13 +107,7 @@ describe('MsgModal', () => { it('displays the SafeMessage message', () => { const { getByText } = render( - , + , ) expect(getByText('0xaa05af77f274774b8bdc7b61d98bc40da523dc2821fdea555f4d6aa413199bcc')).toBeInTheDocument() @@ -122,13 +115,7 @@ describe('MsgModal', () => { it('generates the SafeMessage hash if not provided', () => { const { getByText } = render( - , + , ) expect(getByText('0x73d0948ac608c5d00a6dd26dd396cce79b459307ea365f5a5bd5d3119c2d9708')).toBeInTheDocument() @@ -176,13 +163,7 @@ describe('MsgModal', () => { it('renders the message', () => { const { getByText } = render( - , + , ) Object.keys(EXAMPLE_MESSAGE.message).forEach((key) => { @@ -194,13 +175,7 @@ describe('MsgModal', () => { it('displays the SafeMessage message', () => { const { getByText } = render( - , + , ) expect(getByText('0xd5ffe9f6faa9cc9294673fb161b1c7b3e0c98241e90a38fc6c451941f577fb19')).toBeInTheDocument() @@ -208,13 +183,7 @@ describe('MsgModal', () => { it('generates the SafeMessage hash if not provided', () => { const { getByText } = render( - , + , ) expect(getByText('0x10c926c4f417e445de3fddc7ad8c864f81b9c81881b88eba646015de10d21613')).toBeInTheDocument() @@ -228,12 +197,11 @@ describe('MsgModal', () => { jest.spyOn(useAsyncHook, 'default').mockReturnValue([undefined, new Error('SafeMessage not found'), false]) const { getByText } = render( - , ) @@ -300,13 +268,7 @@ describe('MsgModal', () => { jest.spyOn(useSafeMessages, 'useSafeMessage').mockReturnValue(msg) const { getByText } = render( - , + , ) await act(async () => { @@ -343,12 +305,11 @@ describe('MsgModal', () => { jest.spyOn(useIsSafeOwnerHook, 'default').mockImplementation(() => false) const { getByText } = render( - , ) @@ -365,12 +326,11 @@ describe('MsgModal', () => { jest.spyOn(useChainsHook, 'useCurrentChain').mockReturnValue({ chainName: 'Goerli' } as ChainInfo) const { getByText } = render( - , ) @@ -391,12 +351,11 @@ describe('MsgModal', () => { jest.spyOn(useIsSafeOwnerHook, 'default').mockImplementation(() => false) const { getByText } = render( - , ) @@ -445,13 +404,7 @@ describe('MsgModal', () => { jest.spyOn(useSafeMessages, 'useSafeMessage').mockReturnValue(msg) const { getByText } = render( - , + , ) await waitFor(() => { @@ -479,12 +432,11 @@ describe('MsgModal', () => { .mockImplementation(() => Promise.reject(new Error('Test error'))) const { getByText } = render( - , ) @@ -521,12 +473,11 @@ describe('MsgModal', () => { .mockImplementation(() => Promise.reject(new Error('Test error'))) const { getByText } = render( - , ) diff --git a/src/components/safe-messages/MsgModal/index.tsx b/src/components/tx-flow/flows/SignMessage/SignMessage.tsx similarity index 54% rename from src/components/safe-messages/MsgModal/index.tsx rename to src/components/tx-flow/flows/SignMessage/SignMessage.tsx index ab9ab83aef..9e9f7b788b 100644 --- a/src/components/safe-messages/MsgModal/index.tsx +++ b/src/components/tx-flow/flows/SignMessage/SignMessage.tsx @@ -1,13 +1,10 @@ -import { Grid, DialogActions, Button, Box, Typography, DialogContent, SvgIcon } from '@mui/material' +import { Grid, Button, Box, Typography, SvgIcon, CardContent, CardActions } from '@mui/material' import { useTheme } from '@mui/material/styles' -import { useCallback, useState } from 'react' +import { useContext } from 'react' import { SafeMessageListItemType, SafeMessageStatus } from '@safe-global/safe-gateway-typescript-sdk' import type { ReactElement } from 'react' import type { SafeMessage } from '@safe-global/safe-gateway-typescript-sdk' import type { RequestId } from '@safe-global/safe-apps-sdk' - -import ModalDialog, { ModalDialogTitle } from '@/components/common/ModalDialog' -import SafeAppIconCard from '@/components/safe-apps/SafeAppIconCard' import EthHashInfo from '@/components/common/EthHashInfo' import RequiredIcon from '@/public/images/messages/required.svg' import useSafeInfo from '@/hooks/useSafeInfo' @@ -17,21 +14,17 @@ import ErrorMessage from '@/components/tx/ErrorMessage' import useWallet from '@/hooks/wallets/useWallet' import { useSafeMessage } from '@/hooks/messages/useSafeMessages' import useOnboard, { switchWallet } from '@/hooks/wallets/useOnboard' - -import txStepperCss from '@/components/tx/TxStepper/styles.module.css' -import { DecodedMsg } from '../DecodedMsg' +import { TxModalContext } from '@/components/tx-flow' import CopyButton from '@/components/common/CopyButton' import { WrongChainWarning } from '@/components/tx/WrongChainWarning' import MsgSigners from '@/components/safe-messages/MsgSigners' -import { ConfirmationDialog } from './ConfirmationDialog' import useDecodedSafeMessage from '@/hooks/messages/useDecodedSafeMessage' import useSyncSafeMessageSigner from '@/hooks/messages/useSyncSafeMessageSigner' import SuccessMessage from '@/components/tx/SuccessMessage' -import InfoBox from '../InfoBox' import useHighlightHiddenTab from '@/hooks/useHighlightHiddenTab' - -const APP_LOGO_FALLBACK_IMAGE = '/images/apps/apps-icon.svg' -const APP_NAME_FALLBACK = 'Sign message off-chain' +import InfoBox from '@/components/safe-messages/InfoBox' +import { DecodedMsg } from '@/components/safe-messages/DecodedMsg' +import TxCard from '@/components/tx-flow/common/TxCard' const createSkeletonMessage = (confirmationsRequired: number): SafeMessage => { return { @@ -65,7 +58,7 @@ const MessageHashField = ({ label, hashValue }: { label: string; hashValue: stri const DialogHeader = ({ threshold }: { threshold: number }) => ( <> - + @@ -77,33 +70,6 @@ const DialogHeader = ({ threshold }: { threshold: number }) => ( ) -const DialogTitle = ({ - onClose, - name, - logoUri, -}: { - onClose: () => void - name: string | null - logoUri: string | null -}) => { - const appName = name || APP_NAME_FALLBACK - const appLogo = logoUri || APP_LOGO_FALLBACK_IMAGE - return ( - - - - - - - {appName} - - - - - - ) -} - const MessageDialogError = ({ isOwner, submitError }: { isOwner: boolean; submitError: Error | undefined }) => { const wallet = useWallet() const onboard = useOnboard() @@ -136,8 +102,8 @@ const AlreadySignedByOwnerMessage = ({ hasSigned }: { hasSigned: boolean }) => { } return ( - - + + Your connected wallet has already signed this message. @@ -150,32 +116,23 @@ const AlreadySignedByOwnerMessage = ({ hasSigned }: { hasSigned: boolean }) => { ) } -type BaseProps = { - onClose: () => void -} & Pick +type BaseProps = Pick // Custom Safe Apps do not have a `safeAppId` -type ProposeProps = BaseProps & { +export type ProposeProps = BaseProps & { safeAppId?: number requestId: RequestId } // A proposed message does not return the `safeAppId` but the `logoUri` and `name` of the Safe App that proposed it -type ConfirmProps = BaseProps & { +export type ConfirmProps = BaseProps & { safeAppId?: never requestId?: RequestId } -const MsgModal = ({ - onClose, - logoUri, - name, - message, - safeAppId, - requestId, -}: ProposeProps | ConfirmProps): ReactElement => { +const SignMessage = ({ message, safeAppId, requestId }: ProposeProps | ConfirmProps): ReactElement => { // Hooks & variables - const [showCloseTooltip, setShowCloseTooltip] = useState(false) + const { setTxFlow } = useContext(TxModalContext) const { palette } = useTheme() const { safe } = useSafeInfo() const isOwner = useIsSafeOwner() @@ -198,68 +155,58 @@ const MsgModal = ({ safeMessageHash, requestId, safeAppId, - onClose, + () => setTxFlow(undefined), ) - const handleClose = useCallback(() => { - if (requestId && (!ongoingMessage || ongoingMessage.status === SafeMessageStatus.NEEDS_CONFIRMATION)) { - // If we are in a Safe app modal we want to keep the modal open - setShowCloseTooltip(true) - } else { - onClose() - } - }, [onClose, ongoingMessage, requestId]) - return ( <> - -
    - - - - - - - Message: - - - - - - - - - - - - - - - - - - - - - -
    -
    - setShowCloseTooltip(false)} onClose={onClose} /> + + + + + + Message: + + + + + + + + + + + + + + + + + + + + + + + + + ) } -export default MsgModal +export default SignMessage diff --git a/src/components/tx-flow/flows/SignMessage/index.tsx b/src/components/tx-flow/flows/SignMessage/index.tsx new file mode 100644 index 0000000000..d8d4de3a42 --- /dev/null +++ b/src/components/tx-flow/flows/SignMessage/index.tsx @@ -0,0 +1,35 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import SignMessage, { type ConfirmProps, type ProposeProps } from '@/components/tx-flow/flows/SignMessage/SignMessage' +import { Box, Typography } from '@mui/material' +import SafeAppIconCard from '@/components/safe-apps/SafeAppIconCard' + +const APP_LOGO_FALLBACK_IMAGE = '/images/apps/apps-icon.svg' +const APP_NAME_FALLBACK = 'Sign message off-chain' + +export const AppTitle = ({ name, logoUri }: { name?: string | null; logoUri?: string | null }) => { + const appName = name || APP_NAME_FALLBACK + const appLogo = logoUri || APP_LOGO_FALLBACK_IMAGE + return ( + + + + {appName} + + + ) +} + +const SignMessageFlow = ({ ...props }: ProposeProps | ConfirmProps) => { + return ( + } + step={0} + hideNonce + > + + + ) +} + +export default SignMessageFlow diff --git a/src/components/tx-flow/flows/SignMessageOnChain/ReviewSignMessageOnChain.test.tsx b/src/components/tx-flow/flows/SignMessageOnChain/ReviewSignMessageOnChain.test.tsx new file mode 100644 index 0000000000..aa2272cbdf --- /dev/null +++ b/src/components/tx-flow/flows/SignMessageOnChain/ReviewSignMessageOnChain.test.tsx @@ -0,0 +1,78 @@ +import { Methods } from '@safe-global/safe-apps-sdk' +import * as web3 from '@/hooks/wallets/web3' +import { Web3Provider } from '@ethersproject/providers' +import { render, screen } from '@/tests/test-utils' +import { SafeAppAccessPolicyTypes } from '@safe-global/safe-gateway-typescript-sdk' +import ReviewSignMessageOnChain from '@/components/tx-flow/flows/SignMessageOnChain/ReviewSignMessageOnChain' + +describe('ReviewSignMessageOnChain', () => { + test('can handle messages with EIP712Domain type in the JSON-RPC payload', () => { + jest.spyOn(web3, 'getWeb3ReadOnly').mockImplementation(() => new Web3Provider(jest.fn())) + + render( + , + ) + + expect(screen.getByText('Interact with SignMessageLib')).toBeInTheDocument() + }) +}) diff --git a/src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx b/src/components/tx-flow/flows/SignMessageOnChain/ReviewSignMessageOnChain.tsx similarity index 61% rename from src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx rename to src/components/tx-flow/flows/SignMessageOnChain/ReviewSignMessageOnChain.tsx index a22f775f6d..0d94b49352 100644 --- a/src/components/safe-apps/SafeAppsSignMessageModal/ReviewSafeAppsSignMessage.tsx +++ b/src/components/tx-flow/flows/SignMessageOnChain/ReviewSignMessageOnChain.tsx @@ -1,12 +1,11 @@ import type { ReactElement } from 'react' -import { useState } from 'react' +import { useContext, useEffect } from 'react' import { useMemo } from 'react' import { hashMessage, _TypedDataEncoder } from 'ethers/lib/utils' import { Box } from '@mui/system' import { Typography, SvgIcon } from '@mui/material' import WarningIcon from '@/public/images/notifications/warning.svg' -import { isObjectEIP712TypedData, Methods } from '@safe-global/safe-apps-sdk' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { type EIP712TypedData, isObjectEIP712TypedData, Methods, type RequestId } from '@safe-global/safe-apps-sdk' import { OperationType } from '@safe-global/safe-core-sdk-types' import SendFromBlock from '@/components/tx/SendFromBlock' @@ -14,9 +13,7 @@ import { InfoDetails } from '@/components/transactions/InfoDetails' import EthHashInfo from '@/components/common/EthHashInfo' import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' import { generateDataRowValue } from '@/components/transactions/TxDetails/Summary/TxDataRow' -import type { SafeAppsSignMessageParams } from '@/components/safe-apps/SafeAppsSignMessageModal' import useChainId from '@/hooks/useChainId' -import useAsync from '@/hooks/useAsync' import { getReadOnlySignMessageLibContract } from '@/services/contracts/safeContracts' import { DecodedMsg } from '@/components/safe-messages/DecodedMsg' import CopyButton from '@/components/common/CopyButton' @@ -25,18 +22,23 @@ import { createTx, dispatchSafeAppsTx } from '@/services/tx/tx-sender' import useOnboard from '@/hooks/wallets/useOnboard' import useSafeInfo from '@/hooks/useSafeInfo' import useHighlightHiddenTab from '@/hooks/useHighlightHiddenTab' - -type ReviewSafeAppsSignMessageProps = { - safeAppsSignMessage: SafeAppsSignMessageParams +import { type SafeAppData } from '@safe-global/safe-gateway-typescript-sdk' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' +import { asError } from '@/services/exceptions/utils' + +export type SignMessageOnChainProps = { + appId?: number + app?: SafeAppData + requestId: RequestId + message: string | EIP712TypedData + method: Methods.signMessage | Methods.signTypedMessage } -const ReviewSafeAppsSignMessage = ({ - safeAppsSignMessage: { message, method, requestId }, -}: ReviewSafeAppsSignMessageProps): ReactElement => { +const ReviewSignMessageOnChain = ({ message, method, requestId }: SignMessageOnChainProps): ReactElement => { const chainId = useChainId() const { safe } = useSafeInfo() const onboard = useOnboard() - const [submitError, setSubmitError] = useState() + const { safeTx, setSafeTx, setSafeTxError } = useContext(SafeTxContext) useHighlightHiddenTab() @@ -56,7 +58,7 @@ const ReviewSafeAppsSignMessage = ({ return [] }, [isTextMessage, isTypedMessage, message]) - const [safeTx, safeTxError] = useAsync(() => { + useEffect(() => { let txData if (isTextMessage) { @@ -74,60 +76,66 @@ const ReviewSafeAppsSignMessage = ({ ]) } - return createTx({ + const params = { to: signMessageAddress, value: '0', data: txData || '0x', operation: OperationType.DelegateCall, - }) - }, [message]) + } + createTx(params).then(setSafeTx).catch(setSafeTxError) + }, [ + isTextMessage, + isTypedMessage, + message, + readOnlySignMessageLibContract, + setSafeTx, + setSafeTxError, + signMessageAddress, + ]) const handleSubmit = async () => { - setSubmitError(undefined) if (!safeTx || !onboard) return try { await dispatchSafeAppsTx(safeTx, requestId, onboard, safe.chainId) } catch (error) { - setSubmitError(error as Error) + setSafeTxError(asError(error)) } } return ( - - <> - - - - - - - {safeTx && ( - - - Data (hex encoded) - - {generateDataRowValue(safeTx.data.data, 'rawData')} - - )} - - - Signing method: {method} - + + - - Signing message: {readableMessage && } - - + + + - - - - Signing a message with your Safe Account requires a transaction on the blockchain + {safeTx && ( + + + Data (hex encoded) + {generateDataRowValue(safeTx.data.data, 'rawData')} - + )} + + + Signing method: {method} + + + + Signing message: {readableMessage && } + + + + + + + Signing a message with your Safe Account requires a transaction on the blockchain + + ) } -export default ReviewSafeAppsSignMessage +export default ReviewSignMessageOnChain diff --git a/src/components/tx-flow/flows/SignMessageOnChain/index.tsx b/src/components/tx-flow/flows/SignMessageOnChain/index.tsx new file mode 100644 index 0000000000..bcfc3c7672 --- /dev/null +++ b/src/components/tx-flow/flows/SignMessageOnChain/index.tsx @@ -0,0 +1,19 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import { AppTitle } from '@/components/tx-flow/flows/SignMessage' +import ReviewSignMessageOnChain, { + type SignMessageOnChainProps, +} from '@/components/tx-flow/flows/SignMessageOnChain/ReviewSignMessageOnChain' + +const SignMessageOnChainFlow = ({ props }: { props: SignMessageOnChainProps }) => { + return ( + } + step={0} + > + + + ) +} + +export default SignMessageOnChainFlow diff --git a/src/components/tx-flow/flows/SuccessScreen/StatusMessage.tsx b/src/components/tx-flow/flows/SuccessScreen/StatusMessage.tsx new file mode 100644 index 0000000000..572e5ee48a --- /dev/null +++ b/src/components/tx-flow/flows/SuccessScreen/StatusMessage.tsx @@ -0,0 +1,51 @@ +import classNames from 'classnames' +import { Box, Typography } from '@mui/material' +import LoadingSpinner, { SpinnerStatus } from '@/components/new-safe/create/steps/StatusStep/LoadingSpinner' +import { PendingStatus } from '@/store/pendingTxsSlice' +import css from './styles.module.css' + +const getStep = (status: PendingStatus, error?: Error) => { + switch (status) { + case PendingStatus.PROCESSING: + case PendingStatus.RELAYING: + return { + description: 'Transaction is now processing.', + instruction: 'The transaction was confirmed and is now being processed.', + } + case PendingStatus.INDEXING: + return { + description: 'Transaction was processed.', + instruction: 'It is now being indexed.', + } + default: + return { + description: error ? 'Transaction failed' : 'Transaction was successful.', + instruction: error ? error.message : '', + } + } +} + +const StatusMessage = ({ status, error }: { status: PendingStatus; error?: Error }) => { + const stepInfo = getStep(status, error) + + const isSuccess = status === undefined + const spinnerStatus = error ? SpinnerStatus.ERROR : isSuccess ? SpinnerStatus.SUCCESS : SpinnerStatus.PROCESSING + + return ( + <> + + + + {stepInfo.description} + + + {stepInfo.instruction && ( + + {stepInfo.instruction} + + )} + + ) +} + +export default StatusMessage diff --git a/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx b/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx new file mode 100644 index 0000000000..936fe3e6fe --- /dev/null +++ b/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx @@ -0,0 +1,56 @@ +import { Box, Step, StepConnector, Stepper, Typography } from '@mui/material' +import css from '@/components/new-safe/create/steps/StatusStep/styles.module.css' +import EthHashInfo from '@/components/common/EthHashInfo' +import StatusStep from '@/components/new-safe/create/steps/StatusStep/StatusStep' +import useSafeInfo from '@/hooks/useSafeInfo' +import { PendingStatus } from '@/store/pendingTxsSlice' + +const StatusStepper = ({ status, txHash }: { status: PendingStatus; txHash?: string }) => { + const { safeAddress } = useSafeInfo() + + const isProcessing = status === PendingStatus.PROCESSING || status === PendingStatus.INDEXING || status === undefined + const isProcessed = status === PendingStatus.INDEXING || status === undefined + const isSuccess = status === undefined + + return ( + }> + + + + + Your transaction + + {txHash && ( + + )} + + + + + + + + {isProcessed ? 'Processed' : 'Processing'} + + + + + + + + {isSuccess ? 'Indexed' : 'Indexing'} + + + + + ) +} + +export default StatusStepper diff --git a/src/components/tx-flow/flows/SuccessScreen/index.tsx b/src/components/tx-flow/flows/SuccessScreen/index.tsx new file mode 100644 index 0000000000..f3d1fadf5a --- /dev/null +++ b/src/components/tx-flow/flows/SuccessScreen/index.tsx @@ -0,0 +1,83 @@ +import { useRouter } from 'next/router' +import StatusMessage from './StatusMessage' +import StatusStepper from './StatusStepper' +import { AppRoutes } from '@/config/routes' +import { Button, Container, Divider, Paper } from '@mui/material' +import classnames from 'classnames' +import Link from 'next/link' +import { type UrlObject } from 'url' +import css from './styles.module.css' +import { useAppSelector } from '@/store' +import { selectPendingTxById } from '@/store/pendingTxsSlice' +import { useEffect, useState } from 'react' +import { getBlockExplorerLink } from '@/utils/chains' +import { useCurrentChain } from '@/hooks/useChains' +import { TxEvent, txSubscribe } from '@/services/tx/txEvents' + +export const SuccessScreen = ({ txId }: { txId: string }) => { + const [localTxHash, setLocalTxHash] = useState() + const [error, setError] = useState() + const router = useRouter() + const chain = useCurrentChain() + const pendingTx = useAppSelector((state) => selectPendingTxById(state, txId)) + const { txHash = '', status } = pendingTx || {} + + useEffect(() => { + if (!txHash) return + + setLocalTxHash(txHash) + }, [txHash]) + + useEffect(() => { + const unsubscribe = txSubscribe(TxEvent.FAILED, (detail) => { + if (detail.txId === txId) setError(detail.error) + }) + + return unsubscribe + }, [txId]) + + const homeLink: UrlObject = { + pathname: AppRoutes.home, + query: { safe: router.query.safe }, + } + + const txLink = chain && localTxHash ? getBlockExplorerLink(chain, localTxHash) : undefined + + return ( + +
    + +
    + + {!error && ( + <> + +
    + +
    + + )} + + +
    + + + + {txLink && ( + + )} +
    +
    + ) +} diff --git a/src/components/tx-flow/flows/SuccessScreen/styles.module.css b/src/components/tx-flow/flows/SuccessScreen/styles.module.css new file mode 100644 index 0000000000..aa72e2cf90 --- /dev/null +++ b/src/components/tx-flow/flows/SuccessScreen/styles.module.css @@ -0,0 +1,35 @@ +.row { + width: 100%; + padding: var(--space-4) var(--space-7); +} + +@media (max-width: 599.95px) { + .row { + padding: var(--space-2); + } +} + +.buttons { + display: flex; + justify-content: center; + gap: var(--space-2); + font-size: 14px; +} + +.instructions { + padding: var(--space-3); + margin-top: var(--space-4); + border-style: solid; + border-width: 1px; + border-radius: 6px; +} + +.errorBg { + background-color: var(--color-error-background); + border-color: var(--color-error-light); +} + +.infoBg { + background-color: var(--color-info-background); + border-color: var(--color-info-light); +} diff --git a/src/components/tx-flow/flows/TokenTransfer/CreateTokenTransfer.tsx b/src/components/tx-flow/flows/TokenTransfer/CreateTokenTransfer.tsx new file mode 100644 index 0000000000..44f2e7a844 --- /dev/null +++ b/src/components/tx-flow/flows/TokenTransfer/CreateTokenTransfer.tsx @@ -0,0 +1,195 @@ +import { type ReactElement, useMemo, useState, useCallback, useContext, useEffect } from 'react' +import { type TokenInfo } from '@safe-global/safe-gateway-typescript-sdk' +import { useVisibleBalances } from '@/hooks/useVisibleBalances' +import useAddressBook from '@/hooks/useAddressBook' +import useChainId from '@/hooks/useChainId' +import { getSafeTokenAddress } from '@/components/common/SafeTokenWidget' +import useIsSafeTokenPaused from '@/hooks/useIsSafeTokenPaused' +import useIsOnlySpendingLimitBeneficiary from '@/hooks/useIsOnlySpendingLimitBeneficiary' +import { useAppSelector } from '@/store' +import { selectSpendingLimits } from '@/store/spendingLimitsSlice' +import useWallet from '@/hooks/wallets/useWallet' +import { FormProvider, useForm } from 'react-hook-form' +import useSpendingLimit from '@/hooks/useSpendingLimit' +import { BigNumber } from '@ethersproject/bignumber' +import { sameAddress } from '@/utils/addresses' +import { Box, Button, CardActions, Divider, FormControl, Grid, SvgIcon, Typography } from '@mui/material' +import TokenIcon from '@/components/common/TokenIcon' +import AddressBookInput from '@/components/common/AddressBookInput' +import AddressInputReadOnly from '@/components/common/AddressInputReadOnly' +import InfoIcon from '@/public/images/notifications/info.svg' +import SpendingLimitRow from '@/components/tx/SpendingLimitRow' +import { TokenTransferFields, type TokenTransferParams, TokenTransferType } from '.' +import TxCard from '../../common/TxCard' +import { formatVisualAmount, safeFormatUnits } from '@/utils/formatters' +import commonCss from '@/components/tx-flow/common/styles.module.css' +import TokenAmountInput, { TokenAmountFields } from '@/components/common/TokenAmountInput' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' + +export const AutocompleteItem = (item: { tokenInfo: TokenInfo; balance: string }): ReactElement => ( + + + + + {item.tokenInfo.name} + + + {formatVisualAmount(item.balance, item.tokenInfo.decimals)} {item.tokenInfo.symbol} + + + +) + +const CreateTokenTransfer = ({ + params, + onSubmit, + txNonce, +}: { + params: TokenTransferParams + onSubmit: (data: TokenTransferParams) => void + txNonce?: number +}): ReactElement => { + const disableSpendingLimit = txNonce !== undefined + const { balances } = useVisibleBalances() + const addressBook = useAddressBook() + const chainId = useChainId() + const safeTokenAddress = getSafeTokenAddress(chainId) + const isSafeTokenPaused = useIsSafeTokenPaused() + const isOnlySpendingLimitBeneficiary = useIsOnlySpendingLimitBeneficiary() + const spendingLimits = useAppSelector(selectSpendingLimits) + const wallet = useWallet() + const { setNonce } = useContext(SafeTxContext) + const [recipientFocus, setRecipientFocus] = useState(!params.recipient) + + useEffect(() => { + if (txNonce) { + setNonce(txNonce) + } + }, [setNonce, txNonce]) + + const formMethods = useForm({ + defaultValues: { + ...params, + [TokenTransferFields.type]: disableSpendingLimit + ? TokenTransferType.multiSig + : isOnlySpendingLimitBeneficiary + ? TokenTransferType.spendingLimit + : params.type, + }, + mode: 'onChange', + delayError: 500, + }) + + const { + handleSubmit, + setValue, + watch, + formState: { errors }, + } = formMethods + + const recipient = watch(TokenTransferFields.recipient) + + // Selected token + const tokenAddress = watch(TokenAmountFields.tokenAddress) + const selectedToken = tokenAddress + ? balances.items.find((item) => item.tokenInfo.address === tokenAddress) + : undefined + + const type = watch(TokenTransferFields.type) + const spendingLimit = useSpendingLimit(selectedToken?.tokenInfo) + const isSpendingLimitType = type === TokenTransferType.spendingLimit + const spendingLimitAmount = spendingLimit ? BigNumber.from(spendingLimit.amount).sub(spendingLimit.spent) : undefined + const totalAmount = BigNumber.from(selectedToken?.balance || 0) + const maxAmount = isSpendingLimitType + ? spendingLimitAmount && totalAmount.gt(spendingLimitAmount) + ? spendingLimitAmount + : totalAmount + : totalAmount + + const balancesItems = useMemo(() => { + return isOnlySpendingLimitBeneficiary + ? balances.items.filter(({ tokenInfo }) => { + return spendingLimits?.some(({ beneficiary, token }) => { + return sameAddress(beneficiary, wallet?.address || '') && sameAddress(tokenInfo.address, token.address) + }) + }) + : balances.items + }, [balances.items, isOnlySpendingLimitBeneficiary, spendingLimits, wallet?.address]) + + const onMaxAmountClick = useCallback(() => { + if (!selectedToken) return + + const amount = + isSpendingLimitType && spendingLimitAmount && spendingLimitAmount.lte(selectedToken.balance) + ? spendingLimitAmount.toString() + : selectedToken.balance + + setValue(TokenAmountFields.amount, safeFormatUnits(amount, selectedToken.tokenInfo.decimals), { + shouldValidate: true, + }) + }, [isSpendingLimitType, selectedToken, setValue, spendingLimitAmount]) + + const isSafeTokenSelected = sameAddress(safeTokenAddress, tokenAddress) + const isDisabled = isSafeTokenSelected && isSafeTokenPaused + const isAddressValid = !!recipient && !errors[TokenTransferFields.recipient] + + return ( + + +
    + + {addressBook[recipient] ? ( + { + setValue(TokenTransferFields.recipient, '') + setRecipientFocus(true) + }} + > + + + ) : ( + + )} + + + + + {isDisabled && ( + + + + $SAFE is currently non-transferable. + + + )} + + {!disableSpendingLimit && !!spendingLimitAmount && ( + + + + )} + + + + + + + +
    +
    + ) +} + +export default CreateTokenTransfer diff --git a/src/components/tx/modals/TokenTransferModal/ReviewSpendingLimitTx.tsx b/src/components/tx-flow/flows/TokenTransfer/ReviewSpendingLimitTx.tsx similarity index 72% rename from src/components/tx/modals/TokenTransferModal/ReviewSpendingLimitTx.tsx rename to src/components/tx-flow/flows/TokenTransfer/ReviewSpendingLimitTx.tsx index 2f139ad1b6..5a4ba8633c 100644 --- a/src/components/tx/modals/TokenTransferModal/ReviewSpendingLimitTx.tsx +++ b/src/components/tx-flow/flows/TokenTransfer/ReviewSpendingLimitTx.tsx @@ -1,11 +1,10 @@ import type { ReactElement, SyntheticEvent } from 'react' -import { useMemo, useState } from 'react' +import { useContext, useMemo, useState } from 'react' import type { BigNumberish, BytesLike } from 'ethers' -import { Button, DialogContent, Typography } from '@mui/material' -import SendFromBlock from '@/components/tx/SendFromBlock' -import SendToBlock from '@/components/tx/SendToBlock' -import type { TokenTransferModalProps } from '.' -import { TokenTransferReview } from '@/components/tx/modals/TokenTransferModal/ReviewTokenTx' +import { Button, CardActions, Typography } from '@mui/material' +import SendToBlock from '@/components/tx-flow/flows/TokenTransfer/SendToBlock' +import { type TokenTransferParams } from '@/components/tx-flow/flows/TokenTransfer/index' +import SendAmountBlock from '@/components/tx-flow/flows/TokenTransfer/SendAmountBlock' import useBalances from '@/hooks/useBalances' import useSpendingLimit from '@/hooks/useSpendingLimit' import useSpendingLimitGas from '@/hooks/useSpendingLimitGas' @@ -21,6 +20,9 @@ import { getTxOptions } from '@/utils/transactions' import { MODALS_EVENTS, trackEvent } from '@/services/analytics' import useOnboard from '@/hooks/wallets/useOnboard' import { WrongChainWarning } from '@/components/tx/WrongChainWarning' +import { asError } from '@/services/exceptions/utils' +import TxCard from '@/components/tx-flow/common/TxCard' +import { TxModalContext } from '@/components/tx-flow' export type SpendingLimitTxParams = { safeAddress: string @@ -33,9 +35,16 @@ export type SpendingLimitTxParams = { signature: BytesLike } -const ReviewSpendingLimitTx = ({ params, onSubmit }: TokenTransferModalProps): ReactElement => { +const ReviewSpendingLimitTx = ({ + params, + onSubmit, +}: { + params: TokenTransferParams + onSubmit: () => void +}): ReactElement => { const [isSubmittable, setIsSubmittable] = useState(true) const [submitError, setSubmitError] = useState() + const { setTxFlow } = useContext(TxModalContext) const currentChain = useCurrentChain() const onboard = useOnboard() const { safe, safeAddress } = useSafeInfo() @@ -66,10 +75,7 @@ const ReviewSpendingLimitTx = ({ params, onSubmit }: TokenTransferModalProps): R const { gasLimit, gasLimitLoading } = useSpendingLimitGas(txParams) - const [advancedParams, setManualParams] = useAdvancedParams({ - gasLimit, - nonce: params.txNonce, - }) + const [advancedParams, setManualParams] = useAdvancedParams(gasLimit) const handleSubmit = async (e: SyntheticEvent) => { e.preventDefault() @@ -84,12 +90,13 @@ const ReviewSpendingLimitTx = ({ params, onSubmit }: TokenTransferModalProps): R try { await dispatchSpendingLimitTxExecution(txParams, txOptions, onboard, safe.chainId, safeAddress) - onSubmit() - } catch (err) { - logError(Errors._801, (err as Error).message) + setTxFlow(undefined) + } catch (_err) { + const err = asError(_err) + logError(Errors._801, err) setIsSubmittable(true) - setSubmitError(err as Error) + setSubmitError(err) } } @@ -97,24 +104,18 @@ const ReviewSpendingLimitTx = ({ params, onSubmit }: TokenTransferModalProps): R return (
    - - + + Spending limit transactions only appear in the interface once they are successfully processed and indexed. Pending transactions can only be viewed in your signer wallet application or under your wallet address on a Blockchain Explorer. - {token && } - + {token && } - + @@ -122,14 +123,16 @@ const ReviewSpendingLimitTx = ({ params, onSubmit }: TokenTransferModalProps): R Error submitting the transaction. Please try again. )} - + You're about to create a transaction and will need to confirm it with your currently connected wallet. - - + + + +
    ) } diff --git a/src/components/tx-flow/flows/TokenTransfer/ReviewTokenTransfer.tsx b/src/components/tx-flow/flows/TokenTransfer/ReviewTokenTransfer.tsx new file mode 100644 index 0000000000..2d8c3c33ce --- /dev/null +++ b/src/components/tx-flow/flows/TokenTransfer/ReviewTokenTransfer.tsx @@ -0,0 +1,50 @@ +import { useContext, useEffect } from 'react' +import useBalances from '@/hooks/useBalances' +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' +import SendAmountBlock from '@/components/tx-flow/flows/TokenTransfer/SendAmountBlock' +import SendToBlock from '@/components/tx-flow/flows/TokenTransfer/SendToBlock' +import { createTokenTransferParams } from '@/services/tx/tokenTransferParams' +import { createTx } from '@/services/tx/tx-sender' +import type { TokenTransferParams } from '.' +import { SafeTxContext } from '../../SafeTxProvider' + +const ReviewTokenTransfer = ({ + params, + onSubmit, + txNonce, +}: { + params: TokenTransferParams + onSubmit: () => void + txNonce?: number +}) => { + const { setSafeTx, setSafeTxError, setNonce } = useContext(SafeTxContext) + const { balances } = useBalances() + const token = balances.items.find((item) => item.tokenInfo.address === params.tokenAddress) + + useEffect(() => { + if (txNonce !== undefined) { + setNonce(txNonce) + } + + if (!token) return + + const txParams = createTokenTransferParams( + params.recipient, + params.amount, + token.tokenInfo.decimals, + token.tokenInfo.address, + ) + + createTx(txParams, txNonce).then(setSafeTx).catch(setSafeTxError) + }, [params, txNonce, token, setNonce, setSafeTx, setSafeTxError]) + + return ( + + {token && } + + + + ) +} + +export default ReviewTokenTransfer diff --git a/src/components/tx-flow/flows/TokenTransfer/ReviewTokenTx.tsx b/src/components/tx-flow/flows/TokenTransfer/ReviewTokenTx.tsx new file mode 100644 index 0000000000..98e2535f31 --- /dev/null +++ b/src/components/tx-flow/flows/TokenTransfer/ReviewTokenTx.tsx @@ -0,0 +1,25 @@ +import { type ReactElement } from 'react' +import { type TokenTransferParams, TokenTransferType } from '@/components/tx-flow/flows/TokenTransfer/index' +import ReviewTokenTransfer from '@/components/tx-flow/flows/TokenTransfer/ReviewTokenTransfer' +import ReviewSpendingLimitTx from '@/components/tx-flow/flows/TokenTransfer/ReviewSpendingLimitTx' + +// TODO: Split this into separate flows +const ReviewTokenTx = ({ + params, + onSubmit, + txNonce, +}: { + params: TokenTransferParams + onSubmit: () => void + txNonce?: number +}): ReactElement => { + const isSpendingLimitTx = params.type === TokenTransferType.spendingLimit + + return isSpendingLimitTx ? ( + + ) : ( + + ) +} + +export default ReviewTokenTx diff --git a/src/components/tx-flow/flows/TokenTransfer/SendAmountBlock.tsx b/src/components/tx-flow/flows/TokenTransfer/SendAmountBlock.tsx new file mode 100644 index 0000000000..b5cd9a2301 --- /dev/null +++ b/src/components/tx-flow/flows/TokenTransfer/SendAmountBlock.tsx @@ -0,0 +1,57 @@ +import { type ReactNode } from 'react' +import { type TokenInfo } from '@safe-global/safe-gateway-typescript-sdk' +import { Grid, Typography } from '@mui/material' +import css from './styles.module.css' +import TokenIcon from '@/components/common/TokenIcon' +import { formatAmountPrecise } from '@/utils/formatNumber' +import { PSEUDO_APPROVAL_VALUES } from '@/components/tx/ApprovalEditor/utils/approvals' + +const AmountBlock = ({ + amount, + tokenInfo, + children, +}: { + amount: number | string + tokenInfo: Omit & { logoUri?: string } + children?: ReactNode +}) => { + return ( + + + {tokenInfo.symbol} + {children} + {amount === PSEUDO_APPROVAL_VALUES.UNLIMITED ? ( + {PSEUDO_APPROVAL_VALUES.UNLIMITED} + ) : ( + {formatAmountPrecise(amount, tokenInfo.decimals)} + )} + + ) +} + +const SendAmountBlock = ({ + amount, + tokenInfo, + children, + title = 'Send', +}: { + amount: number | string + tokenInfo: Omit & { logoUri?: string } + children?: ReactNode + title?: string +}) => { + return ( + + + + {title} + + + + {children} + + + ) +} + +export default SendAmountBlock diff --git a/src/components/tx-flow/flows/TokenTransfer/SendToBlock.tsx b/src/components/tx-flow/flows/TokenTransfer/SendToBlock.tsx new file mode 100644 index 0000000000..8ae39346cd --- /dev/null +++ b/src/components/tx-flow/flows/TokenTransfer/SendToBlock.tsx @@ -0,0 +1,21 @@ +import { Grid, Typography } from '@mui/material' +import EthHashInfo from '@/components/common/EthHashInfo' + +const SendToBlock = ({ address, title = 'To' }: { address: string; title?: string }) => { + return ( + + + + {title} + + + + + + + + + ) +} + +export default SendToBlock diff --git a/src/components/tx-flow/flows/TokenTransfer/index.tsx b/src/components/tx-flow/flows/TokenTransfer/index.tsx new file mode 100644 index 0000000000..e1fa557a0f --- /dev/null +++ b/src/components/tx-flow/flows/TokenTransfer/index.tsx @@ -0,0 +1,69 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import useTxStepper from '../../useTxStepper' +import CreateTokenTransfer from './CreateTokenTransfer' +import ReviewTokenTx from '@/components/tx-flow/flows/TokenTransfer/ReviewTokenTx' +import AssetsIcon from '@/public/images/sidebar/assets.svg' +import { ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' +import { TokenAmountFields } from '@/components/common/TokenAmountInput' + +export enum TokenTransferType { + multiSig = 'multiSig', + spendingLimit = 'spendingLimit', +} + +enum Fields { + recipient = 'recipient', + type = 'type', +} + +export const TokenTransferFields = { ...Fields, ...TokenAmountFields } + +export type TokenTransferParams = { + [TokenTransferFields.recipient]: string + [TokenTransferFields.tokenAddress]: string + [TokenTransferFields.amount]: string + [TokenTransferFields.type]: TokenTransferType +} + +type TokenTransferFlowProps = Partial & { + txNonce?: number +} + +const defaultParams: TokenTransferParams = { + recipient: '', + tokenAddress: ZERO_ADDRESS, + amount: '', + type: TokenTransferType.multiSig, +} + +const TokenTransferFlow = ({ txNonce, ...params }: TokenTransferFlowProps) => { + const { data, step, nextStep, prevStep } = useTxStepper({ + ...defaultParams, + ...params, + }) + + const steps = [ + nextStep({ ...data, ...formData })} + />, + + null} />, + ] + + return ( + + {steps} + + ) +} + +export default TokenTransferFlow diff --git a/src/components/tx-flow/flows/TokenTransfer/styles.module.css b/src/components/tx-flow/flows/TokenTransfer/styles.module.css new file mode 100644 index 0000000000..3330447b22 --- /dev/null +++ b/src/components/tx-flow/flows/TokenTransfer/styles.module.css @@ -0,0 +1,5 @@ +.token { + display: flex; + align-items: center; + gap: var(--space-1); +} diff --git a/src/components/settings/ContractVersion/UpdateSafeDialog.tsx b/src/components/tx-flow/flows/UpdateSafe/UpdateSafeReview.tsx similarity index 54% rename from src/components/settings/ContractVersion/UpdateSafeDialog.tsx rename to src/components/tx-flow/flows/UpdateSafe/UpdateSafeReview.tsx index b424aaf16b..62239c188f 100644 --- a/src/components/settings/ContractVersion/UpdateSafeDialog.tsx +++ b/src/components/tx-flow/flows/UpdateSafe/UpdateSafeReview.tsx @@ -1,62 +1,31 @@ -import { Button, Typography } from '@mui/material' -import { useState } from 'react' +import { useContext, useEffect } from 'react' +import { Typography } from '@mui/material' +import ExternalLink from '@/components/common/ExternalLink' import { LATEST_SAFE_VERSION } from '@/config/constants' - -import TxModal from '@/components/tx/TxModal' - -import useAsync from '@/hooks/useAsync' - -import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' -import { createUpdateSafeTxs } from '@/services/tx/safeUpdateParams' - -import useSafeInfo from '@/hooks/useSafeInfo' import { useCurrentChain } from '@/hooks/useChains' -import ExternalLink from '@/components/common/ExternalLink' +import useSafeInfo from '@/hooks/useSafeInfo' +import { createUpdateSafeTxs } from '@/services/tx/safeUpdateParams' import { createMultiSendCallOnlyTx } from '@/services/tx/tx-sender' -import CheckWallet from '@/components/common/CheckWallet' - -const UpdateSafeSteps: TxStepperProps['steps'] = [ - { - label: 'Update Safe Account version', - render: (_, onSubmit) => , - }, -] - -const UpdateSafeDialog = () => { - const [open, setOpen] = useState(false) - - const handleClose = () => setOpen(false) - - return ( - <> - - {(isOk) => ( - - )} - - {open && } - - ) -} +import { SafeTxContext } from '../../SafeTxProvider' +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -const ReviewUpdateSafeStep = ({ onSubmit }: { onSubmit: () => void }) => { +export const UpdateSafeReview = () => { const { safe, safeLoaded } = useSafeInfo() const chain = useCurrentChain() + const { setSafeTx, setSafeTxError, setNonce } = useContext(SafeTxContext) - const [safeTx, safeTxError] = useAsync(() => { - if (!chain || !safeLoaded) return + useEffect(() => { + if (!chain || !safeLoaded) { + return + } const txs = createUpdateSafeTxs(safe, chain) - return createMultiSendCallOnlyTx(txs) - }, [chain, safe, safeLoaded]) + createMultiSendCallOnlyTx(txs).then(setSafeTx).catch(setSafeTxError) + }, [chain, safe, safeLoaded, setNonce, setSafeTx, setSafeTxError]) return ( - + null}> Update now to take advantage of new features and the highest security standards available. @@ -81,5 +50,3 @@ const ReviewUpdateSafeStep = ({ onSubmit }: { onSubmit: () => void }) => { ) } - -export default UpdateSafeDialog diff --git a/src/components/tx-flow/flows/UpdateSafe/index.tsx b/src/components/tx-flow/flows/UpdateSafe/index.tsx new file mode 100644 index 0000000000..082272d015 --- /dev/null +++ b/src/components/tx-flow/flows/UpdateSafe/index.tsx @@ -0,0 +1,13 @@ +import TxLayout from '@/components/tx-flow/common/TxLayout' +import { UpdateSafeReview } from './UpdateSafeReview' +import SettingsIcon from '@/public/images/sidebar/settings.svg' + +const UpdateSafeFlow = () => { + return ( + + + + ) +} + +export default UpdateSafeFlow diff --git a/src/components/tx-flow/index.tsx b/src/components/tx-flow/index.tsx new file mode 100644 index 0000000000..28e4bf8267 --- /dev/null +++ b/src/components/tx-flow/index.tsx @@ -0,0 +1,77 @@ +import { createContext, type ReactElement, type ReactNode, useState, useEffect, useCallback } from 'react' +import TxModalDialog from '@/components/common/TxModalDialog' +import { useRouter } from 'next/router' + +const noop = () => {} + +type TxModalContextType = { + txFlow: JSX.Element | undefined + setTxFlow: (txFlow: TxModalContextType['txFlow'], onClose?: () => void, shouldWarn?: boolean) => void + setFullWidth: (fullWidth: boolean) => void +} + +export const TxModalContext = createContext({ + txFlow: undefined, + setTxFlow: noop, + setFullWidth: noop, +}) + +export const TxModalProvider = ({ children }: { children: ReactNode }): ReactElement => { + const [txFlow, setFlow] = useState(undefined) + const [shouldWarn, setShouldWarn] = useState(true) + const [, setOnClose] = useState[1]>(noop) + const [fullWidth, setFullWidth] = useState(false) + const router = useRouter() + + const handleModalClose = useCallback(() => { + setOnClose((prevOnClose) => { + prevOnClose?.() + return noop + }) + setFlow(undefined) + }, [setFlow, setOnClose]) + + const handleShowWarning = useCallback(() => { + if (!shouldWarn) { + handleModalClose() + return + } + + const ok = confirm('Closing this window will discard your current progress.') + if (!ok) { + router.events.emit('routeChangeError') + throw 'routeChange aborted. This error can be safely ignored - https://github.com/zeit/next.js/issues/2476.' + } + + handleModalClose() + }, [shouldWarn, handleModalClose, router]) + + const setTxFlow = useCallback( + (txFlow: TxModalContextType['txFlow'], onClose?: () => void, shouldWarn?: boolean) => { + setFlow(txFlow) + setOnClose(() => onClose ?? noop) + setShouldWarn(shouldWarn ?? true) + }, + [setFlow, setOnClose], + ) + + // Show the confirmation dialog if user navigates + useEffect(() => { + if (!txFlow) return + + router.events.on('routeChangeStart', handleShowWarning) + return () => { + router.events.off('routeChangeStart', handleShowWarning) + } + }, [txFlow, handleShowWarning, router]) + + return ( + + {children} + + + {txFlow} + + + ) +} diff --git a/src/components/tx-flow/useTxStepper.tsx b/src/components/tx-flow/useTxStepper.tsx new file mode 100644 index 0000000000..0b6ac457ce --- /dev/null +++ b/src/components/tx-flow/useTxStepper.tsx @@ -0,0 +1,19 @@ +import { useCallback, useState } from 'react' + +const useTxStepper = (initialData: T) => { + const [step, setStep] = useState(0) + const [data, setData] = useState(initialData) + + const nextStep = useCallback((entireData: T) => { + setData(entireData) + setStep((prevStep) => prevStep + 1) + }, []) + + const prevStep = useCallback(() => { + setStep((prevStep) => prevStep - 1) + }, []) + + return { step, data, nextStep, prevStep } +} + +export default useTxStepper diff --git a/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx b/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx index 27de329299..c68716ff54 100644 --- a/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx +++ b/src/components/tx/AdvancedParams/AdvancedParamsForm.tsx @@ -4,7 +4,6 @@ import { BigNumber } from 'ethers' import { FormProvider, useForm } from 'react-hook-form' import { safeFormatUnits, safeParseUnits } from '@/utils/formatters' import { FLOAT_REGEX } from '@/utils/validation' -import NonceForm from '../NonceForm' import ModalDialog from '@/components/common/ModalDialog' import { AdvancedField, type AdvancedParameters } from './types.d' import GasLimitInput from './GasLimitInput' @@ -15,33 +14,27 @@ import { HelpCenterArticle } from '@/config/constants' type AdvancedParamsFormProps = { params: AdvancedParameters onSubmit: (params: AdvancedParameters) => void - recommendedNonce?: number recommendedGasLimit?: AdvancedParameters['gasLimit'] isExecution: boolean isEIP1559: boolean - nonceReadonly?: boolean willRelay?: boolean } type FormData = { - [AdvancedField.nonce]: number [AdvancedField.userNonce]: number [AdvancedField.gasLimit]?: string [AdvancedField.maxFeePerGas]: string [AdvancedField.maxPriorityFeePerGas]: string - [AdvancedField.safeTxGas]: number } const AdvancedParamsForm = ({ params, ...props }: AdvancedParamsFormProps) => { const formMethods = useForm({ mode: 'onChange', defaultValues: { - nonce: params.nonce, userNonce: params.userNonce || 0, gasLimit: params.gasLimit?.toString() || undefined, maxFeePerGas: params.maxFeePerGas ? safeFormatUnits(params.maxFeePerGas) : '', maxPriorityFeePerGas: params.maxPriorityFeePerGas ? safeFormatUnits(params.maxPriorityFeePerGas) : '', - safeTxGas: params.safeTxGas, }, }) const { @@ -52,23 +45,19 @@ const AdvancedParamsForm = ({ params, ...props }: AdvancedParamsFormProps) => { const onBack = () => { props.onSubmit({ - nonce: params.nonce, userNonce: params.userNonce, gasLimit: params.gasLimit, maxFeePerGas: params.maxFeePerGas, maxPriorityFeePerGas: params.maxPriorityFeePerGas, - safeTxGas: params.safeTxGas, }) } const onSubmit = (data: FormData) => { props.onSubmit({ - nonce: data.nonce, userNonce: data.userNonce, gasLimit: data.gasLimit ? BigNumber.from(data.gasLimit) : undefined, maxFeePerGas: safeParseUnits(data.maxFeePerGas) || params.maxFeePerGas, maxPriorityFeePerGas: safeParseUnits(data.maxPriorityFeePerGas) || params.maxPriorityFeePerGas, - safeTxGas: data.safeTxGas || params.safeTxGas, }) } @@ -84,100 +73,59 @@ const AdvancedParamsForm = ({ params, ...props }: AdvancedParamsFormProps) => {
    - {(params.nonce !== undefined || !!params.safeTxGas) && ( - - - Safe Account transaction - - - )} - - {/* Safe nonce */} - {params.nonce !== undefined && ( - - - - - - )} - - {/* safeTxGas (< v1.3.0) */} - {!!params.safeTxGas && ( + + + Execution parameters + + + + {/* User nonce */} + + + + + + + {/* Gas limit */} + + + + + {/* Gas price */} + {props.isEIP1559 && ( )} - {props.isExecution && ( - <> - - - Owner transaction (Execution) - - - - {/* User nonce */} - - - - - - - {/* Gas limit */} - - - - - {/* Gas price */} - {props.isEIP1559 && ( - - - - - - )} - - - - - - - - )} + + + + + {/* Help link */} diff --git a/src/components/tx/AdvancedParams/index.tsx b/src/components/tx/AdvancedParams/index.tsx index e76189eaaa..f50ef914da 100644 --- a/src/components/tx/AdvancedParams/index.tsx +++ b/src/components/tx/AdvancedParams/index.tsx @@ -8,10 +8,8 @@ import { type AdvancedParameters } from './types' type Props = { params: AdvancedParameters - recommendedNonce?: number recommendedGasLimit?: AdvancedParameters['gasLimit'] willExecute: boolean - nonceReadonly: boolean onFormSubmit: (data: AdvancedParameters) => void gasLimitError?: Error willRelay?: boolean @@ -19,10 +17,8 @@ type Props = { const AdvancedParams = ({ params, - recommendedNonce, recommendedGasLimit, willExecute, - nonceReadonly, onFormSubmit, gasLimitError, willRelay, @@ -44,9 +40,7 @@ const AdvancedParams = ({ void] => { +export const useAdvancedParams = ( + gasLimit?: AdvancedParameters['gasLimit'], +): [AdvancedParameters, (params: AdvancedParameters) => void] => { const [manualParams, setManualParams] = useState() const [gasPrice] = useGasPrice() const userNonce = useUserNonce() const advancedParams: AdvancedParameters = useMemo( () => ({ - nonce: manualParams?.nonce ?? nonce, userNonce: manualParams?.userNonce ?? userNonce, gasLimit: manualParams?.gasLimit ?? gasLimit, maxFeePerGas: manualParams?.maxFeePerGas ?? gasPrice?.maxFeePerGas, maxPriorityFeePerGas: manualParams?.maxPriorityFeePerGas ?? gasPrice?.maxPriorityFeePerGas, - safeTxGas: manualParams?.safeTxGas ?? safeTxGas, }), - [manualParams, nonce, userNonce, gasLimit, gasPrice?.maxFeePerGas, gasPrice?.maxPriorityFeePerGas, safeTxGas], + [manualParams, userNonce, gasLimit, gasPrice?.maxFeePerGas, gasPrice?.maxPriorityFeePerGas], ) return [advancedParams, setManualParams] diff --git a/src/components/tx/ApprovalEditor/ApprovalEditor.test.tsx b/src/components/tx/ApprovalEditor/ApprovalEditor.test.tsx index f83ab7502c..993deb5bba 100644 --- a/src/components/tx/ApprovalEditor/ApprovalEditor.test.tsx +++ b/src/components/tx/ApprovalEditor/ApprovalEditor.test.tsx @@ -1,441 +1,85 @@ -import { - fireEvent, - getAllByRole, - getByRole, - getByText, - mockWeb3Provider, - render, - type RenderResult, - waitFor, - act, -} from '@/tests/test-utils' +import { render } from '@/tests/test-utils' import ApprovalEditor from '.' -import { type SafeBalanceResponse, TokenType } from '@safe-global/safe-gateway-typescript-sdk' -import { hexlify, hexZeroPad, Interface } from 'ethers/lib/utils' -import { ERC20__factory, Multi_send_call_only__factory } from '@/types/contracts' -import type { BaseTransaction } from '@safe-global/safe-apps-sdk' -import { encodeMultiSendData } from '@safe-global/safe-core-sdk/dist/src/utils/transactions/utils' -import { parseUnits } from '@ethersproject/units' -import { getMultiSendCallOnlyContractAddress } from '@/services/contracts/safeContracts' -import { type SafeSignature, type SafeTransaction } from '@safe-global/safe-core-sdk-types' - -const PREFIX_TEXT = 'Approve access to' -const ERC20_INTERFACE = ERC20__factory.createInterface() - -const createApproveCallData = (spender: string, value: string) => { - return ERC20_INTERFACE.encodeFunctionData('approve', [spender, value]) -} - -const createNonApproveCallData = (to: string, value: string) => { - return ERC20_INTERFACE.encodeFunctionData('transfer', [to, value]) -} - -const getApprovalSummaryElement = (text: string, result: RenderResult): HTMLElement => { - const accordionSummary = result.getByText(PREFIX_TEXT, { exact: false }) - expect(accordionSummary.parentElement).not.toBeNull() - return accordionSummary.parentElement! -} - -const renderEditor = async (txs: BaseTransaction[], updateTxs?: (newTxs: BaseTransaction[]) => void) => { - if (txs.length === 0) { - // eslint-disable-next-line react/display-name - return () => - } - - let txData: string - let to: string - if (txs.length > 1) { - const multiSendCallData = encodeMultiSendData(txs.map((tx) => ({ ...tx, operation: 0 }))) - txData = Multi_send_call_only__factory.createInterface().encodeFunctionData('multiSend', [multiSendCallData]) - to = getMultiSendCallOnlyContractAddress('1') || '0x1' - } else { - txData = txs[0].data - to = txs[0].to - } - - const safeTx: SafeTransaction = { - data: { - to, - data: txData, - baseGas: 0, - gasPrice: 0, - gasToken: '0x0', - nonce: 1, - operation: txs.length > 1 ? 1 : 0, - refundReceiver: '0x0', - safeTxGas: 0, - value: '0x0', - }, - signatures: new Map(), - addSignature: function (signature: SafeSignature): void { - throw new Error('Function not implemented.') - }, - encodedSignatures: function (): string { - throw new Error('Function not implemented.') - }, - } - // eslint-disable-next-line react/display-name - return () => -} +import { TokenType } from '@safe-global/safe-gateway-typescript-sdk' +import { OperationType } from '@safe-global/safe-core-sdk-types' +import * as approvalInfos from '@/components/tx/ApprovalEditor/hooks/useApprovalInfos' +import { createMockSafeTransaction } from '@/tests/transactions' describe('ApprovalEditor', () => { beforeEach(() => { jest.clearAllMocks() - localStorage.clear() }) - // Edit mode is used in the ReviewSafeAppsTxModal - // There we pass in an array of BaseTransactions. - describe('in edit mode', () => { - const updateCallback = jest.fn() - - describe('should render null', () => { - it('for empty txs', async () => { - const Editor = await renderEditor([], updateCallback) - const result = render() - expect(result.container).toBeEmptyDOMElement() - }) - - it('for a single tx containing an approve call with wrong params', async () => { - const testInterface = new Interface(['function approve(address, uint256, uint8)']) - const txs = [ - { - to: hexZeroPad('0x123', 20), - data: testInterface.encodeFunctionData('approve', [hexZeroPad('0x2', 20), '123', '1']), - value: '0', - }, - ] - const Editor = await renderEditor(txs, updateCallback) - const result = render() - expect(result.container).toBeEmptyDOMElement() - }) - - it('for multiple non approve txs', async () => { - const txs = [ - { - to: hexZeroPad('0x123', 20), - data: createNonApproveCallData(hexZeroPad('0x2', 20), '200'), - value: '0', - }, - { - to: hexZeroPad('0x123', 20), - data: createNonApproveCallData(hexZeroPad('0x3', 20), '12'), - value: '0', - }, - ] - const Editor = await renderEditor(txs, updateCallback) - - const result = render() - expect(result.container).toBeEmptyDOMElement() - }) - }) - - it('should render and edit multiple txs with partly missing token info', async () => { - const tokenAddress1 = hexZeroPad('0x123', 20) - const tokenAddress2 = hexZeroPad('0x234', 20) - - // tokenAddress2 gets its infos from the web3 provider - mockWeb3Provider([ - { - returnType: 'uint8', - returnValue: '12', - signature: 'decimals()', - }, - { - returnType: 'string', - returnValue: 'OTHER', - signature: 'symbol()', - }, - ]) - const mockBalances: SafeBalanceResponse = { - fiatTotal: '100', - items: [ - { - balance: '100', - fiatBalance: '100', - fiatConversion: '1', - tokenInfo: { - address: tokenAddress1, - decimals: 18, - logoUri: '', - name: 'Test', - symbol: 'TST', - type: TokenType.ERC20, - }, - }, - ], - } - const txs = [ - { - to: tokenAddress1, - data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('100', 18))), - value: '0', - }, - { - to: tokenAddress1, - data: createNonApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('200', 18))), - value: '0', - }, - { - to: tokenAddress2, - data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('300', 12))), - value: '0', - }, - ] - const Editor = await renderEditor(txs, updateCallback) - - const result = render(, { - initialReduxState: { - balances: { data: mockBalances, loading: false }, - }, - }) - await waitFor(() => { - const accordionSummary = getApprovalSummaryElement(PREFIX_TEXT, result) - getByText(accordionSummary, '2', { exact: false }) - getByText(accordionSummary, 'Tokens', { exact: false }) - }) - - // Edit first approval - { - const accordionSummary = getApprovalSummaryElement(PREFIX_TEXT, result) - const parentContainer = accordionSummary.closest('.MuiPaper-root') - const accordionDetails = parentContainer?.querySelector('.MuiAccordionDetails-root') - expect(accordionDetails).not.toBeNull() - - // toggle edit row - const buttons = getAllByRole(accordionDetails as HTMLElement, 'button') - // 2 rows with one button each - expect(buttons).toHaveLength(2) + it('returns null if there is no safe transaction', () => { + const result = render() - await waitFor(() => { - const amountInput = accordionDetails?.querySelector('input[name="approvals.0"]') as HTMLInputElement - expect(amountInput).not.toBeNull() - expect(amountInput).toHaveValue('100.0') - expect(amountInput).toBeEnabled() - }) - - const amountInput = accordionDetails?.querySelector('input[name="approvals.0"]') as HTMLInputElement - - await act(() => { - fireEvent.change(amountInput!, { target: { value: '123' } }) - }) - - await act(() => { - buttons[0].click() - }) - - await waitFor(() => { - expect(updateCallback).toHaveBeenCalledWith([ - { - to: tokenAddress1, - data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('123', 18))), - value: '0', - }, - { - to: tokenAddress1, - data: createNonApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('200', 18))), - value: '0', - }, - { - to: tokenAddress2, - data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('300', 12))), - value: '0', - }, - ]) - }) - } - - // Edit second approval - { - const accordionSummary = getApprovalSummaryElement(PREFIX_TEXT, result) - const parentContainer = accordionSummary.closest('.MuiPaper-root') - const accordionDetails = parentContainer?.querySelector('.MuiAccordionDetails-root') - expect(accordionDetails).not.toBeNull() - - // toggle edit row - const buttons = getAllByRole(accordionDetails as HTMLElement, 'button') - // 2 rows with one button each - expect(buttons).toHaveLength(2) - await waitFor(() => { - const amountInput = accordionDetails?.querySelector('input[name="approvals.1"]') as HTMLInputElement - expect(amountInput).not.toBeNull() - expect(amountInput).toHaveValue('300.0') - expect(amountInput).toBeEnabled() - }) - - const amountInput = accordionDetails?.querySelector('input[name="approvals.1"]') as HTMLInputElement - - await act(() => { - fireEvent.change(amountInput!, { target: { value: '456' } }) - }) - - await act(() => { - buttons[1].click() - }) - - await waitFor(() => { - expect(updateCallback).toHaveBeenCalledWith([ - { - to: tokenAddress1, - data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('123', 18))), - value: '0', - }, - { - to: tokenAddress1, - data: createNonApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('200', 18))), - value: '0', - }, - { - to: tokenAddress2, - data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('456', 12))), - value: '0', - }, - ]) - }) - } - }) - - it('should render and edit single tx', async () => { - const tokenAddress = hexZeroPad('0x123', 20) - const mockBalances: SafeBalanceResponse = { - fiatTotal: '100', - items: [ - { - balance: '100', - fiatBalance: '100', - fiatConversion: '1', - tokenInfo: { - address: tokenAddress, - decimals: 18, - logoUri: '', - name: 'Test', - symbol: 'TST', - type: TokenType.ERC20, - }, - }, - ], - } - const txs = [ - { - to: tokenAddress, - data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('420', 18))), - value: '0', - }, - ] + expect(result.container).toBeEmptyDOMElement() + }) - const Editor = await renderEditor(txs, updateCallback) + it('returns null if there are no approvals', () => { + const mockSafeTx = createMockSafeTransaction({ to: '0x1', data: '0x', operation: OperationType.DelegateCall }) + jest.spyOn(approvalInfos, 'useApprovalInfos').mockReturnValue([[], undefined, false]) + const result = render() - const result = render(, { - initialReduxState: { - balances: { data: mockBalances, loading: false }, - }, - }) - await waitFor(() => { - const accordionSummary = getApprovalSummaryElement(PREFIX_TEXT, result) - getByText(accordionSummary, '420', { exact: false }) - getByText(accordionSummary, 'TST', { exact: false }) - }) + expect(result.container).toBeEmptyDOMElement() + }) - // Edit tx - const accordionSummary = getApprovalSummaryElement(PREFIX_TEXT, result) + it('renders an error', async () => { + jest + .spyOn(approvalInfos, 'useApprovalInfos') + .mockReturnValue([undefined, new Error('Error parsing approvals'), false]) + const mockSafeTx = createMockSafeTransaction({ to: '0x1', data: '0x', operation: OperationType.DelegateCall }) - const parentContainer = accordionSummary.closest('.MuiPaper-root') - const accordionDetails = parentContainer?.querySelector('.MuiAccordionDetails-root') - expect(accordionDetails).not.toBeNull() + const result = render() - // toggle edit row - await waitFor(() => { - const amountInput = accordionDetails?.querySelector('input[name="approvals.0"]') as HTMLInputElement - expect(amountInput).not.toBeNull() - expect(amountInput).toHaveValue('420.0') - expect(amountInput).toBeEnabled() - }) + expect(await result.queryByText('Error while decoding approval transactions.')).toBeInTheDocument() + }) - const amountInput = accordionDetails?.querySelector('input[name="approvals.0"]') as HTMLInputElement + it('renders a loading skeleton', async () => { + jest.spyOn(approvalInfos, 'useApprovalInfos').mockReturnValue([undefined, undefined, true]) + const mockSafeTx = createMockSafeTransaction({ to: '0x1', data: '0x', operation: OperationType.DelegateCall }) - await act(() => { - fireEvent.change(amountInput!, { target: { value: '100' } }) - }) + const result = render() - await act(() => { - getByRole(accordionDetails as HTMLElement, 'button').click() - }) + expect(await result.queryByTestId('approval-editor-loading')).toBeInTheDocument() + }) - await waitFor(() => { - expect(updateCallback).toHaveBeenCalledWith([ - { - to: tokenAddress, - data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('100', 18))), - value: '0', - }, - ]) - }) - }) + it('renders a read-only view if there is no update callback', async () => { + const mockApprovalInfo = { + tokenInfo: { symbol: 'TST', decimals: 18, address: '0x3', type: TokenType.ERC20 }, + tokenAddress: '0x1', + spender: '0x2', + amount: '4200000', + amountFormatted: '420.0', + } + jest.spyOn(approvalInfos, 'useApprovalInfos').mockReturnValue([[mockApprovalInfo], undefined, false]) + const mockSafeTx = createMockSafeTransaction({ to: '0x1', data: '0x', operation: OperationType.DelegateCall }) + + const result = render() + + const amountInput = result.container.querySelector('input[name="approvals.0"]') as HTMLInputElement + + expect(amountInput).not.toBeInTheDocument() + expect(result.getByText('TST')) + expect(result.getByText('420')) + expect(result.getByText('0x2')) }) - // Readonly mode is used in the confirmationsModal - // It passes decodedTxData and txDetails instead of an array of base transactions and no update function - describe('in readonly mode', () => { - describe('should render null', () => { - it('for a single tx containing no approve call', async () => { - const txs: BaseTransaction[] = [ - { - to: hexZeroPad('0x123', 20), - data: createNonApproveCallData(hexZeroPad('0x2', 20), '20'), - value: '420', - }, - ] - const Editor = await renderEditor(txs) - const result = render() - expect(result.container).toBeEmptyDOMElement() - }) + it('renders a form if there is an update callback', async () => { + const mockApprovalInfo = { + tokenInfo: { symbol: 'TST', decimals: 18, address: '0x3', type: TokenType.ERC20 }, + tokenAddress: '0x1', + spender: '0x2', + amount: '4200000', + amountFormatted: '420.0', + } + jest.spyOn(approvalInfos, 'useApprovalInfos').mockReturnValue([[mockApprovalInfo], undefined, false]) + const mockSafeTx = createMockSafeTransaction({ to: '0x1', data: '0x', operation: OperationType.DelegateCall }) - describe('should render approval(s)', () => { - it('for single approval tx of token in balances', async () => { - const tokenAddress = hexZeroPad('0x123', 20) - const mockBalance: SafeBalanceResponse = { - fiatTotal: '100', - items: [ - { - balance: '100', - fiatBalance: '100', - fiatConversion: '1', - tokenInfo: { - address: tokenAddress, - decimals: 18, - logoUri: '', - name: 'Test', - symbol: 'TST', - type: TokenType.ERC20, - }, - }, - ], - } - const txs: BaseTransaction[] = [ - { - to: tokenAddress, - data: createApproveCallData(hexZeroPad('0x2', 20), hexlify(parseUnits('420', 18))), - value: '0', - }, - ] + const result = render() - const Editor = await renderEditor(txs) + const amountInput = result.container.querySelector('input[name="approvals.0"]') as HTMLInputElement - const result = render(, { - initialReduxState: { - balances: { - loading: false, - data: mockBalance, - }, - }, - }) - await waitFor(() => { - const accordionSummary = getApprovalSummaryElement(PREFIX_TEXT, result) - getByText(accordionSummary, '420', { exact: false }) - getByText(accordionSummary, 'TST', { exact: false }) - }) - }) - }) - }) + expect(amountInput).toBeInTheDocument() }) }) diff --git a/src/components/tx/ApprovalEditor/ApprovalEditorForm.test.tsx b/src/components/tx/ApprovalEditor/ApprovalEditorForm.test.tsx new file mode 100644 index 0000000000..2b7650baa7 --- /dev/null +++ b/src/components/tx/ApprovalEditor/ApprovalEditorForm.test.tsx @@ -0,0 +1,110 @@ +import { fireEvent, getAllByRole, render, waitFor } from '@/tests/test-utils' +import { hexZeroPad } from 'ethers/lib/utils' +import { TokenType } from '@safe-global/safe-gateway-typescript-sdk' +import { ApprovalEditorForm } from '@/components/tx/ApprovalEditor/ApprovalEditorForm' +import { getAllByTestId } from '@testing-library/dom' + +describe('ApprovalEditorForm', () => { + beforeEach(() => { + jest.clearAllMocks() + }) + + const updateCallback = jest.fn() + + it('should render and edit multiple txs', async () => { + const tokenAddress1 = hexZeroPad('0x123', 20) + const tokenAddress2 = hexZeroPad('0x234', 20) + + const mockApprovalInfos = [ + { + tokenInfo: { symbol: 'TST', decimals: 18, address: tokenAddress1, type: TokenType.ERC20 }, + tokenAddress: '0x1', + spender: '0x2', + amount: '4200000', + amountFormatted: '420.0', + }, + { + tokenInfo: { symbol: 'TST', decimals: 18, address: tokenAddress2, type: TokenType.ERC20 }, + tokenAddress: '0x1', + spender: '0x2', + amount: '6900000', + amountFormatted: '69.0', + }, + ] + + const result = render() + + // All approvals are rendered + const approvalItems = getAllByTestId(result.container, 'approval-item') + expect(approvalItems).toHaveLength(2) + + // One button for each approval + const buttons = getAllByRole(result.container, 'button') + expect(buttons).toHaveLength(2) + + // First approval value is rendered + await waitFor(() => { + const amountInput = result.container.querySelector('input[name="approvals.0"]') as HTMLInputElement + expect(amountInput).not.toBeNull() + expect(amountInput).toHaveValue('420.0') + expect(amountInput).toBeEnabled() + }) + + // Change value of first approval + const amountInput1 = result.container.querySelector('input[name="approvals.0"]') as HTMLInputElement + fireEvent.change(amountInput1!, { target: { value: '123' } }) + fireEvent.click(buttons[0]) + + expect(updateCallback).toHaveBeenCalledWith(['123', '69.0']) + + // Second approval value is rendered + await waitFor(() => { + const amountInput = result.container.querySelector('input[name="approvals.1"]') as HTMLInputElement + expect(amountInput).not.toBeNull() + expect(amountInput).toHaveValue('69.0') + expect(amountInput).toBeEnabled() + }) + + // Change value of second approval + const amountInput2 = result.container.querySelector('input[name="approvals.1"]') as HTMLInputElement + fireEvent.change(amountInput2!, { target: { value: '456' } }) + fireEvent.click(buttons[1]) + + expect(updateCallback).toHaveBeenCalledWith(['123', '456']) + }) + + it('should render and edit single tx', async () => { + const tokenAddress = hexZeroPad('0x123', 20) + + const mockApprovalInfo = { + tokenInfo: { symbol: 'TST', decimals: 18, address: tokenAddress, type: TokenType.ERC20 }, + tokenAddress: '0x1', + spender: '0x2', + amount: '4200000', + amountFormatted: '420.0', + } + + const result = render() + + // Approval item is rendered + const approvalItem = result.getByTestId('approval-item') + expect(approvalItem).not.toBeNull() + + // Input with correct value is rendered + await waitFor(() => { + const amountInput = result.container.querySelector('input[name="approvals.0"]') as HTMLInputElement + expect(amountInput).not.toBeNull() + expect(amountInput).toHaveValue('420.0') + expect(amountInput).toBeEnabled() + }) + + // Change value and save + const amountInput = result.container.querySelector('input[name="approvals.0"]') as HTMLInputElement + const saveButton = result.getByRole('button') + + fireEvent.change(amountInput!, { target: { value: '100' } }) + fireEvent.click(saveButton) + + expect(updateCallback).toHaveBeenCalledWith(['100']) + }) +}) diff --git a/src/components/tx/ApprovalEditor/ApprovalEditorForm.tsx b/src/components/tx/ApprovalEditor/ApprovalEditorForm.tsx index efd0a9729a..4ee3244852 100644 --- a/src/components/tx/ApprovalEditor/ApprovalEditorForm.tsx +++ b/src/components/tx/ApprovalEditor/ApprovalEditorForm.tsx @@ -1,5 +1,4 @@ -import PrefixedEthHashInfo from '@/components/common/EthHashInfo' -import { Grid, Typography, IconButton, SvgIcon, Divider, List, ListItem } from '@mui/material' +import { IconButton, SvgIcon, List, ListItem } from '@mui/material' import { FormProvider, useForm } from 'react-hook-form' import css from './styles.module.css' import CheckIcon from '@mui/icons-material/Check' @@ -8,6 +7,7 @@ import { ApprovalValueField } from './ApprovalValueField' import { MODALS_EVENTS } from '@/services/analytics' import Track from '@/components/common/Track' import { useMemo } from 'react' +import ApprovalItem from '@/components/tx/ApprovalEditor/ApprovalItem' export type ApprovalEditorFormData = { approvals: string[] @@ -18,9 +18,8 @@ export const ApprovalEditorForm = ({ updateApprovals, }: { approvalInfos: ApprovalInfo[] - updateApprovals?: (newApprovals: string[]) => void + updateApprovals: (newApprovals: string[]) => void }) => { - const isReadonly = updateApprovals === undefined const initialApprovals = useMemo(() => approvalInfos.map((info) => info.amountFormatted), [approvalInfos]) const formMethods = useForm({ @@ -37,53 +36,34 @@ export const ApprovalEditorForm = ({ } = formMethods const onSave = () => { - if (isReadonly) return const formData = getValues('approvals') updateApprovals(formData) reset({ approvals: formData }) } return ( - - + + {approvalInfos.map((tx, idx) => ( -
    - {idx > 0 && } - - - - {/* Input */} - - - {/* Save button */} - {!isReadonly && ( - - - - - - )} - - - - - Spender - - - - {' '} - - - - -
    + + + <> + + + + + + + + + ))} -
    -
    + + ) } diff --git a/src/components/tx/ApprovalEditor/ApprovalItem.tsx b/src/components/tx/ApprovalEditor/ApprovalItem.tsx new file mode 100644 index 0000000000..8a75c02623 --- /dev/null +++ b/src/components/tx/ApprovalEditor/ApprovalItem.tsx @@ -0,0 +1,32 @@ +import { type ReactElement } from 'react' +import { Alert, Grid, Typography } from '@mui/material' +import css from '@/components/tx/ApprovalEditor/styles.module.css' +import PrefixedEthHashInfo from '@/components/common/EthHashInfo' + +const ApprovalItem = ({ spender, children }: { spender: string; children: ReactElement }) => { + return ( + + + + {children} + + + + + + Spender + + + + + + + + + + + + ) +} + +export default ApprovalItem diff --git a/src/components/tx/ApprovalEditor/ApprovalValueField.tsx b/src/components/tx/ApprovalEditor/ApprovalValueField.tsx index bd72160496..908454565c 100644 --- a/src/components/tx/ApprovalEditor/ApprovalValueField.tsx +++ b/src/components/tx/ApprovalEditor/ApprovalValueField.tsx @@ -15,15 +15,7 @@ const ApprovalOption = ({ menuItemProps, value }: { menuItemProps: MenuItemProps ) } -export const ApprovalValueField = ({ - name, - readonly = false, - tx, -}: { - name: string - readonly?: boolean - tx: ApprovalInfo -}) => { +export const ApprovalValueField = ({ name, tx }: { name: string; tx: ApprovalInfo }) => { const { control } = useFormContext() const selectValues = Object.values(PSEUDO_APPROVAL_VALUES) @@ -59,8 +51,6 @@ export const ApprovalValueField = ({ onInputChange={(_, value) => { onChange(value) }} - readOnly={readonly} - disabled={readonly} disableClearable selectOnFocus componentsProps={{ @@ -87,7 +77,6 @@ export const ApprovalValueField = ({ paddingLeft: 1, flexWrap: 'nowrap !important', }, - readOnly: readonly, startAdornment: ( diff --git a/src/components/tx/ApprovalEditor/Approvals.tsx b/src/components/tx/ApprovalEditor/Approvals.tsx new file mode 100644 index 0000000000..514b7da3b8 --- /dev/null +++ b/src/components/tx/ApprovalEditor/Approvals.tsx @@ -0,0 +1,28 @@ +import { Grid, List, ListItem } from '@mui/material' + +import { type ApprovalInfo } from '@/components/tx/ApprovalEditor/hooks/useApprovalInfos' +import css from './styles.module.css' +import SendAmountBlock from '@/components/tx-flow/flows/TokenTransfer/SendAmountBlock' +import ApprovalItem from '@/components/tx/ApprovalEditor/ApprovalItem' + +const Approvals = ({ approvalInfos }: { approvalInfos: ApprovalInfo[] }) => { + return ( + + {approvalInfos.map((tx) => { + if (!tx.tokenInfo) return <> + + return ( + + + + + + + + ) + })} + + ) +} + +export default Approvals diff --git a/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.test.ts b/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.test.ts new file mode 100644 index 0000000000..4811eeeb1c --- /dev/null +++ b/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.test.ts @@ -0,0 +1,147 @@ +import { renderHook } from '@/tests/test-utils' +import { hexZeroPad, Interface } from 'ethers/lib/utils' +import { useApprovalInfos } from '@/components/tx/ApprovalEditor/hooks/useApprovalInfos' +import { waitFor } from '@testing-library/react' +import { createMockSafeTransaction } from '@/tests/transactions' +import { OperationType } from '@safe-global/safe-core-sdk-types' +import { ERC20__factory } from '@/types/contracts' +import { type ApprovalInfo } from '@/components/tx/ApprovalEditor/utils/approvals' +import * as balances from '@/hooks/useBalances' +import { TokenType } from '@safe-global/safe-gateway-typescript-sdk' +import { BigNumber } from '@ethersproject/bignumber' +import * as getTokenInfo from '@/utils/tokens' + +const ERC20_INTERFACE = ERC20__factory.createInterface() + +const createNonApproveCallData = (to: string, value: string) => { + return ERC20_INTERFACE.encodeFunctionData('transfer', [to, value]) +} + +describe('useApprovalInfos', () => { + beforeEach(() => { + jest.restoreAllMocks() + }) + + it('returns an empty array if no Safe Transaction exists', async () => { + const { result } = renderHook(() => useApprovalInfos(undefined)) + + expect(result.current).toStrictEqual([[], undefined, true]) + + await waitFor(() => { + expect(result.current).toStrictEqual([[], undefined, false]) + }) + }) + + it('returns an empty array if the transaction does not contain any approvals', async () => { + const mockSafeTx = createMockSafeTransaction({ + to: hexZeroPad('0x123', 20), + data: createNonApproveCallData(hexZeroPad('0x2', 20), '20'), + operation: OperationType.DelegateCall, + }) + + const { result } = renderHook(() => useApprovalInfos(mockSafeTx)) + + await waitFor(() => { + expect(result.current).toStrictEqual([[], undefined, false]) + }) + }) + + it('returns an ApprovalInfo if the transaction contains an approval', async () => { + const testInterface = new Interface(['function approve(address, uint256)']) + + const mockSafeTx = createMockSafeTransaction({ + to: hexZeroPad('0x123', 20), + data: testInterface.encodeFunctionData('approve', [hexZeroPad('0x2', 20), '123']), + operation: OperationType.DelegateCall, + }) + + const { result } = renderHook(() => useApprovalInfos(mockSafeTx)) + + const mockApproval: ApprovalInfo = { + amount: BigNumber.from('123'), + amountFormatted: '0.000000000000000123', + spender: '0x0000000000000000000000000000000000000002', + tokenAddress: '0x0000000000000000000000000000000000000123', + tokenInfo: undefined, + } + + await waitFor(() => { + expect(result.current).toEqual([[mockApproval], undefined, false]) + }) + }) + + it('returns an ApprovalInfo with token infos if the token exists in balances', async () => { + const mockBalanceItem = { + balance: '40', + fiatBalance: '40', + fiatConversion: '1', + tokenInfo: { + address: hexZeroPad('0x123', 20), + decimals: 18, + logoUri: '', + name: 'Hidden Token', + symbol: 'HT', + type: TokenType.ERC20, + }, + } + + jest + .spyOn(balances, 'default') + .mockReturnValue({ balances: { fiatTotal: '0', items: [mockBalanceItem] }, error: undefined, loading: false }) + const testInterface = new Interface(['function approve(address, uint256)']) + + const mockSafeTx = createMockSafeTransaction({ + to: hexZeroPad('0x123', 20), + data: testInterface.encodeFunctionData('approve', [hexZeroPad('0x2', 20), '123']), + operation: OperationType.DelegateCall, + }) + + const { result } = renderHook(() => useApprovalInfos(mockSafeTx)) + + const mockApproval: ApprovalInfo = { + amount: BigNumber.from('123'), + amountFormatted: '0.000000000000000123', + spender: '0x0000000000000000000000000000000000000002', + tokenAddress: '0x0000000000000000000000000000000000000123', + tokenInfo: mockBalanceItem.tokenInfo, + } + + await waitFor(() => { + expect(result.current).toEqual([[mockApproval], undefined, false]) + }) + }) + + it('fetches token info for an approval if its missing', async () => { + const mockTokenInfo = { + address: '0x0000000000000000000000000000000000000123', + symbol: 'HT', + decimals: 18, + type: TokenType.ERC20, + } + const fetchMock = jest + .spyOn(getTokenInfo, 'getERC20TokenInfoOnChain') + .mockReturnValue(Promise.resolve(mockTokenInfo)) + const testInterface = new Interface(['function approve(address, uint256)']) + + const mockSafeTx = createMockSafeTransaction({ + to: hexZeroPad('0x123', 20), + data: testInterface.encodeFunctionData('approve', [hexZeroPad('0x2', 20), '123']), + operation: OperationType.DelegateCall, + }) + + const { result } = renderHook(() => useApprovalInfos(mockSafeTx)) + + const mockApproval: ApprovalInfo = { + amount: BigNumber.from('123'), + amountFormatted: '0.000000000000000123', + spender: '0x0000000000000000000000000000000000000002', + tokenAddress: '0x0000000000000000000000000000000000000123', + tokenInfo: mockTokenInfo, + } + + await waitFor(() => { + expect(result.current).toEqual([[mockApproval], undefined, false]) + expect(fetchMock).toHaveBeenCalledTimes(1) + }) + }) +}) diff --git a/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts b/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts index 0d60122677..664c2220ea 100644 --- a/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts +++ b/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts @@ -1,12 +1,12 @@ import useAsync from '@/hooks/useAsync' import useBalances from '@/hooks/useBalances' -import { ApprovalModule, type ApprovalModuleResponse } from '@/services/security/modules/ApprovalModule' -import type { SecurityResponse } from '@/services/security/modules/types' +import { ApprovalModule } from '@/services/security/modules/ApprovalModule' import { getERC20TokenInfoOnChain, UNLIMITED_APPROVAL_AMOUNT } from '@/utils/tokens' import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' import { type TokenInfo } from '@safe-global/safe-gateway-typescript-sdk' import { ethers } from 'ethers' import { PSEUDO_APPROVAL_VALUES } from '../utils/approvals' +import { useMemo } from 'react' export type ApprovalInfo = { tokenInfo: (Omit & { logoUri?: string }) | undefined @@ -18,30 +18,28 @@ export type ApprovalInfo = { const ApprovalModuleInstance = new ApprovalModule() -const useApprovalData = (safeTransaction: SafeTransaction | undefined) => { - return useAsync>(() => { - if (!safeTransaction) { - return - } +export const useApprovalInfos = ( + safeTransaction: SafeTransaction | undefined, +): [ApprovalInfo[] | undefined, Error | undefined, boolean] => { + const { balances } = useBalances() + const approvals = useMemo(() => { + if (!safeTransaction) return return ApprovalModuleInstance.scanTransaction({ safeTransaction }) }, [safeTransaction]) -} - -export const useApprovalInfos = (safeTransaction: SafeTransaction | undefined) => { - const [approvals] = useApprovalData(safeTransaction) - const { balances } = useBalances() + const hasApprovalSignatures = !!approvals && !!approvals.payload && approvals.payload.length > 0 - return useAsync( + const [approvalInfos, error, loading] = useAsync( async () => { - if (!approvals || !approvals.payload || approvals.payload.length === 0) return Promise.resolve([]) + if (!hasApprovalSignatures) return return Promise.all( approvals.payload.map(async (approval) => { let tokenInfo: Omit | undefined = balances.items.find( (item) => item.tokenInfo.address === approval.tokenAddress, )?.tokenInfo + if (!tokenInfo) { tokenInfo = await getERC20TokenInfoOnChain(approval.tokenAddress) } @@ -54,7 +52,9 @@ export const useApprovalInfos = (safeTransaction: SafeTransaction | undefined) = }), ) }, - [balances.items.length, approvals], + [hasApprovalSignatures, balances.items.length], false, // Do not clear data on balance updates ) + + return [hasApprovalSignatures ? approvalInfos : [], error, loading] } diff --git a/src/components/tx/ApprovalEditor/index.tsx b/src/components/tx/ApprovalEditor/index.tsx index d7271092f6..0938b743ae 100644 --- a/src/components/tx/ApprovalEditor/index.tsx +++ b/src/components/tx/ApprovalEditor/index.tsx @@ -1,50 +1,27 @@ -import TokenIcon from '@/components/common/TokenIcon' -import ExpandMoreIcon from '@mui/icons-material/ExpandMore' - -import { Accordion, AccordionDetails, AccordionSummary, Box, IconButton, Skeleton, Typography } from '@mui/material' -import { groupBy } from 'lodash' +import { Alert, Box, Divider, Skeleton, SvgIcon, Typography } from '@mui/material' +import { type MetaTransactionData, type SafeTransaction } from '@safe-global/safe-core-sdk-types' import css from './styles.module.css' -import { UNLIMITED_APPROVAL_AMOUNT } from '@/utils/tokens' import { ApprovalEditorForm } from './ApprovalEditorForm' -import { type ReactNode } from 'react' -import { type ApprovalInfo, updateApprovalTxs } from './utils/approvals' +import { updateApprovalTxs } from './utils/approvals' import { useApprovalInfos } from './hooks/useApprovalInfos' import { decodeSafeTxToBaseTransactions } from '@/utils/transactions' -import { type MetaTransactionData, type SafeTransaction } from '@safe-global/safe-core-sdk-types' - -const SummaryWrapper = ({ children }: { children: ReactNode | ReactNode[] }) => { - return ( - - - Approve access to - - - {children} - - - ) -} - -const Summary = ({ approvalInfos }: { approvalInfos: ApprovalInfo[] }) => { - const uniqueTokens = groupBy(approvalInfos, (approvalInfo) => approvalInfo.tokenAddress) - const uniqueTokenCount = Object.keys(uniqueTokens).length - - if (approvalInfos.length === 1) { - const approval = approvalInfos[0] - const amount = UNLIMITED_APPROVAL_AMOUNT.eq(approval.amount) ? 'unlimited' : approval.amountFormatted - return ( - - {amount} - - {approval.tokenInfo?.symbol} - - ) - } +import EditIcon from '@/public/images/common/edit.svg' +import commonCss from '@/components/tx-flow/common/styles.module.css' +import Approvals from '@/components/tx/ApprovalEditor/Approvals' +const Title = () => { return ( - - {uniqueTokenCount} Token{uniqueTokenCount > 1 ? 's' : ''} - +
    +
    + +
    +
    + Approve access to + + This allows contracts to spend the selected amounts of your asset balance. + +
    +
    ) } @@ -57,50 +34,38 @@ export const ApprovalEditor = ({ }) => { const [readableApprovals, error, loading] = useApprovalInfos(safeTransaction) - if (!readableApprovals || readableApprovals.length === 0 || !safeTransaction) { + if (readableApprovals?.length === 0 || !safeTransaction) { return null } - const extractedTxs = decodeSafeTxToBaseTransactions(safeTransaction) + const updateApprovals = (approvals: string[]) => { + if (!updateTransaction) return + + const extractedTxs = decodeSafeTxToBaseTransactions(safeTransaction) - // If a callback is handed in, we update the txs on change, otherwise a `undefined` callback will change the form to readonly - const updateApprovals = - updateTransaction === undefined - ? undefined - : (approvals: string[]) => { - const updatedTxs = updateApprovalTxs(approvals, readableApprovals, extractedTxs) - updateTransaction(updatedTxs) - } + const updatedTxs = updateApprovalTxs(approvals, readableApprovals, extractedTxs) + updateTransaction(updatedTxs) + } + + const isReadOnly = updateTransaction === undefined return ( - - - - - } - > - {' '} - {error ? ( - Error while decoding approval transactions. - ) : loading || !readableApprovals ? ( - - ) : ( - - )} - - - {loading || !readableApprovals ? null : ( - <> - - This allows contracts to spend the selected amounts of your asset balance. - - - - )} - - + + + {error ? ( + <Alert severity="error">Error while decoding approval transactions.</Alert> + ) : loading || !readableApprovals ? ( + <Skeleton variant="rounded" height={100} data-testid="approval-editor-loading" /> + ) : isReadOnly ? ( + <Approvals approvalInfos={readableApprovals} /> + ) : ( + <ApprovalEditorForm approvalInfos={readableApprovals} updateApprovals={updateApprovals} /> + )} + + <Box mt={2}> + <Divider className={commonCss.nestedDivider} /> + </Box> + </Box> ) } diff --git a/src/components/tx/ApprovalEditor/styles.module.css b/src/components/tx/ApprovalEditor/styles.module.css index de67bad129..68a1a85c84 100644 --- a/src/components/tx/ApprovalEditor/styles.module.css +++ b/src/components/tx/ApprovalEditor/styles.module.css @@ -11,8 +11,12 @@ background-color: var(--color-warning-background); } -.approval { - padding: var(--space-1); +.alert { + width: 100%; +} + +.alert :global .MuiAlert-message { + width: 100%; } .approvalAmount { @@ -23,8 +27,8 @@ .iconButton { border-radius: 4px; padding: 6px; - width: 48px; - height: 48px; + width: 52px; + height: 52px; background-color: var(--color-primary-main); } @@ -45,5 +49,29 @@ } .approvalsList { - padding-bottom: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: var(--space-2); +} + +.wrapper { + display: flex; + align-items: center; + gap: var(--space-2); +} + +.icon { + width: 34px; + height: 34px; + border-radius: 6px; + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: center; + background-color: var(--color-warning-background); +} + +.icon svg { + color: var(--color-warning-main); } diff --git a/src/components/tx/DecodedTx/index.test.tsx b/src/components/tx/DecodedTx/index.test.tsx index 9637f14617..983f8c4b73 100644 --- a/src/components/tx/DecodedTx/index.test.tsx +++ b/src/components/tx/DecodedTx/index.test.tsx @@ -29,7 +29,7 @@ describe('DecodedTx', () => { fireEvent.click(result.getByText('Transaction details')) - expect(result.queryByText('Native token transfer')).toBeInTheDocument() + expect(result.queryAllByText('Native token transfer').length).toBe(2) expect(result.queryByText('to(address):')).toBeInTheDocument() expect(result.queryByText('0x3430...7600')).toBeInTheDocument() expect(result.queryByText('value(uint256):')).toBeInTheDocument() @@ -79,7 +79,7 @@ describe('DecodedTx', () => { fireEvent.click(result.getByText('Transaction details')) await waitFor(() => { - expect(result.queryByText('transfer')).toBeInTheDocument() + expect(result.queryAllByText('transfer').length).toBe(2) expect(result.queryByText('to(address):')).toBeInTheDocument() expect(result.queryByText('0x474e...78C8')).toBeInTheDocument() expect(result.queryByText('value(uint256):')).toBeInTheDocument() @@ -179,8 +179,8 @@ describe('DecodedTx', () => { await waitFor(() => { expect(result.queryByText('multi Send')).toBeInTheDocument() expect(result.queryByText('transactions(bytes):')).toBeInTheDocument() - expect(result.queryByText('Action 1')).toBeInTheDocument() - expect(result.queryByText('Action 2')).toBeInTheDocument() + expect(result.queryByText('1')).toBeInTheDocument() + expect(result.queryByText('2')).toBeInTheDocument() }) }) @@ -216,6 +216,6 @@ describe('DecodedTx', () => { fireEvent.click(result.getByText('Transaction details')) - expect(await result.findByText('deposit')).toBeInTheDocument() + expect((await result.findAllByText('deposit')).length).toBe(2) }) }) diff --git a/src/components/tx/DecodedTx/index.tsx b/src/components/tx/DecodedTx/index.tsx index 44294248ee..8939a26f53 100644 --- a/src/components/tx/DecodedTx/index.tsx +++ b/src/components/tx/DecodedTx/index.tsx @@ -1,5 +1,14 @@ -import { type SyntheticEvent, type ReactElement, useMemo } from 'react' -import { Accordion, AccordionDetails, AccordionSummary, Box, Skeleton, Typography } from '@mui/material' +import { type SyntheticEvent, type ReactElement, useMemo, memo } from 'react' +import { + Accordion, + AccordionDetails, + AccordionSummary, + Box, + Skeleton, + SvgIcon, + Tooltip, + Typography, +} from '@mui/material' import { OperationType, type SafeTransaction } from '@safe-global/safe-core-sdk-types' import { type DecodedDataResponse, @@ -12,13 +21,18 @@ import useChainId from '@/hooks/useChainId' import useAsync from '@/hooks/useAsync' import { MethodDetails } from '@/components/transactions/TxDetails/TxData/DecodedData/MethodDetails' import ErrorMessage from '../ErrorMessage' -import Summary from '@/components/transactions/TxDetails/Summary' +import Summary, { PartialSummary } from '@/components/transactions/TxDetails/Summary' import { trackEvent, MODALS_EVENTS } from '@/services/analytics' import { isEmptyHexData } from '@/utils/hex' import ApprovalEditor from '@/components/tx/ApprovalEditor' import { ErrorBoundary } from '@sentry/react' import { getNativeTransferData } from '@/services/tx/tokenTransferParams' import Multisend from '@/components/transactions/TxDetails/TxData/DecodedData/Multisend' +import InfoIcon from '@/public/images/notifications/info.svg' +import ExternalLink from '@/components/common/ExternalLink' +import { HelpCenterArticle } from '@/config/constants' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import accordionCss from '@/styles/accordion.module.css' type DecodedTxProps = { tx?: SafeTransaction @@ -55,10 +69,10 @@ const DecodedTx = ({ tx, txId }: DecodedTxProps): ReactElement | null => { trackEvent({ ...MODALS_EVENTS.TX_DETAILS, label: expanded ? 'Open' : 'Close' }) } - if (isRejection) return null + if (isRejection || !tx) return null return ( - <Box mb={2}> + <div> {approvalEditorTx && ( <ErrorBoundary fallback={<div>Error parsing data</div>}> <ApprovalEditor safeTransaction={tx} /> @@ -81,7 +95,11 @@ const DecodedTx = ({ tx, txId }: DecodedTxProps): ReactElement | null => { )} <Accordion elevation={0} onChange={onChangeExpand} sx={!tx ? { pointerEvents: 'none' } : undefined}> - <AccordionSummary>Transaction details</AccordionSummary> + <AccordionSummary expandIcon={<ExpandMoreIcon />} className={accordionCss.accordion}> + <span style={{ flex: 1 }}>Transaction details</span> + + {decodedData ? decodedData.method : tx?.data.operation === OperationType.DelegateCall ? 'Delegate call' : ''} + </AccordionSummary> <AccordionDetails> {decodedData ? ( @@ -92,22 +110,49 @@ const DecodedTx = ({ tx, txId }: DecodedTxProps): ReactElement | null => { decodedDataLoading && <Skeleton /> )} - {txDetails ? ( - <Box mt={2}> - <Typography variant="overline" fontWeight="bold" color="border.main"> - Advanced details - </Typography> - <Summary txDetails={txDetails} defaultExpanded /> - </Box> - ) : txDetailsError ? ( - <ErrorMessage error={txDetailsError}>Failed loading transaction details</ErrorMessage> - ) : ( - txDetailsLoading && <Skeleton /> - )} + <Box mt={2}> + <Typography variant="overline" fontWeight="bold" color="border.main" display="flex" alignItems="center"> + Advanced details + <Tooltip + title={ + <> + We recommend not changing the default values unless necessary.{' '} + <ExternalLink href={HelpCenterArticle.ADVANCED_PARAMS} title="Learn more about advanced details"> + Learn more about advanced details + </ExternalLink> + . + </> + } + arrow + placement="top" + > + <span> + <SvgIcon + component={InfoIcon} + inheritViewBox + color="border" + fontSize="small" + sx={{ + verticalAlign: 'middle', + ml: 0.5, + }} + /> + </span> + </Tooltip> + </Typography> + + {txDetails ? <Summary txDetails={txDetails} defaultExpanded /> : tx && <PartialSummary safeTx={tx} />} + + {txDetailsLoading && <Skeleton />} + + {txDetailsError && ( + <ErrorMessage error={txDetailsError}>Failed loading all transaction details</ErrorMessage> + )} + </Box> </AccordionDetails> </Accordion> - </Box> + </div> ) } -export default DecodedTx +export default memo(DecodedTx) diff --git a/src/components/tx/ErrorMessage/index.tsx b/src/components/tx/ErrorMessage/index.tsx index 4d2eea859b..5f6cc07932 100644 --- a/src/components/tx/ErrorMessage/index.tsx +++ b/src/components/tx/ErrorMessage/index.tsx @@ -14,7 +14,7 @@ const ErrorMessage = ({ children: ReactNode error?: Error & { reason?: string } className?: string - level?: 'error' | 'info' + level?: 'error' | 'warning' | 'info' }): ReactElement => { const [showDetails, setShowDetails] = useState<boolean>(false) @@ -24,7 +24,7 @@ const ErrorMessage = ({ } return ( - <div className={classNames(css.container, css[level], className)}> + <div className={classNames(css.container, css[level], className, 'errorMessage')}> <div className={css.message}> <SvgIcon component={level === 'info' ? InfoIcon : WarningIcon} inheritViewBox fontSize="small" /> diff --git a/src/components/tx/ErrorMessage/styles.module.css b/src/components/tx/ErrorMessage/styles.module.css index 5fe129aa3c..1fda0fddc0 100644 --- a/src/components/tx/ErrorMessage/styles.module.css +++ b/src/components/tx/ErrorMessage/styles.module.css @@ -9,6 +9,11 @@ color: var(--color-error-dark); } +.container.warning { + background-color: var(--color-warning-background); + color: var(--color-warning-dark); +} + .container.info { background-color: var(--color-info-background); color: var(--color-primary-main); diff --git a/src/components/tx/ExecuteCheckbox/index.tsx b/src/components/tx/ExecuteCheckbox/index.tsx index 9d05d8dc8b..b8b59250e2 100644 --- a/src/components/tx/ExecuteCheckbox/index.tsx +++ b/src/components/tx/ExecuteCheckbox/index.tsx @@ -1,48 +1,45 @@ import type { ChangeEvent, ReactElement } from 'react' -import { Checkbox, FormControlLabel, SvgIcon, Tooltip } from '@mui/material' -import InfoIcon from '@/public/images/notifications/info.svg' +import { FormControlLabel, RadioGroup, Radio } from '@mui/material' import { trackEvent, MODALS_EVENTS } from '@/services/analytics' +import { useAppDispatch, useAppSelector } from '@/store' +import { selectSettings, setTransactionExecution } from '@/store/settingsSlice' -const ExecuteCheckbox = ({ - checked, - onChange, - disabled = false, -}: { - checked: boolean - onChange: (checked: boolean) => void - disabled?: boolean -}): ReactElement => { - const handleChange = (_: ChangeEvent<HTMLInputElement>, checked: boolean) => { +import css from './styles.module.css' + +const ExecuteCheckbox = ({ onChange }: { onChange: (checked: boolean) => void }): ReactElement => { + const settings = useAppSelector(selectSettings) + const dispatch = useAppDispatch() + + const handleChange = (_: ChangeEvent<HTMLInputElement>, value: string) => { + const checked = value === 'true' trackEvent({ ...MODALS_EVENTS.EXECUTE_TX, label: checked }) + dispatch(setTransactionExecution(checked)) onChange(checked) } - const infoIcon = ( - <Tooltip - title={ - disabled - ? 'This transaction is fully signed and will be executed.' - : 'If you want to sign the transaction now but manually execute it later, uncheck this box.' - } - > - <span> - <SvgIcon - component={InfoIcon} - inheritViewBox - fontSize="small" - color="border" - sx={{ verticalAlign: 'middle', marginLeft: 0.5 }} - /> - </span> - </Tooltip> - ) - return ( - <FormControlLabel - control={<Checkbox checked={checked} onChange={handleChange} disabled={disabled} />} - label={<>Execute transaction {infoIcon}</>} - sx={{ mb: 1 }} - /> + <RadioGroup row value={String(settings.transactionExecution)} onChange={handleChange} className={css.group}> + <FormControlLabel + value="true" + label={ + <> + Yes, <b>execute</b> + </> + } + control={<Radio />} + className={css.radio} + /> + <FormControlLabel + value="false" + label={ + <> + No, only <b>sign</b> + </> + } + control={<Radio />} + className={css.radio} + /> + </RadioGroup> ) } diff --git a/src/components/tx/ExecuteCheckbox/styles.module.css b/src/components/tx/ExecuteCheckbox/styles.module.css new file mode 100644 index 0000000000..2cc7af71f5 --- /dev/null +++ b/src/components/tx/ExecuteCheckbox/styles.module.css @@ -0,0 +1,37 @@ +.group { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--space-2); +} + +.radio { + margin: 0; + border: 1px solid var(--color-border-light); + border-radius: 6px; + padding: 6px 3px; +} + +.select { + margin-top: var(--space-2); +} + +.select :global .MuiFormLabel-root { + color: var(--color-text-primary); + transform: translate(22px, 22px) scale(1); +} + +.select :global .MuiSelect-select { + padding: 22px; + text-align: right; + font-weight: 700; + padding-right: 52px !important; +} + +.select :global .MuiInputBase-root fieldset { + border-color: var(--color-border-light) !important; + border-width: 1px !important; +} + +.select :global .MuiSvgIcon-root { + right: 22px; +} diff --git a/src/components/tx/ExecutionMethodSelector/index.tsx b/src/components/tx/ExecutionMethodSelector/index.tsx index dd2c482400..95e56b9d4a 100644 --- a/src/components/tx/ExecutionMethodSelector/index.tsx +++ b/src/components/tx/ExecutionMethodSelector/index.tsx @@ -37,7 +37,7 @@ export const ExecutionMethodSelector = ({ return ( <Box className={css.container} sx={{ borderRadius: ({ shape }) => `${shape.borderRadius}px` }}> - <Box className={css.method}> + <div className={css.method}> <FormControl sx={{ display: 'flex' }}> {!noLabel ? ( <Typography variant="body2" className={css.label}> @@ -69,7 +69,7 @@ export const ExecutionMethodSelector = ({ /> </RadioGroup> </FormControl> - </Box> + </div> {shouldRelay && relays ? <SponsoredBy relays={relays} tooltip={tooltip} /> : null} </Box> diff --git a/src/components/tx/ExecutionMethodSelector/styles.module.css b/src/components/tx/ExecutionMethodSelector/styles.module.css index 76109da156..00dab746c7 100644 --- a/src/components/tx/ExecutionMethodSelector/styles.module.css +++ b/src/components/tx/ExecutionMethodSelector/styles.module.css @@ -3,11 +3,10 @@ } .method { - padding: var(--space-1) var(--space-2); + padding: var(--space-2) var(--space-2) var(--space-1) var(--space-2); } .label { - padding-top: var(--space-1); color: var(--color-text-secondary); } diff --git a/src/components/tx/GasParams/index.tsx b/src/components/tx/GasParams/index.tsx index 265bc72449..c5b266ec22 100644 --- a/src/components/tx/GasParams/index.tsx +++ b/src/components/tx/GasParams/index.tsx @@ -7,6 +7,7 @@ import { type AdvancedParameters } from '../AdvancedParams/types' import { trackEvent, MODALS_EVENTS } from '@/services/analytics' import classnames from 'classnames' import css from './styles.module.css' +import accordionCss from '@/styles/accordion.module.css' const GasDetail = ({ name, value, isLoading }: { name: string; value: string; isLoading: boolean }): ReactElement => { const valueSkeleton = <Skeleton variant="text" sx={{ minWidth: '5em' }} /> @@ -68,7 +69,7 @@ const GasParams = ({ onChange={onChangeExpand} className={classnames({ [css.withExecutionMethod]: isExecution })} > - <AccordionSummary expandIcon={<ExpandMoreIcon />}> + <AccordionSummary expandIcon={<ExpandMoreIcon />} className={accordionCss.accordion}> {isExecution ? ( <Typography display="flex" alignItems="center" justifyContent="space-between" width={1}> <span>Estimated fee </span> diff --git a/src/components/tx/NonceForm/index.tsx b/src/components/tx/NonceForm/index.tsx deleted file mode 100644 index 67421f21c8..0000000000 --- a/src/components/tx/NonceForm/index.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import { memo, useMemo } from 'react' -import type { ReactElement } from 'react' -import { useController, useFormContext, useWatch } from 'react-hook-form' -import { Autocomplete, IconButton, InputAdornment, MenuItem, Tooltip } from '@mui/material' -import RotateLeftIcon from '@mui/icons-material/RotateLeft' -import useSafeInfo from '@/hooks/useSafeInfo' -import NumberField from '@/components/common/NumberField' -import useTxQueue, { useQueuedTxByNonce } from '@/hooks/useTxQueue' -import { isMultisigExecutionInfo, isTransactionListItem } from '@/utils/transaction-guards' -import { uniqBy } from 'lodash' -import { getTransactionType } from '@/hooks/useTransactionType' -import useAddressBook from '@/hooks/useAddressBook' -import { getLatestTransactions } from '@/utils/tx-list' -import type { MenuItemProps } from '@mui/material' - -type NonceFormProps = { - name: string - nonce: number - recommendedNonce?: number - readonly?: boolean -} - -const NonceFormOption = memo(function NonceFormOption({ - nonce, - menuItemProps, -}: { - nonce: number - menuItemProps: MenuItemProps -}): ReactElement { - const addressBook = useAddressBook() - const transactions = useQueuedTxByNonce(nonce) - - const label = useMemo(() => { - const [{ transaction }] = getLatestTransactions(transactions) - return getTransactionType(transaction, addressBook).text - }, [addressBook, transactions]) - - return ( - <MenuItem key={nonce} {...menuItemProps}> - {nonce} ({label} transaction) - </MenuItem> - ) -}) - -const NonceForm = ({ name, nonce, recommendedNonce, readonly }: NonceFormProps): ReactElement => { - const { safe } = useSafeInfo() - const safeNonce = safe.nonce || 0 - - // Initialise form field - const { setValue, control } = useFormContext() || {} - const { - field: { ref, onBlur, onChange, value }, - fieldState, - } = useController({ - name, - control, - defaultValue: nonce, - rules: { - required: true, - validate: (val: number) => { - if (!Number.isInteger(val)) { - return 'Nonce must be an integer' - } else if (val < safeNonce) { - return `Nonce can't be lower than ${safeNonce}` - } - }, - }, - }) - - // Autocomplete options - const { page } = useTxQueue() - const queuedTxs = useMemo(() => { - if (!page || page.results.length === 0) { - return [] - } - - const txs = page.results.filter(isTransactionListItem).map((item) => item.transaction) - - return uniqBy(txs, (tx) => { - return isMultisigExecutionInfo(tx.executionInfo) ? tx.executionInfo.nonce : '' - }) - }, [page]) - - const options = useMemo(() => { - return queuedTxs - .map((tx) => (isMultisigExecutionInfo(tx.executionInfo) ? tx.executionInfo.nonce : undefined)) - .filter((nonce) => nonce !== undefined) - }, [queuedTxs]) - - // Warn about a higher nonce - const editableNonce = useWatch({ name, control, exact: true }) - const nonceWarning = - recommendedNonce != null && editableNonce > recommendedNonce ? `Recommended nonce is ${recommendedNonce}` : '' - const label = fieldState.error?.message || nonceWarning || 'Safe Account transaction nonce' - - const onResetNonce = () => { - if (recommendedNonce != null) { - setValue(name, recommendedNonce, { shouldValidate: true }) - } - } - - return ( - <Autocomplete - value={value} - freeSolo - // On option select or free text entry - onInputChange={(_, value) => { - onChange(value ? Number(value) : '') - }} - options={options} - disabled={nonce == null || readonly} - getOptionLabel={(option) => option.toString()} - renderOption={(props, option: number) => <NonceFormOption menuItemProps={props} nonce={option} />} - disableClearable - componentsProps={{ - paper: { - elevation: 2, - }, - }} - renderInput={(params) => ( - <NumberField - {...params} - name={name} - onBlur={onBlur} - inputRef={ref} - error={!!fieldState.error} - label={label} - InputProps={{ - ...params.InputProps, - endAdornment: !readonly && - recommendedNonce !== undefined && - recommendedNonce !== params.inputProps.value && ( - <InputAdornment position="end"> - <Tooltip title="Reset to recommended nonce"> - <IconButton onClick={onResetNonce} size="small" color="primary"> - <RotateLeftIcon /> - </IconButton> - </Tooltip> - </InputAdornment> - ), - readOnly: readonly, - }} - InputLabelProps={{ - ...params.InputLabelProps, - shrink: true, - }} - /> - )} - /> - ) -} - -export default NonceForm diff --git a/src/components/tx/SendFromBlock/index.tsx b/src/components/tx/SendFromBlock/index.tsx index b939c553fa..5c1dc7f57b 100644 --- a/src/components/tx/SendFromBlock/index.tsx +++ b/src/components/tx/SendFromBlock/index.tsx @@ -5,6 +5,7 @@ import css from './styles.module.css' import useSafeAddress from '@/hooks/useSafeAddress' import EthHashInfo from '@/components/common/EthHashInfo' +// TODO: Remove this file after replacing in all tx flow components const SendFromBlock = ({ title }: { title?: string }): ReactElement => { const address = useSafeAddress() diff --git a/src/components/tx/SendToBlock/index.tsx b/src/components/tx/SendToBlock/index.tsx index cf86ba3744..dc6618d5cf 100644 --- a/src/components/tx/SendToBlock/index.tsx +++ b/src/components/tx/SendToBlock/index.tsx @@ -1,6 +1,7 @@ import { Box, Typography } from '@mui/material' import EthHashInfo from '@/components/common/EthHashInfo' +// TODO: Remove this file after replacing in all tx flow components const SendToBlock = ({ address, title = 'Recipient' }: { address: string; title?: string }) => { return ( <Box mb={3}> diff --git a/src/components/tx/SignOrExecuteForm/ConfirmationTitle.tsx b/src/components/tx/SignOrExecuteForm/ConfirmationTitle.tsx new file mode 100644 index 0000000000..58ecda7b4d --- /dev/null +++ b/src/components/tx/SignOrExecuteForm/ConfirmationTitle.tsx @@ -0,0 +1,29 @@ +import { SvgIcon, Typography } from '@mui/material' +import EditIcon from '@/public/images/common/edit.svg' +import css from './styles.module.css' + +export enum ConfirmationTitleTypes { + sign = 'confirm', + execute = 'execute', +} + +const ConfirmationTitle = ({ isCreation, variant }: { isCreation?: boolean; variant: ConfirmationTitleTypes }) => { + return ( + <div className={css.wrapper}> + <div className={`${css.icon} ${variant === ConfirmationTitleTypes.sign ? css.sign : css.execute}`}> + <SvgIcon component={EditIcon} inheritViewBox fontSize="small" /> + </div> + <div> + <Typography variant="h5" sx={{ textTransform: 'capitalize' }}> + {variant} + </Typography> + <Typography variant="body2"> + You're about to {isCreation ? 'create and ' : ''} + {variant} this transaction. + </Typography> + </div> + </div> + ) +} + +export default ConfirmationTitle diff --git a/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx b/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx new file mode 100644 index 0000000000..51b48fa60d --- /dev/null +++ b/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx @@ -0,0 +1,167 @@ +import { type ReactElement, type SyntheticEvent, useContext, useState } from 'react' +import { Button, CardActions, Divider } from '@mui/material' +import classNames from 'classnames' + +import ErrorMessage from '@/components/tx/ErrorMessage' +import { logError, Errors } from '@/services/exceptions' +import { useCurrentChain } from '@/hooks/useChains' +import { getTxOptions } from '@/utils/transactions' +import useIsValidExecution from '@/hooks/useIsValidExecution' +import CheckWallet from '@/components/common/CheckWallet' +import { useImmediatelyExecutable, useIsExecutionLoop, useTxActions } from './hooks' +import { useRelaysBySafe } from '@/hooks/useRemainingRelays' +import useWalletCanRelay from '@/hooks/useWalletCanRelay' +import { ExecutionMethod, ExecutionMethodSelector } from '../ExecutionMethodSelector' +import { hasRemainingRelays } from '@/utils/relaying' +import type { SignOrExecuteProps } from '.' +import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { TxModalContext } from '@/components/tx-flow' +import { SuccessScreen } from '@/components/tx-flow/flows/SuccessScreen' +import useGasLimit from '@/hooks/useGasLimit' +import AdvancedParams, { useAdvancedParams } from '../AdvancedParams' +import { asError } from '@/services/exceptions/utils' + +import css from './styles.module.css' +import commonCss from '@/components/tx-flow/common/styles.module.css' +import { TxSecurityContext } from '../security/shared/TxSecurityContext' +import useIsSafeOwner from '@/hooks/useIsSafeOwner' +import NonOwnerError from '@/components/tx/SignOrExecuteForm/NonOwnerError' + +const ExecuteForm = ({ + safeTx, + txId, + onSubmit, + disableSubmit = false, + origin, + onlyExecute, +}: SignOrExecuteProps & { + safeTx?: SafeTransaction +}): ReactElement => { + // Form state + const [isSubmittable, setIsSubmittable] = useState<boolean>(true) + const [submitError, setSubmitError] = useState<Error | undefined>() + + // Hooks + const isOwner = useIsSafeOwner() + const currentChain = useCurrentChain() + const { executeTx } = useTxActions() + const [relays] = useRelaysBySafe() + const { setTxFlow } = useContext(TxModalContext) + const { needsRiskConfirmation, isRiskConfirmed, setIsRiskIgnored } = useContext(TxSecurityContext) + + // Check that the transaction is executable + const isCreation = !txId + const isNewExecutableTx = useImmediatelyExecutable() && isCreation + const isExecutionLoop = useIsExecutionLoop() + + // We default to relay, but the option is only shown if we canRelay + const [executionMethod, setExecutionMethod] = useState(ExecutionMethod.RELAY) + + // SC wallets can relay fully signed transactions + const [walletCanRelay] = useWalletCanRelay(safeTx) + + // The transaction can/will be relayed + const canRelay = walletCanRelay && hasRemainingRelays(relays) + const willRelay = canRelay && executionMethod === ExecutionMethod.RELAY + + // Estimate gas limit + const { gasLimit, gasLimitError } = useGasLimit(safeTx) + const [advancedParams, setAdvancedParams] = useAdvancedParams(gasLimit) + + // Check if transaction will fail + const { executionValidationError, isValidExecutionLoading } = useIsValidExecution(safeTx, advancedParams.gasLimit) + + // On modal submit + const handleSubmit = async (e: SyntheticEvent) => { + e.preventDefault() + + if (needsRiskConfirmation && !isRiskConfirmed) { + setIsRiskIgnored(true) + return + } + + setIsSubmittable(false) + setSubmitError(undefined) + + const txOptions = getTxOptions(advancedParams, currentChain) + + try { + const executedTxId = await executeTx(txOptions, safeTx, txId, origin, willRelay) + setTxFlow(<SuccessScreen txId={executedTxId} />, undefined, false) + } catch (_err) { + const err = asError(_err) + logError(Errors._804, err) + setIsSubmittable(true) + setSubmitError(err) + return + } + + onSubmit() + } + + const cannotPropose = !isOwner && !onlyExecute + const submitDisabled = + !safeTx || !isSubmittable || disableSubmit || isValidExecutionLoading || isExecutionLoop || cannotPropose + + return ( + <> + <form onSubmit={handleSubmit}> + <div className={classNames(css.params, { [css.noBottomBorderRadius]: canRelay })}> + <AdvancedParams + willExecute + params={advancedParams} + recommendedGasLimit={gasLimit} + onFormSubmit={setAdvancedParams} + gasLimitError={gasLimitError} + willRelay={willRelay} + /> + + {canRelay && ( + <div className={css.noTopBorder}> + <ExecutionMethodSelector + executionMethod={executionMethod} + setExecutionMethod={setExecutionMethod} + relays={relays} + /> + </div> + )} + </div> + + {/* Error messages */} + {cannotPropose ? ( + <NonOwnerError /> + ) : isExecutionLoop ? ( + <ErrorMessage> + Cannot execute a transaction from the Safe Account itself, please connect a different account. + </ErrorMessage> + ) : executionValidationError || gasLimitError ? ( + <ErrorMessage error={executionValidationError || gasLimitError}> + This transaction will most likely fail.{' '} + {isNewExecutableTx + ? 'To save gas costs, avoid creating the transaction.' + : 'To save gas costs, reject this transaction.'} + </ErrorMessage> + ) : ( + submitError && ( + <ErrorMessage error={submitError}>Error submitting the transaction. Please try again.</ErrorMessage> + ) + )} + + <Divider className={commonCss.nestedDivider} sx={{ pt: 3 }} /> + + <CardActions> + {/* Submit button */} + <CheckWallet allowNonOwner={onlyExecute}> + {(isOk) => ( + <Button variant="contained" type="submit" disabled={!isOk || submitDisabled}> + Submit + </Button> + )} + </CheckWallet> + </CardActions> + </form> + </> + ) +} + +export default ExecuteForm diff --git a/src/components/tx/SignOrExecuteForm/NonOwnerError.tsx b/src/components/tx/SignOrExecuteForm/NonOwnerError.tsx new file mode 100644 index 0000000000..8f773a7048 --- /dev/null +++ b/src/components/tx/SignOrExecuteForm/NonOwnerError.tsx @@ -0,0 +1,11 @@ +import ErrorMessage from '@/components/tx/ErrorMessage' + +const NonOwnerError = () => { + return ( + <ErrorMessage> + You are currently not an owner of this Safe Account and won't be able to submit this transaction. + </ErrorMessage> + ) +} + +export default NonOwnerError diff --git a/src/components/tx/SignOrExecuteForm/RiskConfirmationError.tsx b/src/components/tx/SignOrExecuteForm/RiskConfirmationError.tsx new file mode 100644 index 0000000000..56dd38eb44 --- /dev/null +++ b/src/components/tx/SignOrExecuteForm/RiskConfirmationError.tsx @@ -0,0 +1,15 @@ +import { useContext } from 'react' +import ErrorMessage from '../ErrorMessage' +import { TxSecurityContext } from '../security/shared/TxSecurityContext' + +const RiskConfirmationError = () => { + const { isRiskConfirmed, isRiskIgnored } = useContext(TxSecurityContext) + + if (isRiskConfirmed || !isRiskIgnored) { + return null + } + + return <ErrorMessage level="warning">Please acknowledge the risk before proceeding.</ErrorMessage> +} + +export default RiskConfirmationError diff --git a/src/components/tx/SignOrExecuteForm/SignForm.tsx b/src/components/tx/SignOrExecuteForm/SignForm.tsx new file mode 100644 index 0000000000..c3d39beb04 --- /dev/null +++ b/src/components/tx/SignOrExecuteForm/SignForm.tsx @@ -0,0 +1,91 @@ +import { type ReactElement, type SyntheticEvent, useContext, useState } from 'react' +import { Button, CardActions, Divider } from '@mui/material' + +import ErrorMessage from '@/components/tx/ErrorMessage' +import { logError, Errors } from '@/services/exceptions' +import useIsSafeOwner from '@/hooks/useIsSafeOwner' +import CheckWallet from '@/components/common/CheckWallet' +import { useTxActions } from './hooks' +import type { SignOrExecuteProps } from '.' +import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { TxModalContext } from '@/components/tx-flow' +import { asError } from '@/services/exceptions/utils' +import commonCss from '@/components/tx-flow/common/styles.module.css' +import { TxSecurityContext } from '../security/shared/TxSecurityContext' +import NonOwnerError from '@/components/tx/SignOrExecuteForm/NonOwnerError' + +const SignForm = ({ + safeTx, + txId, + onSubmit, + disableSubmit = false, + origin, +}: SignOrExecuteProps & { + safeTx?: SafeTransaction +}): ReactElement => { + // Form state + const [isSubmittable, setIsSubmittable] = useState<boolean>(true) + const [submitError, setSubmitError] = useState<Error | undefined>() + + // Hooks + const isOwner = useIsSafeOwner() + const { signTx } = useTxActions() + const { setTxFlow } = useContext(TxModalContext) + const { needsRiskConfirmation, isRiskConfirmed, setIsRiskIgnored } = useContext(TxSecurityContext) + + // On modal submit + const handleSubmit = async (e: SyntheticEvent) => { + e.preventDefault() + + if (needsRiskConfirmation && !isRiskConfirmed) { + setIsRiskIgnored(true) + return + } + + setIsSubmittable(false) + setSubmitError(undefined) + + try { + await signTx(safeTx, txId, origin) + setTxFlow(undefined) + } catch (_err) { + const err = asError(_err) + logError(Errors._804, err) + setIsSubmittable(true) + setSubmitError(err) + return + } + + onSubmit() + } + + const cannotPropose = !isOwner + const submitDisabled = !safeTx || !isSubmittable || disableSubmit || cannotPropose + + return ( + <form onSubmit={handleSubmit}> + {cannotPropose ? ( + <NonOwnerError /> + ) : ( + submitError && ( + <ErrorMessage error={submitError}>Error submitting the transaction. Please try again.</ErrorMessage> + ) + )} + + <Divider className={commonCss.nestedDivider} sx={{ pt: 3 }} /> + + <CardActions> + {/* Submit button */} + <CheckWallet> + {(isOk) => ( + <Button variant="contained" type="submit" disabled={!isOk || submitDisabled}> + Submit + </Button> + )} + </CheckWallet> + </CardActions> + </form> + ) +} + +export default SignForm diff --git a/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx b/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx deleted file mode 100644 index 2685496be0..0000000000 --- a/src/components/tx/SignOrExecuteForm/SignOrExecuteForm.test.tsx +++ /dev/null @@ -1,778 +0,0 @@ -import { fireEvent, render } from '@/tests/test-utils' -import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm/index' -import type { SafeSignature, SafeTransaction } from '@safe-global/safe-core-sdk-types' -import * as useSafeInfoHook from '@/hooks/useSafeInfo' -import * as useGasLimitHook from '@/hooks/useGasLimit' -import * as useChainsHook from '@/hooks/useChains' -import * as txSenderDispatch from '@/services/tx/tx-sender/dispatch' -import * as wallet from '@/hooks/wallets/useWallet' -import * as onboard from '@/hooks/wallets/useOnboard' -import * as walletUtils from '@/utils/wallets' -import * as web3 from '@/hooks/wallets/web3' -import * as canRelay from '@/hooks/useWalletCanRelay' -import type { ChainInfo, SafeInfo, TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' -import { waitFor } from '@testing-library/react' -import type { ConnectedWallet } from '@/services/onboard' -import * as safeCoreSDK from '@/hooks/coreSDK/safeCoreSDK' -import type Safe from '@safe-global/safe-core-sdk' -import { Web3Provider } from '@ethersproject/providers' -import { ethers } from 'ethers' -import * as wrongChain from '@/hooks/useIsWrongChain' -import * as useIsValidExecutionHook from '@/hooks/useIsValidExecution' -import * as useChains from '@/hooks/useChains' -import * as useRelaysBySafe from '@/hooks/useRemainingRelays' -import * as useRedefine from '@/components/tx/security/redefine/useRedefine' -import { FEATURES } from '@/utils/chains' -import { type OnboardAPI } from '@web3-onboard/core' -import { SecuritySeverity } from '@/services/security/modules/types' - -jest.mock('@/hooks/useIsWrongChain', () => ({ - __esModule: true, - default: jest.fn(() => false), -})) - -export const createSafeTx = (data = '0x'): SafeTransaction => { - return { - data: { - to: '0x0000000000000000000000000000000000000000', - value: '0x0', - data, - operation: 0, - nonce: 100, - }, - signatures: new Map([]), - addSignature: function (sig: SafeSignature): void { - this.signatures.set(sig.signer, sig) - }, - encodedSignatures: function (): string { - return Array.from(this.signatures) - .map(([, sig]) => { - return [sig.signer, sig.data].join(' = ') - }) - .join('; ') - }, - } as SafeTransaction -} - -describe('SignOrExecuteForm', () => { - let mockSDK - const mockProvider: Web3Provider = new Web3Provider(jest.fn()) - - beforeEach(() => { - jest.resetAllMocks() - - mockSDK = { - isModuleEnabled: jest.fn(() => false), - createTransaction: jest.fn(() => 'asd'), - getTransactionHash: jest.fn(() => '0x10'), - } as unknown as Safe - - jest.spyOn(safeCoreSDK, 'getSafeSDK').mockReturnValue(mockSDK) - jest.spyOn(useSafeInfoHook, 'default').mockImplementation(() => ({ - safe: { - version: '1.3.0', - address: { value: ethers.utils.hexZeroPad('0x000', 20) }, - nonce: 100, - threshold: 2, - owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], - } as SafeInfo, - safeAddress: '0x123', - safeError: undefined, - safeLoading: false, - safeLoaded: true, - })) - jest.spyOn(useGasLimitHook, 'default').mockReturnValue({ - gasLimit: undefined, - gasLimitError: undefined, - gasLimitLoading: false, - }) - jest.spyOn(useIsValidExecutionHook, 'default').mockReturnValue({ - isValidExecution: undefined, - executionValidationError: undefined, - isValidExecutionLoading: false, - }) - jest.spyOn(wallet, 'default').mockReturnValue({ - label: 'MetaMask', - address: ethers.utils.hexZeroPad('0x123', 20), - } as ConnectedWallet) - jest.spyOn(onboard, 'default').mockReturnValue({} as OnboardAPI) - jest.spyOn(web3, 'useWeb3').mockReturnValue(mockProvider) - jest.spyOn(wrongChain, 'default').mockReturnValue(false) - jest - .spyOn(txSenderDispatch, 'dispatchTxProposal') - .mockImplementation(jest.fn(() => Promise.resolve({ txId: '0x12' } as TransactionDetails))) - jest.spyOn(useChains, 'useCurrentChain').mockReturnValue({ - features: [FEATURES.RELAYING, FEATURES.RISK_MITIGATION], - chainId: '5', - } as unknown as ChainInfo) - jest.spyOn(walletUtils, 'isSmartContractWallet').mockResolvedValue(false) - jest.spyOn(useRelaysBySafe, 'useRelaysBySafe').mockReturnValue([{ remaining: 5, limit: 5 }, undefined, false]) - jest.spyOn(canRelay, 'default').mockReturnValue([false, undefined, false]) - }) - - it('displays decoded data if there is a tx', () => { - const mockTx = createSafeTx('0x123') - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} txId="mockTxId" />) - - expect(result.getByText('Transaction details')).toBeInTheDocument() - }) - - it('displays decoded data if tx is a native transfer', () => { - const mockTx = createSafeTx() - - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} />) - - expect(result.queryByText('Transaction details')).toBeInTheDocument() - - // Click on it - fireEvent.click(result.getByText('Transaction details')) - - expect(result.queryByText('Native token transfer')).toBeInTheDocument() - }) - - it('displays an execute checkbox if tx can be executed', () => { - const mockTx = createSafeTx() - const result = render(<SignOrExecuteForm isExecutable={true} txId="123" onSubmit={jest.fn} safeTx={mockTx} />) - - expect(result.getByText('Execute transaction')).toBeInTheDocument() - }) - - it('the execute checkbox is disabled if execution is the only option', () => { - const mockTx = createSafeTx() - const result = render( - <SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} onlyExecute={true} />, - ) - - expect((result.getByRole('checkbox') as HTMLInputElement).disabled).toBe(true) - }) - - it("doesn't display an execute checkbox if nonce is incorrect", () => { - const mockTx = createSafeTx() - - // @ts-ignore - mockTx.data.nonce = 10 - - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} />) - - expect(result.queryByText('Execute transaction')).not.toBeInTheDocument() - }) - - it('displays an execute checkbox if safe threshold is 1', () => { - jest.spyOn(useSafeInfoHook, 'default').mockImplementation(() => ({ - safe: { - version: '1.3.0', - address: { value: ethers.utils.hexZeroPad('0x000', 20) }, - nonce: 100, - threshold: 1, - owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }], - } as SafeInfo, - safeAddress: '0x123', - safeError: undefined, - safeLoading: false, - safeLoaded: true, - })) - - const mockTx = createSafeTx() - - const result = render(<SignOrExecuteForm onSubmit={jest.fn} safeTx={mockTx} />) - - expect(result.queryByText('Execute transaction')).toBeInTheDocument() - }) - - describe('hides execution-related errors if it is not an execution', () => { - it('hides the gas limit estimation error', () => { - jest.spyOn(useGasLimitHook, 'default').mockReturnValue({ - gasLimit: undefined, - gasLimitError: new Error('Error estimating gas limit'), - gasLimitLoading: false, - }) - - const mockTx = createSafeTx() - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} />) - - expect( - result.getByText('This transaction will most likely fail. To save gas costs, reject this transaction.'), - ).toBeInTheDocument() - - fireEvent.click(result.getByText('Execute transaction')) - - expect( - result.queryByText('This transaction will most likely fail. To save gas costs, reject this transaction.'), - ).not.toBeInTheDocument() - }) - - it('hides the execution validation error', () => { - jest.spyOn(useIsValidExecutionHook, 'default').mockReturnValue({ - isValidExecution: undefined, - executionValidationError: new Error('Error validating execution'), - isValidExecutionLoading: false, - }) - - const mockTx = createSafeTx() - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} />) - - expect( - result.getByText('This transaction will most likely fail. To save gas costs, reject this transaction.'), - ).toBeInTheDocument() - - fireEvent.click(result.getByText('Execute transaction')) - - expect( - result.queryByText('This transaction will most likely fail. To save gas costs, reject this transaction.'), - ).not.toBeInTheDocument() - }) - }) - - it('displays an error if passed through props', () => { - const mockTx = createSafeTx() - const result = render( - <SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} error={new Error('Some error')} />, - ) - - expect( - result.getByText('This transaction will most likely fail. To save gas costs, reject this transaction.'), - ).toBeInTheDocument() - }) - - it('displays an error and disables the submit button if connected wallet is not an owner', () => { - jest.spyOn(wallet, 'default').mockReturnValue({ - chainId: '1', - label: 'MetaMask', - address: ethers.utils.hexZeroPad('0x789', 20), - } as ConnectedWallet) - - const mockTx = createSafeTx() - const result = render(<SignOrExecuteForm isExecutable={false} onSubmit={jest.fn} safeTx={mockTx} />) - - expect( - result.getByText( - "You are currently not an owner of this Safe Account and won't be able to submit this transaction.", - ), - ).toBeInTheDocument() - expect(result.getByText('Submit')).toBeDisabled() - }) - - it('displays an error and disables the submit button if Safe attempts to execute own transaction', () => { - const address = ethers.utils.hexZeroPad('0x789', 20) - - jest.spyOn(useSafeInfoHook, 'default').mockReturnValue({ - safeAddress: address, - safe: { - version: '1.3.0', - address: { value: address }, - owners: [{ value: address }], - nonce: 100, - } as SafeInfo, - safeLoaded: true, - safeLoading: false, - safeError: undefined, - }) - - jest.spyOn(wallet, 'default').mockReturnValue({ - chainId: '1', - label: 'MetaMask', - address: address, - } as ConnectedWallet) - - const mockTx = createSafeTx() - const result = render(<SignOrExecuteForm isExecutable onlyExecute onSubmit={jest.fn} safeTx={mockTx} />) - - expect( - result.getByText( - 'Cannot execute a transaction from the Safe Account itself, please connect a different account.', - ), - ).toBeInTheDocument() - expect(result.getByText('Submit')).toBeDisabled() - }) - - describe('adjusts the generic error text creating/executing transactions', () => { - it('displays an error for newly created transactions', () => { - jest.spyOn(wallet, 'default').mockReturnValue({ - label: 'MetaMask', - address: ethers.utils.hexZeroPad('0x456', 20), - } as ConnectedWallet) - - jest.spyOn(useSafeInfoHook, 'default').mockReturnValue({ - safeAddress: ethers.utils.hexZeroPad('0x123', 20), - safe: { - version: '1.3.0', - address: { value: ethers.utils.hexZeroPad('0x000', 20) }, - owners: [{ value: ethers.utils.hexZeroPad('0x456', 20) }], - threshold: 1, - } as SafeInfo, - safeLoaded: true, - safeLoading: false, - safeError: undefined, - }) - - const mockTx = createSafeTx() - const result = render( - <SignOrExecuteForm isExecutable={false} onSubmit={jest.fn} safeTx={mockTx} error={new Error('Some error')} />, - ) - - expect( - result.getByText('This transaction will most likely fail. To save gas costs, avoid creating the transaction.'), - ).toBeInTheDocument() - }) - - it('displays an error for transactions being executed', () => { - const mockTx = createSafeTx() - const result = render( - <SignOrExecuteForm - isExecutable={false} - onSubmit={jest.fn} - safeTx={mockTx} - txId="0x123" - error={new Error('Some error')} - />, - ) - - expect( - result.getByText('This transaction will most likely fail. To save gas costs, reject this transaction.'), - ).toBeInTheDocument() - }) - }) - - it('allows execution for non-owners', () => { - jest.spyOn(wallet, 'default').mockReturnValue({ - chainId: '1', - label: 'MetaMask', - address: ethers.utils.hexZeroPad('0x789', 20), - } as ConnectedWallet) - - const mockTx = createSafeTx() - const result = render(<SignOrExecuteForm isExecutable onlyExecute onSubmit={jest.fn} safeTx={mockTx} />) - - expect( - result.queryByText( - "You are currently not an owner of this Safe Account and won't be able to submit this transaction.", - ), - ).not.toBeInTheDocument() - expect(result.getByText('Submit')).not.toBeDisabled() - }) - - it('displays a warning if connected wallet is on a different chain', async () => { - jest.spyOn(wrongChain, 'default').mockReturnValue(true) - jest - .spyOn(useChainsHook, 'useCurrentChain') - .mockReturnValue({ chainName: 'Goerli', features: [] as FEATURES[] } as ChainInfo) - - const mockTx = createSafeTx() - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} />) - - expect(result.getByText('Wallet network switch')).toBeInTheDocument() - expect(result.getByText('Submit')).not.toBeDisabled() - }) - - it('disables the submit button if there is no tx', () => { - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={undefined} />) - - expect(result.getByText('Submit')).toBeDisabled() - }) - - it('disables the submit button while executing', async () => { - const mockTx = createSafeTx() - const result = render( - <SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} onlyExecute={true} />, - ) - - const submitButton = result.getByText('Submit') - expect(submitButton).not.toBeDisabled() - fireEvent.click(submitButton) - - await waitFor(() => expect(submitButton).toBeDisabled()) - }) - - it('disables the submit button if gas limit/execution validity is estimating', async () => { - jest.spyOn(useGasLimitHook, 'default').mockReturnValue({ - gasLimit: undefined, - gasLimitError: undefined, - gasLimitLoading: true, - }) - - jest.spyOn(useIsValidExecutionHook, 'default').mockReturnValue({ - isValidExecution: undefined, - executionValidationError: undefined, - isValidExecutionLoading: true, - }) - - const mockTx = createSafeTx() - const result = render( - <SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} onlyExecute={true} />, - ) - - expect(result.getByText('Estimating...')).toBeDisabled() - }) - - it('relays a 2 out of 2 signed transaction with a connected EOA', async () => { - const signSpy = jest.fn(() => Promise.resolve({})) - const relaySpy = jest.fn() - const proposeSpy = jest.fn(() => Promise.resolve({ txId: '0xdead' })) - jest.spyOn(txSenderDispatch, 'dispatchTxSigning').mockImplementation(signSpy as any) - jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(proposeSpy as any) - jest.spyOn(txSenderDispatch, 'dispatchTxRelay').mockImplementation(relaySpy) - jest.spyOn(canRelay, 'default').mockReturnValue([true, undefined, false]) - - const mockTx = createSafeTx() - - mockTx.addSignature({ - signer: '0x123', - data: '0xEEE', - staticPart: () => '0xEEE', - dynamicPart: () => '', - }) - mockTx.addSignature({ - signer: '0x1234', - data: '0xEEE', - staticPart: () => '0xEEE', - dynamicPart: () => '', - }) - - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} txId="0xdead" />) - - const submitButton = result.getByText('Submit') - fireEvent.click(submitButton) - - await waitFor(() => { - expect(signSpy).not.toHaveBeenCalledTimes(1) - expect(proposeSpy).not.toHaveBeenCalledTimes(1) - expect(relaySpy).toHaveBeenCalledTimes(1) - }) - }) - - it('should not relay a not fully signed transaction with a connected SC wallet', async () => { - const relaySpy = jest.fn() - jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(jest.fn(() => Promise.resolve({})) as any) - jest.spyOn(txSenderDispatch, 'dispatchTxRelay').mockImplementation(relaySpy) - jest.spyOn(canRelay, 'default').mockReturnValue([true, undefined, false]) - - // SC wallet connected - jest.spyOn(walletUtils, 'isSmartContractWallet').mockResolvedValue(true) - - const mockTx = createSafeTx() - - mockTx.addSignature({ - signer: '0x123', - data: '0xEEE', - staticPart: () => '0xEEE', - dynamicPart: () => '', - }) - - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} txId="0xdead" />) - - const submitButton = result.getByText('Submit') - fireEvent.click(submitButton) - - await waitFor(() => expect(relaySpy).toHaveBeenCalledTimes(0)) - }) - - it('relays a fully signed transaction with a connected SC wallet', async () => { - const relaySpy = jest.fn() - jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(jest.fn(() => Promise.resolve({})) as any) - jest.spyOn(txSenderDispatch, 'dispatchTxRelay').mockImplementation(relaySpy) - jest.spyOn(canRelay, 'default').mockReturnValue([true, undefined, false]) - - // SC wallet connected - jest.spyOn(walletUtils, 'isSmartContractWallet').mockResolvedValue(true) - - const mockTx = createSafeTx() - - mockTx.addSignature({ - signer: '0x123', - data: '0xEEE', - staticPart: () => '0xEEE', - dynamicPart: () => '', - }) - - mockTx.addSignature({ - signer: '0x345', - data: '0xAAA', - staticPart: () => '0xAAA', - dynamicPart: () => '', - }) - - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} txId="0xdead" />) - - const submitButton = result.getByText('Submit') - fireEvent.click(submitButton) - - await waitFor(() => expect(relaySpy).toHaveBeenCalledTimes(1)) - }) - - it('relays a fully signed transaction with a connected EOA', async () => { - const relaySpy = jest.fn() - jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(jest.fn(() => Promise.resolve({})) as any) - jest.spyOn(txSenderDispatch, 'dispatchTxRelay').mockImplementation(relaySpy) - jest.spyOn(canRelay, 'default').mockReturnValue([true, undefined, false]) - - const mockTx = createSafeTx() - - mockTx.addSignature({ - signer: '0x123', - data: '0xEEE', - staticPart: () => '0xEEE', - dynamicPart: () => '', - }) - - mockTx.addSignature({ - signer: '0x345', - data: '0xAAA', - staticPart: () => '0xAAA', - dynamicPart: () => '', - }) - - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} txId="0xdead" />) - - const submitButton = result.getByText('Submit') - fireEvent.click(submitButton) - - await waitFor(() => expect(relaySpy).toHaveBeenCalledTimes(1)) - }) - - it('executes a transaction with the connected wallet if chosen instead of relaying', async () => { - jest.spyOn(useRelaysBySafe, 'useRelaysBySafe').mockReturnValue([{ remaining: 5, limit: 5 }, undefined, false]) - jest.spyOn(canRelay, 'default').mockReturnValue([true, undefined, false]) - - const executionSpy = jest.fn() - jest - .spyOn(txSenderDispatch, 'dispatchTxProposal') - .mockImplementation(jest.fn(() => Promise.resolve({} as TransactionDetails))) - - jest.spyOn(txSenderDispatch, 'dispatchTxExecution').mockImplementation(executionSpy) - - const mockTx = createSafeTx() - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} />) - - const walletOptionRadio = await result.findByText('Connected wallet') - expect(walletOptionRadio).toBeInTheDocument() - fireEvent.click(walletOptionRadio) - - const submitButton = result.getByText('Submit') - fireEvent.click(submitButton) - - await waitFor(() => expect(executionSpy).toHaveBeenCalledTimes(1)) - }) - - it('when there are no remaining relays, there should be no option to select the execution method', async () => { - jest.spyOn(useRelaysBySafe, 'useRelaysBySafe').mockReturnValue([{ remaining: 0, limit: 5 }, undefined, false]) - - const executionSpy = jest.fn() - jest - .spyOn(txSenderDispatch, 'dispatchTxProposal') - .mockImplementation(jest.fn(() => Promise.resolve({} as TransactionDetails))) - - jest.spyOn(txSenderDispatch, 'dispatchTxExecution').mockImplementation(executionSpy) - - const mockTx = createSafeTx() - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} />) - - const walletOptionRadio = result.queryByText('Connected wallet') - - expect(walletOptionRadio).not.toBeInTheDocument() - }) - - it('executes a transaction with the connected wallet if relaying is not available', async () => { - jest.spyOn(useRelaysBySafe, 'useRelaysBySafe').mockReturnValue([{ remaining: 0, limit: 5 }, undefined, false]) - - const executionSpy = jest.fn() - jest - .spyOn(txSenderDispatch, 'dispatchTxProposal') - .mockImplementation(jest.fn(() => Promise.resolve({} as TransactionDetails))) - - jest.spyOn(txSenderDispatch, 'dispatchTxExecution').mockImplementation(executionSpy) - - const mockTx = createSafeTx() - const result = render(<SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} />) - - const submitButton = result.getByText('Submit') - fireEvent.click(submitButton) - - await waitFor(() => expect(executionSpy).toHaveBeenCalledTimes(1)) - }) - - it('signs a transaction', async () => { - const mockTx = createSafeTx() - - const signSpy = jest.fn(() => Promise.resolve({} as SafeTransaction)) - const proposeSpy = jest.fn(() => Promise.resolve({} as TransactionDetails)) - - jest.spyOn(txSenderDispatch, 'dispatchTxSigning').mockImplementation(signSpy) - jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(proposeSpy) - jest.spyOn(walletUtils, 'isSmartContractWallet').mockImplementation(() => Promise.resolve(false)) - - const result = render(<SignOrExecuteForm onSubmit={jest.fn} safeTx={mockTx} />) - - const submitButton = result.getByText('Submit') - fireEvent.click(submitButton) - - await waitFor(() => expect(signSpy).toHaveBeenCalledTimes(1)) - expect(proposeSpy).toHaveBeenCalledTimes(1) - }) - - it('smart contract wallets have to propose when creating a tx with an on-chain signature', async () => { - const mockTx = createSafeTx() - - const onChainSignSpy = jest.fn(() => Promise.resolve()) - const proposeSpy = jest.fn(() => Promise.resolve({} as TransactionDetails)) - - jest.spyOn(txSenderDispatch, 'dispatchOnChainSigning').mockImplementation(onChainSignSpy) - jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(proposeSpy) - jest.spyOn(walletUtils, 'isSmartContractWallet').mockImplementation(() => Promise.resolve(true)) - - const result = render(<SignOrExecuteForm onSubmit={jest.fn} safeTx={mockTx} />) - - const submitButton = result.getByText('Submit') - fireEvent.click(submitButton) - - await waitFor(() => expect(onChainSignSpy).toHaveBeenCalledTimes(1)) - expect(proposeSpy).toHaveBeenCalled() - }) - - it('smart contract wallets should not propose when on-chain signing an existing transactions', async () => { - const mockTx = createSafeTx() - - const onChainSignSpy = jest.fn(() => Promise.resolve()) - const proposeSpy = jest.fn(() => Promise.resolve({} as TransactionDetails)) - - jest.spyOn(txSenderDispatch, 'dispatchOnChainSigning').mockImplementation(onChainSignSpy) - jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(proposeSpy) - jest.spyOn(walletUtils, 'isSmartContractWallet').mockImplementation(() => Promise.resolve(true)) - - const result = render(<SignOrExecuteForm txId="0x123" onSubmit={jest.fn} safeTx={mockTx} />) - - const submitButton = result.getByText('Submit') - fireEvent.click(submitButton) - - await waitFor(() => expect(onChainSignSpy).toHaveBeenCalledTimes(1)) - expect(proposeSpy).not.toHaveBeenCalled() - }) - - it('displays an error if execution submission fails', async () => { - jest - .spyOn(txSenderDispatch, 'dispatchTxExecution') - .mockImplementation(jest.fn(() => Promise.reject('Error while dispatching'))) - jest - .spyOn(txSenderDispatch, 'dispatchTxSigning') - .mockImplementation(jest.fn(() => Promise.reject('Error while dispatching'))) - jest - .spyOn(txSenderDispatch, 'dispatchTxRelay') - .mockImplementation(jest.fn(() => Promise.reject('Error while dispatching'))) - - const mockTx = createSafeTx() - const result = render( - <SignOrExecuteForm isExecutable={true} onSubmit={jest.fn} safeTx={mockTx} onlyExecute={true} txId="123" />, - ) - - const submitButton = result.getByText('Submit') - fireEvent.click(submitButton) - - await waitFor(() => { - expect(result.getByText('Error submitting the transaction. Please try again.')).toBeInTheDocument() - }) - }) - - it('requires a confirmation for high risk transactions', async () => { - const mockTx = createSafeTx() - - const signSpy = jest.fn(() => Promise.resolve({} as SafeTransaction)) - const proposeSpy = jest.fn(() => Promise.resolve({} as TransactionDetails)) - - jest.spyOn(txSenderDispatch, 'dispatchTxSigning').mockImplementation(signSpy) - jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(proposeSpy) - jest.spyOn(walletUtils, 'isSmartContractWallet').mockImplementation(() => Promise.resolve(false)) - jest.spyOn(useChains, 'useHasFeature').mockImplementation((feature: FEATURES) => { - return feature === FEATURES.RISK_MITIGATION - }) - jest.spyOn(useRedefine, 'useRedefine').mockReturnValue([ - { - severity: SecuritySeverity.HIGH, - payload: { - errors: [], - issues: [ - { - category: 'TEST_CATEGORY', - description: { - short: 'High test issue', - long: 'This is just a test', - }, - severity: SecuritySeverity.HIGH, - }, - ], - }, - }, - undefined, - false, - ]) - - const result = render(<SignOrExecuteForm onSubmit={jest.fn} safeTx={mockTx} />) - - const submitButton = result.getByText('Submit') - expect(submitButton).toBeDisabled() - - expect(result.baseElement).toHaveTextContent('High issue') - expect(result.baseElement).toHaveTextContent('High test issue') - expect(result.baseElement).toHaveTextContent('I understand the risks and would like to continue this transaction') - - const confirmationBox = result.getByText('I understand the risks and would like to continue this transaction') - fireEvent.click(confirmationBox) - expect(submitButton).toBeEnabled() - fireEvent.click(submitButton) - - await waitFor(() => { - expect(signSpy).toHaveBeenCalledTimes(1) - expect(proposeSpy).toHaveBeenCalledTimes(1) - }) - }) - - it('requires no confirmation for low / no risk transactions', async () => { - const mockTx = createSafeTx() - - const signSpy = jest.fn(() => Promise.resolve({} as SafeTransaction)) - const proposeSpy = jest.fn(() => Promise.resolve({} as TransactionDetails)) - - jest.spyOn(txSenderDispatch, 'dispatchTxSigning').mockImplementation(signSpy) - jest.spyOn(txSenderDispatch, 'dispatchTxProposal').mockImplementation(proposeSpy) - jest.spyOn(walletUtils, 'isSmartContractWallet').mockImplementation(() => Promise.resolve(false)) - jest.spyOn(useChains, 'useHasFeature').mockImplementation((feature: FEATURES) => { - return feature === FEATURES.RISK_MITIGATION - }) - jest.spyOn(useRedefine, 'useRedefine').mockReturnValue([ - { - severity: SecuritySeverity.LOW, - payload: { - errors: [], - issues: [ - { - category: 'TEST_CATEGORY', - description: { - short: 'Low test issue', - long: 'This is just a test', - }, - severity: SecuritySeverity.LOW, - }, - ], - }, - }, - undefined, - false, - ]) - - const result = render(<SignOrExecuteForm onSubmit={jest.fn} safeTx={mockTx} />) - - const submitButton = result.getByText('Submit') - expect(submitButton).toBeEnabled() - - expect(result.baseElement).toHaveTextContent('Low issue') - expect(result.baseElement).toHaveTextContent('Low test issue') - expect(result.baseElement).not.toHaveTextContent( - 'I understand the risks and would like to continue this transaction', - ) - - fireEvent.click(submitButton) - - await waitFor(() => { - expect(signSpy).toHaveBeenCalledTimes(1) - expect(proposeSpy).toHaveBeenCalledTimes(1) - }) - }) -}) diff --git a/src/components/tx/SignOrExecuteForm/SubmitButton.tsx b/src/components/tx/SignOrExecuteForm/SubmitButton.tsx index a3fa52476c..8412086eab 100644 --- a/src/components/tx/SignOrExecuteForm/SubmitButton.tsx +++ b/src/components/tx/SignOrExecuteForm/SubmitButton.tsx @@ -1,7 +1,7 @@ import CheckWallet from '@/components/common/CheckWallet' import { Button } from '@mui/material' import { useContext } from 'react' -import { TransactionSecurityContext } from '../security/TransactionSecurityContext' +import { TxSecurityContext } from '../security/shared/TxSecurityContext' const SubmitButton = ({ willExecute, @@ -12,7 +12,7 @@ const SubmitButton = ({ submitDisabled: boolean isEstimating: boolean }) => { - const { needsRiskConfirmation, isRiskConfirmed } = useContext(TransactionSecurityContext) + const { needsRiskConfirmation, isRiskConfirmed } = useContext(TxSecurityContext) const disableButton = submitDisabled || (needsRiskConfirmation && !isRiskConfirmed) return ( diff --git a/src/components/tx/SignOrExecuteForm/TxChecks.tsx b/src/components/tx/SignOrExecuteForm/TxChecks.tsx new file mode 100644 index 0000000000..d1fb2444fa --- /dev/null +++ b/src/components/tx/SignOrExecuteForm/TxChecks.tsx @@ -0,0 +1,31 @@ +import { type ReactElement, useContext } from 'react' +import { TxSimulation, TxSimulationMessage } from '@/components/tx/security/tenderly' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' +import { Box, Typography } from '@mui/material' +import { Redefine, RedefineMessage } from '@/components/tx/security/redefine' + +import css from './styles.module.css' + +const TxChecks = (): ReactElement => { + const { safeTx } = useContext(SafeTxContext) + + return ( + <> + <Typography variant="h5">Transaction checks</Typography> + + <TxSimulation disabled={false} transactions={safeTx} /> + + <Box className={css.mobileTxCheckMessages}> + <TxSimulationMessage /> + </Box> + + <Redefine /> + + <Box className={css.mobileTxCheckMessages}> + <RedefineMessage /> + </Box> + </> + ) +} + +export default TxChecks diff --git a/src/components/tx/SignOrExecuteForm/hooks.test.ts b/src/components/tx/SignOrExecuteForm/hooks.test.ts index 94607bba31..d40e5c1861 100644 --- a/src/components/tx/SignOrExecuteForm/hooks.test.ts +++ b/src/components/tx/SignOrExecuteForm/hooks.test.ts @@ -1,18 +1,67 @@ import { renderHook } from '@/tests/test-utils' import { ethers } from 'ethers' -import { type SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' +import type { SafeSignature, SafeTransaction } from '@safe-global/safe-core-sdk-types' +import type { SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' import { type ConnectedWallet } from '@/services/onboard' import * as useSafeInfoHook from '@/hooks/useSafeInfo' import * as wallet from '@/hooks/wallets/useWallet' import * as walletHooks from '@/utils/wallets' import * as pending from '@/hooks/usePendingTxs' -import * as txSender from '@/services/tx/tx-sender' +import * as txSender from '@/services/tx/tx-sender/dispatch' +import * as onboardHooks from '@/hooks/wallets/useOnboard' +import { type OnboardAPI } from '@web3-onboard/core' import { useImmediatelyExecutable, useIsExecutionLoop, useTxActions, useValidateNonce } from './hooks' -import { createSafeTx } from './SignOrExecuteForm.test' + +const createSafeTx = (data = '0x'): SafeTransaction => { + return { + data: { + to: '0x0000000000000000000000000000000000000000', + value: '0x0', + data, + operation: 0, + nonce: 100, + }, + signatures: new Map([]), + addSignature: function (sig: SafeSignature): void { + this.signatures.set(sig.signer, sig) + }, + encodedSignatures: function (): string { + return Array.from(this.signatures) + .map(([, sig]) => { + return [sig.signer, sig.data].join(' = ') + }) + .join('; ') + }, + } as SafeTransaction +} describe('SignOrExecute hooks', () => { beforeEach(() => { jest.clearAllMocks() + + // Onboard + jest.spyOn(onboardHooks, 'default').mockReturnValue({ + setChain: jest.fn(), + state: { + get: () => ({ + wallets: [ + { + label: 'MetaMask', + accounts: [{ address: '0x1234567890000000000000000000000000000000' }], + connected: true, + chains: [{ id: '1' }], + }, + ], + }), + }, + } as unknown as OnboardAPI) + + // Wallet + jest.spyOn(wallet, 'default').mockReturnValue({ + chainId: '1', + label: 'MetaMask', + address: '0x1234567890000000000000000000000000000000', + } as unknown as ConnectedWallet) }) describe('useValidateNonce', () => { @@ -24,6 +73,7 @@ describe('SignOrExecute hooks', () => { nonce: 100, threshold: 2, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: ethers.utils.hexZeroPad('0x000', 20), safeError: undefined, @@ -44,6 +94,7 @@ describe('SignOrExecute hooks', () => { nonce: 90, threshold: 2, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: ethers.utils.hexZeroPad('0x000', 20), safeError: undefined, @@ -68,6 +119,7 @@ describe('SignOrExecute hooks', () => { address: { value: address }, owners: [{ value: address }], nonce: 100, + chainId: '1', } as SafeInfo, safeLoaded: true, safeLoading: false, @@ -130,6 +182,7 @@ describe('SignOrExecute hooks', () => { owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }], threshold: 2, nonce: 100, + chainId: '1', } as SafeInfo, safeLoaded: true, safeLoading: false, @@ -152,6 +205,7 @@ describe('SignOrExecute hooks', () => { owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }], threshold: 1, nonce: 100, + chainId: '1', } as SafeInfo, safeLoaded: true, safeLoading: false, @@ -175,6 +229,7 @@ describe('SignOrExecute hooks', () => { nonce: 100, threshold: 2, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: '0x123', safeError: undefined, @@ -198,6 +253,7 @@ describe('SignOrExecute hooks', () => { nonce: 100, threshold: 2, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: '0x123', safeError: undefined, @@ -208,15 +264,19 @@ describe('SignOrExecute hooks', () => { jest .spyOn(txSender, 'dispatchTxProposal') .mockImplementation((() => Promise.resolve({ txId: '123' })) as unknown as typeof txSender.dispatchTxProposal) + const signSpy = jest .spyOn(txSender, 'dispatchTxSigning') .mockImplementation(() => Promise.resolve(createSafeTx())) + const onchainSignSpy = jest.spyOn(txSender, 'dispatchOnChainSigning').mockImplementation(() => Promise.resolve()) + const { result } = renderHook(() => useTxActions()) const { signTx } = result.current const id = await signTx(createSafeTx()) expect(signSpy).toHaveBeenCalled() + expect(onchainSignSpy).not.toHaveBeenCalled() expect(id).toBe('123') const id2 = await signTx(createSafeTx(), '456') @@ -234,6 +294,7 @@ describe('SignOrExecute hooks', () => { nonce: 100, threshold: 2, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: '0x123', safeError: undefined, @@ -262,6 +323,7 @@ describe('SignOrExecute hooks', () => { nonce: 100, threshold: 2, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: '0x123', safeError: undefined, @@ -293,6 +355,7 @@ describe('SignOrExecute hooks', () => { nonce: 100, threshold: 2, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: '0x123', safeError: undefined, @@ -324,6 +387,7 @@ describe('SignOrExecute hooks', () => { nonce: 100, threshold: 2, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: '0x123', safeError: undefined, @@ -347,6 +411,7 @@ describe('SignOrExecute hooks', () => { nonce: 100, threshold: 1, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: '0x123', safeError: undefined, @@ -386,6 +451,7 @@ describe('SignOrExecute hooks', () => { nonce: 100, threshold: 2, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: '0x123', safeError: undefined, @@ -435,6 +501,7 @@ describe('SignOrExecute hooks', () => { nonce: 100, threshold: 2, owners: [{ value: ethers.utils.hexZeroPad('0x123', 20) }, { value: ethers.utils.hexZeroPad('0x456', 20) }], + chainId: '1', } as SafeInfo, safeAddress: '0x123', safeError: undefined, diff --git a/src/components/tx/SignOrExecuteForm/hooks.ts b/src/components/tx/SignOrExecuteForm/hooks.ts index 0bbe7d52a8..09a1d5bfc2 100644 --- a/src/components/tx/SignOrExecuteForm/hooks.ts +++ b/src/components/tx/SignOrExecuteForm/hooks.ts @@ -1,5 +1,6 @@ import { useMemo } from 'react' import { type TransactionOptions, type SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { sameString } from '@safe-global/safe-core-sdk/dist/src/utils' import useSafeInfo from '@/hooks/useSafeInfo' import useWallet from '@/hooks/wallets/useWallet' import useOnboard from '@/hooks/wallets/useOnboard' @@ -12,10 +13,10 @@ import { dispatchTxSigning, } from '@/services/tx/tx-sender' import { useHasPendingTxs } from '@/hooks/usePendingTxs' -import { sameString } from '@safe-global/safe-core-sdk/dist/src/utils' import type { ConnectedWallet } from '@/services/onboard' import type { OnboardAPI } from '@web3-onboard/core' -import { hasEnoughSignatures } from '@/utils/transactions' +import { getSafeTxGas, getRecommendedNonce } from '@/services/tx/tx-sender/recommendedNonce' +import useAsync from '@/hooks/useAsync' type TxActions = { signTx: (safeTx?: SafeTransaction, txId?: string, origin?: string) => Promise<string> @@ -28,13 +29,13 @@ type TxActions = { ) => Promise<string> } -function assertTx(safeTx?: SafeTransaction): asserts safeTx { +function assertTx(safeTx: SafeTransaction | undefined): asserts safeTx { if (!safeTx) throw new Error('Transaction not provided') } function assertWallet(wallet: ConnectedWallet | null): asserts wallet { if (!wallet) throw new Error('Wallet not connected') } -function assertOnboard(onboard?: OnboardAPI): asserts onboard { +function assertOnboard(onboard: OnboardAPI | undefined): asserts onboard { if (!onboard) throw new Error('Onboard not connected') } @@ -97,7 +98,7 @@ export const useTxActions = (): TxActions => { assertOnboard(onboard) // Relayed transactions must be fully signed, so request a final signature if needed - if (isRelayed && !hasEnoughSignatures(safeTx, safe)) { + if (isRelayed && safeTx.signatures.size < safe.threshold) { safeTx = await signRelayedTx(safeTx) txId = await proposeTx(wallet.address, safeTx, txId, origin) } @@ -121,7 +122,7 @@ export const useTxActions = (): TxActions => { }, [safe, onboard, wallet]) } -export const useValidateNonce = (safeTx?: SafeTransaction): boolean => { +export const useValidateNonce = (safeTx: SafeTransaction | undefined): boolean => { const { safe } = useSafeInfo() return !!safeTx && safeTx?.data.nonce === safe.nonce } @@ -138,3 +139,43 @@ export const useIsExecutionLoop = (): boolean => { const { safeAddress } = useSafeInfo() return wallet ? sameString(wallet.address, safeAddress) : false } + +export const useRecommendedNonce = (): number | undefined => { + const { safeAddress, safe } = useSafeInfo() + + const [recommendedNonce] = useAsync( + () => { + if (!safe.chainId || !safeAddress) return + + return getRecommendedNonce(safe.chainId, safeAddress) + }, + [safeAddress, safe.chainId, safe.txQueuedTag], // update when tx queue changes + false, // keep old recommended nonce while refreshing to avoid skeleton + ) + + return recommendedNonce +} + +export const useSafeTxGas = (safeTx: SafeTransaction | undefined): number | undefined => { + const { safeAddress, safe } = useSafeInfo() + + // Memoize only the necessary params so that the useAsync hook is not called every time safeTx changes + const safeTxParams = useMemo(() => { + return !safeTx?.data?.to + ? undefined + : { + to: safeTx?.data.to, + value: safeTx?.data?.value, + data: safeTx?.data?.data, + operation: safeTx?.data?.operation, + } + }, [safeTx?.data.to, safeTx?.data.value, safeTx?.data.data, safeTx?.data.operation]) + + const [safeTxGas] = useAsync(() => { + if (!safe.chainId || !safeAddress || !safeTxParams) return + + return getSafeTxGas(safe.chainId, safeAddress, safeTxParams) + }, [safeAddress, safe.chainId, safeTxParams]) + + return safeTxGas +} diff --git a/src/components/tx/SignOrExecuteForm/index.tsx b/src/components/tx/SignOrExecuteForm/index.tsx index bbcbff221c..37d224920f 100644 --- a/src/components/tx/SignOrExecuteForm/index.tsx +++ b/src/components/tx/SignOrExecuteForm/index.tsx @@ -1,39 +1,25 @@ -import { type ReactElement, type ReactNode, type SyntheticEvent, useEffect, useState } from 'react' -import { Box, DialogContent, Typography } from '@mui/material' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' - -import useGasLimit from '@/hooks/useGasLimit' -import ErrorMessage from '@/components/tx/ErrorMessage' -import AdvancedParams, { type AdvancedParameters, useAdvancedParams } from '@/components/tx/AdvancedParams' +import { type ReactElement, type ReactNode, useState, useContext } from 'react' import DecodedTx from '../DecodedTx' import ExecuteCheckbox from '../ExecuteCheckbox' -import { logError, Errors } from '@/services/exceptions' -import { useCurrentChain } from '@/hooks/useChains' -import { getTxOptions } from '@/utils/transactions' -import { TxSimulation } from '@/components/tx/TxSimulation' -import useIsSafeOwner from '@/hooks/useIsSafeOwner' -import useIsValidExecution from '@/hooks/useIsValidExecution' -import { createTx } from '@/services/tx/tx-sender' import { WrongChainWarning } from '../WrongChainWarning' -import { useImmediatelyExecutable, useIsExecutionLoop, useTxActions, useValidateNonce } from './hooks' -import UnknownContractError from './UnknownContractError' -import { useRelaysBySafe } from '@/hooks/useRemainingRelays' -import useWalletCanRelay from '@/hooks/useWalletCanRelay' -import { ExecutionMethod, ExecutionMethodSelector } from '../ExecutionMethodSelector' -import { hasRemainingRelays } from '@/utils/relaying' -import { TransactionSecurityProvider } from '../security/TransactionSecurityContext' +import { useImmediatelyExecutable, useValidateNonce } from './hooks' +import ExecuteForm from './ExecuteForm' +import SignForm from './SignForm' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' +import ErrorMessage from '../ErrorMessage' +import TxChecks from './TxChecks' +import TxCard from '@/components/tx-flow/common/TxCard' +import ConfirmationTitle, { ConfirmationTitleTypes } from '@/components/tx/SignOrExecuteForm/ConfirmationTitle' +import { useAppSelector } from '@/store' +import { selectSettings } from '@/store/settingsSlice' import { RedefineBalanceChanges } from '../security/redefine/RedefineBalanceChange' -import { RedefineScanResult } from '../security/redefine/RedefineScanResult/RedefineScanResult' -import SubmitButton from './SubmitButton' -import { useAppDispatch, useAppSelector } from '@/store' -import { selectSettings, setTransactionExecution } from '@/store/settingsSlice' +import UnknownContractError from './UnknownContractError' +import RiskConfirmationError from './RiskConfirmationError' -type SignOrExecuteProps = { - safeTx?: SafeTransaction +export type SignOrExecuteProps = { txId?: string - onSubmit: () => void + onSubmit: () => void // Should go to the success screen onSubmit children?: ReactNode - error?: Error isExecutable?: boolean isRejection?: boolean onlyExecute?: boolean @@ -41,232 +27,55 @@ type SignOrExecuteProps = { origin?: string } -const SignOrExecuteForm = ({ - safeTx, - txId, - onSubmit, - children, - onlyExecute = false, - isExecutable = false, - isRejection = false, - disableSubmit = false, - origin, - ...props -}: SignOrExecuteProps): ReactElement => { - const settings = useAppSelector(selectSettings) - - // - // Hooks & variables - // - const [shouldExecute, setShouldExecute] = useState<boolean>(settings.transactionExecution) - const [isSubmittable, setIsSubmittable] = useState<boolean>(true) - const [tx, setTx] = useState<SafeTransaction | undefined>(safeTx) - const [submitError, setSubmitError] = useState<Error | undefined>() - - // Hooks - const isOwner = useIsSafeOwner() - const currentChain = useCurrentChain() - const { signTx, executeTx } = useTxActions() - const [relays] = useRelaysBySafe() - const dispatch = useAppDispatch() - - // Check that the transaction is executable - const isCreation = !txId +const SignOrExecuteForm = (props: SignOrExecuteProps): ReactElement => { + const { transactionExecution } = useAppSelector(selectSettings) + const [shouldExecute, setShouldExecute] = useState<boolean>(transactionExecution) + const isCreation = !props.txId const isNewExecutableTx = useImmediatelyExecutable() && isCreation - const isCorrectNonce = useValidateNonce(tx) - const isExecutionLoop = useIsExecutionLoop() - const canExecute = isCorrectNonce && (isExecutable || isNewExecutableTx) + const { safeTx, safeTxError } = useContext(SafeTxContext) + const isCorrectNonce = useValidateNonce(safeTx) // If checkbox is checked and the transaction is executable, execute it, otherwise sign it - const willExecute = (onlyExecute || shouldExecute) && canExecute - - // We default to relay, but the option is only shown if we canRelay - const [executionMethod, setExecutionMethod] = useState(ExecutionMethod.RELAY) - - // SC wallets can relay fully signed transactions - const [walletCanRelay] = useWalletCanRelay(tx) - - // The transaction can/will be relayed - const canRelay = hasRemainingRelays(relays) && !!walletCanRelay && willExecute - const willRelay = canRelay && executionMethod === ExecutionMethod.RELAY - - // Synchronize the tx with the safeTx - useEffect(() => setTx(safeTx), [safeTx]) - - // Estimate gas limit - const { gasLimit, gasLimitError, gasLimitLoading } = useGasLimit(willExecute ? tx : undefined) - - const [advancedParams, setAdvancedParams] = useAdvancedParams({ - nonce: tx?.data.nonce, - gasLimit, - safeTxGas: tx?.data.safeTxGas, - }) - - // Check if transaction will fail - const { executionValidationError, isValidExecutionLoading } = useIsValidExecution( - willExecute ? tx : undefined, - advancedParams.gasLimit, - ) - - // Estimating gas - const isEstimating = willExecute && gasLimitLoading - // Nonce cannot be edited if the tx is already proposed, or signed, or it's a rejection - const nonceReadonly = !isCreation || !!tx?.signatures.size || isRejection - - // Sign transaction - const onSign = async (): Promise<string | undefined> => { - return await signTx(tx, txId, origin) - } - - // Execute transaction - const onExecute = async (): Promise<string | undefined> => { - const txOptions = getTxOptions(advancedParams, currentChain) - return await executeTx(txOptions, tx, txId, origin, willRelay) - } - - // On modal submit - const handleSubmit = async (e: SyntheticEvent) => { - e.preventDefault() - setIsSubmittable(false) - setSubmitError(undefined) - - try { - await (willExecute ? onExecute() : onSign()) - } catch (err) { - logError(Errors._804, (err as Error).message) - setIsSubmittable(true) - setSubmitError(err as Error) - return - } - - onSubmit() - } - - // On advanced params submit (nonce, gas limit, price, etc), recreate the transaction - const onAdvancedSubmit = async (data: AdvancedParameters) => { - // If nonce was edited, create a new tx with that nonce - if (tx && (data.nonce !== tx.data.nonce || data.safeTxGas !== tx.data.safeTxGas)) { - try { - setTx(await createTx({ ...tx.data, safeTxGas: data.safeTxGas }, data.nonce)) - } catch (err) { - logError(Errors._103, (err as Error).message) - return - } - } - - setAdvancedParams(data) - } - - const handleExecuteCheckboxChange = (checked: boolean) => { - setShouldExecute(checked) - dispatch(setTransactionExecution(checked)) - } - - const cannotPropose = !isOwner && !onlyExecute // Can't sign or create a tx if not an owner - const submitDisabled = - !isSubmittable || - isEstimating || - !tx || - disableSubmit || - cannotPropose || - isValidExecutionLoading || - (willExecute && isExecutionLoop) - - const error = props.error || (willExecute ? gasLimitError || executionValidationError : undefined) + const canExecute = isCorrectNonce && (props.isExecutable || isNewExecutableTx) + const willExecute = (props.onlyExecute || shouldExecute) && canExecute return ( - <form onSubmit={handleSubmit}> - <DialogContent> - {children} + <> + <TxCard> + {props.children} - <TransactionSecurityProvider safeTx={safeTx}> - <> - <RedefineBalanceChanges /> - <DecodedTx tx={tx} txId={txId} /> + <DecodedTx tx={safeTx} txId={props.txId} /> - {canExecute && ( - <ExecuteCheckbox - checked={shouldExecute || onlyExecute} - onChange={handleExecuteCheckboxChange} - disabled={onlyExecute} - /> - )} + <RedefineBalanceChanges /> + </TxCard> - <AdvancedParams - params={advancedParams} - recommendedGasLimit={gasLimit} - recommendedNonce={safeTx?.data.nonce} - willExecute={willExecute} - nonceReadonly={nonceReadonly} - onFormSubmit={onAdvancedSubmit} - gasLimitError={gasLimitError} - willRelay={willRelay} - /> + <TxCard> + <TxChecks /> + </TxCard> - {canRelay && ( - <Box - sx={{ - '& > div': { - marginTop: '-1px', - borderTopLeftRadius: 0, - borderTopRightRadius: 0, - }, - }} - > - <ExecutionMethodSelector - executionMethod={executionMethod} - setExecutionMethod={setExecutionMethod} - relays={relays} - /> - </Box> - )} + <TxCard> + <ConfirmationTitle + variant={willExecute ? ConfirmationTitleTypes.execute : ConfirmationTitleTypes.sign} + isCreation={isCreation} + /> - <TxSimulation - gasLimit={advancedParams.gasLimit?.toNumber()} - transactions={tx} - canExecute={canExecute} - disabled={submitDisabled} - /> + {safeTxError && ( + <ErrorMessage error={safeTxError}> + This transaction will most likely fail. To save gas costs, avoid confirming the transaction. + </ErrorMessage> + )} - <RedefineScanResult /> + {canExecute && !props.onlyExecute && <ExecuteCheckbox onChange={setShouldExecute} />} - {/* Warning message and switch button */} - <WrongChainWarning /> + <WrongChainWarning /> - {/* Error messages */} - {isSubmittable && cannotPropose ? ( - <ErrorMessage> - You are currently not an owner of this Safe Account and won't be able to submit this transaction. - </ErrorMessage> - ) : willExecute && isExecutionLoop ? ( - <ErrorMessage> - Cannot execute a transaction from the Safe Account itself, please connect a different account. - </ErrorMessage> - ) : error ? ( - <ErrorMessage error={error}> - This transaction will most likely fail.{' '} - {isNewExecutableTx - ? 'To save gas costs, avoid creating the transaction.' - : 'To save gas costs, reject this transaction.'} - </ErrorMessage> - ) : submitError ? ( - <ErrorMessage error={submitError}>Error submitting the transaction. Please try again.</ErrorMessage> - ) : ( - willExecute && <UnknownContractError /> - )} + <UnknownContractError /> - {/* Info text */} - <Typography variant="body2" color="border.main" textAlign="center" mt={3}> - You're about to {txId ? '' : 'create and '} - {willExecute ? 'execute' : 'sign'} a transaction and will need to confirm it with your currently connected - wallet. - </Typography> + <RiskConfirmationError /> - <SubmitButton isEstimating={isEstimating} submitDisabled={submitDisabled} willExecute={willExecute} /> - </> - </TransactionSecurityProvider> - </DialogContent> - </form> + {willExecute ? <ExecuteForm {...props} safeTx={safeTx} /> : <SignForm {...props} safeTx={safeTx} />} + </TxCard> + </> ) } diff --git a/src/components/tx/SignOrExecuteForm/styles.module.css b/src/components/tx/SignOrExecuteForm/styles.module.css new file mode 100644 index 0000000000..15974e55a6 --- /dev/null +++ b/src/components/tx/SignOrExecuteForm/styles.module.css @@ -0,0 +1,58 @@ +.wrapper { + display: flex; + align-items: center; + gap: var(--space-2); + margin-bottom: var(--space-1); +} + +.icon { + width: 34px; + height: 34px; + border-radius: 6px; + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: center; +} + +.sign { + background-color: var(--color-info-background); +} + +.sign svg { + color: var(--color-info-dark); +} + +.execute { + background-color: var(--color-secondary-background); +} + +.execute svg { + color: var(--color-secondary-dark); +} + +.params { + margin-bottom: var(--space-2); +} + +.noBottomBorderRadius :global(.MuiPaper-root) { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.noTopBorder > div { + margin-top: -1px; + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.mobileTxCheckMessages, +.mobileTxCheckMessages:empty { + display: none; +} + +@media (max-width: 899.95px) { + .mobileTxCheckMessages { + display: block; + } +} diff --git a/src/components/tx/SpendingLimitRow/index.tsx b/src/components/tx/SpendingLimitRow/index.tsx index c0840f346a..6a4a1e9279 100644 --- a/src/components/tx/SpendingLimitRow/index.tsx +++ b/src/components/tx/SpendingLimitRow/index.tsx @@ -1,10 +1,19 @@ -import { FormControl, FormControlLabel, Radio, RadioGroup, Typography } from '@mui/material' +import { FormControl, FormControlLabel, InputLabel, Radio, RadioGroup, SvgIcon, Tooltip } from '@mui/material' import { Controller, useFormContext } from 'react-hook-form' import type { BigNumber } from '@ethersproject/bignumber' +import classNames from 'classnames' import { safeFormatUnits } from '@/utils/formatters' import type { TokenInfo } from '@safe-global/safe-gateway-typescript-sdk' -import { SendAssetsField, SendTxType } from '@/components/tx/modals/TokenTransferModal/SendAssetsForm' +import { TokenTransferFields, TokenTransferType } from '@/components/tx-flow/flows/TokenTransfer' import useIsOnlySpendingLimitBeneficiary from '@/hooks/useIsOnlySpendingLimitBeneficiary' +import InfoIcon from '@/public/images/notifications/info.svg' +import ExternalLink from '@/components/common/ExternalLink' +import { HelpCenterArticle } from '@/config/constants' + +import css from './styles.module.css' +import { TokenAmountFields } from '@/components/common/TokenAmountInput' +import { useContext } from 'react' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' const SpendingLimitRow = ({ availableAmount, @@ -15,49 +24,121 @@ const SpendingLimitRow = ({ }) => { const { control, trigger } = useFormContext() const isOnlySpendLimitBeneficiary = useIsOnlySpendingLimitBeneficiary() + const { setNonceNeeded } = useContext(SafeTxContext) const formattedAmount = safeFormatUnits(availableAmount, selectedToken?.decimals) return ( - <> - <Typography>Send as</Typography> - <FormControl> - <Controller - rules={{ required: true }} - control={control} - name={SendAssetsField.type} - render={({ field: { onChange, ...field } }) => ( - <RadioGroup - onChange={(e) => { - onChange(e) + <FormControl> + <InputLabel shrink required sx={{ backgroundColor: 'background.paper', px: '6px', mx: '-6px' }}> + Send as + </InputLabel> + <Controller + rules={{ required: true }} + control={control} + name={TokenTransferFields.type} + render={({ field: { onChange, ...field } }) => ( + <RadioGroup + row + onChange={(e) => { + onChange(e) + + setNonceNeeded(e.target.value === TokenTransferType.multiSig) - // Validate only after the field is changed - setTimeout(() => { - trigger(SendAssetsField.amount) - }, 10) - }} - {...field} - defaultValue={SendTxType.multiSig} - > - {!isOnlySpendLimitBeneficiary && ( - <FormControlLabel - value={SendTxType.multiSig} - label="Multisig transaction" - control={<Radio />} - componentsProps={{ typography: { variant: 'body2' } }} - /> - )} + // Validate only after the field is changed + setTimeout(() => { + trigger(TokenAmountFields.amount) + }, 10) + }} + {...field} + defaultValue={TokenTransferType.multiSig} + className={css.group} + > + {!isOnlySpendLimitBeneficiary && ( <FormControlLabel - value={SendTxType.spendingLimit} - label={`Spending limit transaction (${formattedAmount} ${selectedToken?.symbol})`} + value={TokenTransferType.multiSig} + label={ + <> + Standard transaction + <Tooltip + title={ + <> + A standard transaction requires the signatures of other owners before the specified funds can + be transferred.  + <ExternalLink + href={HelpCenterArticle.SPENDING_LIMITS} + title="Learn more about spending limits" + > + Learn more about spending limits + </ExternalLink> + . + </> + } + arrow + placement="top" + > + <span> + <SvgIcon + component={InfoIcon} + inheritViewBox + color="border" + fontSize="small" + sx={{ + verticalAlign: 'middle', + ml: 0.5, + }} + /> + </span> + </Tooltip> + </> + } control={<Radio />} componentsProps={{ typography: { variant: 'body2' } }} + className={css.label} /> - </RadioGroup> - )} - /> - </FormControl> - </> + )} + <FormControlLabel + value={TokenTransferType.spendingLimit} + label={ + <> + Spending limit <b>{`(${formattedAmount} ${selectedToken?.symbol})`}</b> + <Tooltip + title={ + <> + A spending limit transaction allows you to transfer the specified funds without the need to + collect the signatures of other owners.  + <ExternalLink href={HelpCenterArticle.SPENDING_LIMITS} title="Learn more about spending limits"> + Learn more about spending limits + </ExternalLink> + . + </> + } + arrow + placement="top" + > + <span> + <SvgIcon + component={InfoIcon} + inheritViewBox + color="border" + fontSize="small" + sx={{ + verticalAlign: 'middle', + ml: 0.5, + }} + /> + </span> + </Tooltip> + </> + } + control={<Radio />} + componentsProps={{ typography: { variant: 'body2' } }} + className={classNames(css.label, { [css.spendingLimit]: !isOnlySpendLimitBeneficiary })} + /> + </RadioGroup> + )} + /> + </FormControl> ) } diff --git a/src/components/tx/SpendingLimitRow/styles.module.css b/src/components/tx/SpendingLimitRow/styles.module.css new file mode 100644 index 0000000000..cd57976d7d --- /dev/null +++ b/src/components/tx/SpendingLimitRow/styles.module.css @@ -0,0 +1,15 @@ +.group { + border: 1px solid var(--color-border-main); + border-radius: 4px; + display: grid; + grid-template-columns: 50% 50%; +} + +.label { + margin: 0; + padding: 12px 3px; +} + +.spendingLimit { + border-left: 1px solid var(--color-border-main); +} diff --git a/src/components/tx/SponsoredBy/index.tsx b/src/components/tx/SponsoredBy/index.tsx index 95aab41f32..6ae946c88e 100644 --- a/src/components/tx/SponsoredBy/index.tsx +++ b/src/components/tx/SponsoredBy/index.tsx @@ -17,8 +17,8 @@ const SponsoredBy = ({ relays, tooltip }: { relays: RelayResponse; tooltip?: str return ( <Box className={css.sponsoredBy}> <SvgIcon component={GasStationIcon} inheritViewBox className={css.icon} /> - <Stack direction="column"> - <Stack direction="row" spacing={0.5} alignItems="center" mb={1}> + <div> + <Stack direction="row" spacing={0.5} alignItems="center"> <Typography variant="body2" fontWeight={700} letterSpacing="0.1px"> Sponsored by </Typography> @@ -40,15 +40,14 @@ const SponsoredBy = ({ relays, tooltip }: { relays: RelayResponse; tooltip?: str </Tooltip> ) : null} </Stack> - <div> - <Typography color="primary.light"> - Transactions per hour:{' '} - <Box component="span" sx={{ fontWeight: '700', color: 'text.primary' }}> - {relays.remaining} of {relays.limit} - </Box> - </Typography> - </div> - </Stack> + + <Typography variant="body2" color="primary.light"> + Transactions per hour:{' '} + <Box component="span" sx={{ fontWeight: '700', color: 'text.primary' }}> + {relays.remaining} of {relays.limit} + </Box> + </Typography> + </div> </Box> ) } diff --git a/src/components/tx/SuccessMessage/index.tsx b/src/components/tx/SuccessMessage/index.tsx index ee11f65e92..9f3ce22916 100644 --- a/src/components/tx/SuccessMessage/index.tsx +++ b/src/components/tx/SuccessMessage/index.tsx @@ -1,20 +1,18 @@ import { type ReactElement, type ReactNode } from 'react' import { Typography, SvgIcon } from '@mui/material' import classNames from 'classnames' -import SuccessIcon from '@/public/images/notifications/success.svg' +import CheckIcon from '@/public/images/common/check.svg' import css from './styles.module.css' const SuccessMessage = ({ children, className }: { children: ReactNode; className?: string }): ReactElement => { return ( <div className={classNames(css.container, className)}> <div className={css.message}> - <SvgIcon component={SuccessIcon} color="success" inheritViewBox fontSize="small" /> + <SvgIcon component={CheckIcon} color="success" inheritViewBox fontSize="small" /> - <div> - <Typography variant="body2" component="span"> - {children} - </Typography> - </div> + <Typography variant="body2" width="100%"> + {children} + </Typography> </div> </div> ) diff --git a/src/components/tx/SuccessMessage/styles.module.css b/src/components/tx/SuccessMessage/styles.module.css index 7ae0ce6c58..418cdcdea6 100644 --- a/src/components/tx/SuccessMessage/styles.module.css +++ b/src/components/tx/SuccessMessage/styles.module.css @@ -1,7 +1,6 @@ .container { background-color: var(--color-success-background); padding: var(--space-2); - margin: var(--space-2) 0; border-radius: 4px; } diff --git a/src/components/tx/TxSimulation/SimulationResult.tsx b/src/components/tx/TxSimulation/SimulationResult.tsx deleted file mode 100644 index f4bd9ec4ff..0000000000 --- a/src/components/tx/TxSimulation/SimulationResult.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import { Alert, AlertTitle, Typography } from '@mui/material' -import type { ReactElement } from 'react' - -import type { TenderlySimulation } from '@/components/tx/TxSimulation/types' -import { FETCH_STATUS } from '@/components/tx/TxSimulation/types' - -import css from './styles.module.css' -import ExternalLink from '@/components/common/ExternalLink' - -type SimulationResultProps = { - simulationRequestStatus: string - simulation?: TenderlySimulation - simulationLink: string - requestError?: string - onClose: () => void -} - -const getCallTraceErrors = (simulation?: TenderlySimulation) => { - if (!simulation) { - return [] - } - - return simulation.transaction.call_trace.filter((call) => call.error) -} - -export const SimulationResult = ({ - simulationRequestStatus, - simulation, - simulationLink, - requestError, - onClose, -}: SimulationResultProps): ReactElement | null => { - const isSimulationFinished = - simulationRequestStatus === FETCH_STATUS.SUCCESS || simulationRequestStatus === FETCH_STATUS.ERROR - - // Loading - if (!isSimulationFinished) { - return null - } - - const isSuccess = simulation?.simulation.status - - // Safe can emit failure event even though Tenderly simulation succeeds - const isCallTraceError = isSuccess && getCallTraceErrors(simulation).length > 0 - - // Error - if (requestError || !isSuccess || isCallTraceError) { - return ( - <Alert severity="error" onClose={onClose} className={css.result}> - <AlertTitle color="error"> - <b>Failed</b> - </AlertTitle> - - {requestError ? ( - <Typography color="error"> - An unexpected error occurred during simulation: <b>{requestError}</b>. - </Typography> - ) : ( - <Typography> - {isCallTraceError ? ( - <>The transaction failed during the simulation.</> - ) : ( - <> - The transaction failed during the simulation throwing error{' '} - <b>{simulation?.transaction.error_message}</b> in the contract at{' '} - <b>{simulation?.transaction.error_info?.address}</b>. - </> - )}{' '} - Full simulation report is available <ExternalLink href={simulationLink}>on Tenderly</ExternalLink>. - </Typography> - )} - </Alert> - ) - } - - // Success - return ( - <Alert severity="success" onClose={onClose} className={css.result}> - <AlertTitle color="success"> - <b>Success</b> - </AlertTitle> - - <Typography> - The transaction was successfully simulated. Full simulation report is available{' '} - <ExternalLink href={simulationLink}>on Tenderly</ExternalLink>. - </Typography> - </Alert> - ) -} diff --git a/src/components/tx/TxSimulation/index.tsx b/src/components/tx/TxSimulation/index.tsx deleted file mode 100644 index de4c78f3cf..0000000000 --- a/src/components/tx/TxSimulation/index.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { AccordionSummary, Accordion, Button, Typography, CircularProgress, Skeleton } from '@mui/material' -import type { ReactElement } from 'react' -import { useEffect } from 'react' - -import Track from '@/components/common/Track' -import { useCurrentChain } from '@/hooks/useChains' -import useSafeInfo from '@/hooks/useSafeInfo' -import useWallet from '@/hooks/wallets/useWallet' -import { MODALS_EVENTS } from '@/services/analytics' -import { SimulationResult } from '@/components/tx/TxSimulation/SimulationResult' -import { FETCH_STATUS } from '@/components/tx/TxSimulation/types' -import { useSimulation } from '@/components/tx/TxSimulation/useSimulation' -import { isTxSimulationEnabled } from '@/components/tx/TxSimulation/utils' -import type { SimulationTxParams } from '@/components/tx/TxSimulation/utils' - -import css from './styles.module.css' -import classNames from 'classnames' - -export type TxSimulationProps = { - transactions?: SimulationTxParams['transactions'] - gasLimit?: number - canExecute: boolean - disabled: boolean -} - -const TxSimulationBlock = ({ transactions, canExecute, disabled, gasLimit }: TxSimulationProps): ReactElement => { - const { safe } = useSafeInfo() - const wallet = useWallet() - - const { simulateTransaction, simulation, simulationRequestStatus, simulationLink, requestError, resetSimulation } = - useSimulation() - - const handleSimulation = async () => { - if (!wallet) { - return - } - - simulateTransaction({ - safe, - executionOwner: wallet.address, - transactions, - canExecute, - gasLimit, - } as SimulationTxParams) - } - - // Reset simulation if gas limit changes - useEffect(() => { - resetSimulation() - }, [gasLimit, resetSimulation]) - - const isSimulationFinished = - simulationRequestStatus === FETCH_STATUS.ERROR || simulationRequestStatus === FETCH_STATUS.SUCCESS - const isSimulationLoading = simulationRequestStatus === FETCH_STATUS.LOADING - - return ( - <Accordion expanded={isSimulationFinished} elevation={0} sx={{ mt: '16px !important' }}> - {!isSimulationFinished ? ( - <AccordionSummary className={css.simulateAccordion}> - <Typography>Transaction validity</Typography> - <Track {...MODALS_EVENTS.SIMULATE_TX}> - <Button - variant="text" - size="small" - disabled={disabled || isSimulationLoading} - color="primary" - onClick={handleSimulation} - > - {isSimulationLoading && <CircularProgress size={14} />} - <span className={classNames(css.loadingText, isSimulationLoading)}> - {isSimulationLoading ? 'Simulating...' : 'Simulate'} - </span> - </Button> - </Track> - </AccordionSummary> - ) : ( - <SimulationResult - onClose={resetSimulation} - simulation={simulation} - simulationRequestStatus={simulationRequestStatus} - simulationLink={simulationLink} - requestError={requestError} - /> - )} - </Accordion> - ) -} - -export const TxSimulation = (props: TxSimulationProps): ReactElement | null => { - const chain = useCurrentChain() - if (!chain || !isTxSimulationEnabled(chain)) { - return null - } - - if (!props.transactions) { - return ( - <div className={css.skeletonWrapper}> - <Skeleton variant="rectangular" height={58} /> - </div> - ) - } - - return <TxSimulationBlock {...props} /> -} diff --git a/src/components/tx/TxSimulation/styles.module.css b/src/components/tx/TxSimulation/styles.module.css deleted file mode 100644 index 6842dfa30f..0000000000 --- a/src/components/tx/TxSimulation/styles.module.css +++ /dev/null @@ -1,18 +0,0 @@ -.simulateAccordion :global .MuiAccordionSummary-content { - justify-content: space-between; - align-items: center; -} - -.loadingText { - margin-left: var(--space-1); -} - -.result { - border: none; -} - -.skeletonWrapper { - border-radius: 8px; - overflow: hidden; - margin-top: var(--space-2); -} diff --git a/src/components/tx/modals/BatchExecuteModal/DecodedTxs.tsx b/src/components/tx/modals/BatchExecuteModal/DecodedTxs.tsx deleted file mode 100644 index 6afab097dc..0000000000 --- a/src/components/tx/modals/BatchExecuteModal/DecodedTxs.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import type { DataDecoded, TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' -import { Box } from '@mui/material' -import useSafeInfo from '@/hooks/useSafeInfo' -import extractTxInfo from '@/services/tx/extractTxInfo' -import { isCustomTxInfo, isNativeTokenTransfer, isTransferTxInfo } from '@/utils/transaction-guards' -import SingleTxDecoded from '@/components/transactions/TxDetails/TxData/DecodedData/SingleTxDecoded' - -const DecodedTxs = ({ txs }: { txs: TransactionDetails[] | undefined }) => { - const { safeAddress } = useSafeInfo() - - if (!txs) return null - - return ( - <Box mt={1} display="flex" flexDirection="column" gap={1}> - {txs.map((transaction, idx) => { - if (!transaction.txData) return null - - const { txParams } = extractTxInfo(transaction, safeAddress) - - let decodedDataParams: DataDecoded = { - method: '', - parameters: undefined, - } - - if (isCustomTxInfo(transaction.txInfo) && transaction.txInfo.isCancellation) { - decodedDataParams.method = 'On-chain rejection' - } - - if (isTransferTxInfo(transaction.txInfo) && isNativeTokenTransfer(transaction.txInfo.transferInfo)) { - decodedDataParams.method = 'transfer' - } - - const dataDecoded = transaction.txData.dataDecoded || decodedDataParams - - return ( - <SingleTxDecoded - key={transaction.txId} - tx={{ - dataDecoded, - data: txParams.data, - value: txParams.value, - to: txParams.to, - operation: 0, - }} - txData={transaction.txData} - actionTitle={`Action ${idx + 1}`} - showDelegateCallWarning={false} - /> - ) - })} - </Box> - ) -} - -export default DecodedTxs diff --git a/src/components/tx/modals/BatchExecuteModal/index.tsx b/src/components/tx/modals/BatchExecuteModal/index.tsx deleted file mode 100644 index 8de5f2bb8e..0000000000 --- a/src/components/tx/modals/BatchExecuteModal/index.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react' - -import type { TxModalProps } from '@/components/tx/TxModal' -import TxModal from '@/components/tx/TxModal' -import type { Transaction } from '@safe-global/safe-gateway-typescript-sdk' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import ReviewBatchExecute from '@/components/tx/modals/BatchExecuteModal/ReviewBatchExecute' - -export type BatchExecuteData = { - txs: Transaction[] -} - -const BatchExecuteSteps: TxStepperProps['steps'] = [ - { - label: 'Execute batch', - render: (data, onSubmit) => <ReviewBatchExecute data={data as BatchExecuteData} onSubmit={onSubmit} />, - }, -] - -const BatchExecuteModal = (props: Omit<TxModalProps, 'steps'>) => { - return <TxModal {...props} steps={BatchExecuteSteps} /> -} - -export default BatchExecuteModal diff --git a/src/components/tx/modals/ConfirmTxModal/index.tsx b/src/components/tx/modals/ConfirmTxModal/index.tsx deleted file mode 100644 index 8559ce850b..0000000000 --- a/src/components/tx/modals/ConfirmTxModal/index.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react' - -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import type { TxModalProps } from '@/components/tx/TxModal' -import TxModal from '@/components/tx/TxModal' -import ConfirmProposedTx from '@/components/tx/modals/ConfirmTxModal/ConfirmProposedTx' -import type { TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' - -export const ConfirmTxSteps: TxStepperProps['steps'] = [ - { - label: 'Confirm transaction', - render: (data, onSubmit) => <ConfirmProposedTx txSummary={data as TransactionSummary} onSubmit={onSubmit} />, - }, -] - -const ConfirmTxModal = (props: Omit<TxModalProps, 'steps'>) => { - return <TxModal {...props} steps={ConfirmTxSteps} /> -} - -export default ConfirmTxModal diff --git a/src/components/tx/modals/ExecuteTxModal/index.tsx b/src/components/tx/modals/ExecuteTxModal/index.tsx deleted file mode 100644 index 7591b99e3b..0000000000 --- a/src/components/tx/modals/ExecuteTxModal/index.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react' - -import type { TxModalProps } from '@/components/tx/TxModal' -import TxModal from '@/components/tx/TxModal' -import type { TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import ConfirmProposedTx from '@/components/tx/modals/ConfirmTxModal/ConfirmProposedTx' - -export const ExecuteTxSteps: TxStepperProps['steps'] = [ - { - label: 'Execute transaction', - render: (data, onSubmit) => <ConfirmProposedTx txSummary={data as TransactionSummary} onSubmit={onSubmit} />, - }, -] - -const ExecuteTxModal = (props: Omit<TxModalProps, 'steps'>) => { - return <TxModal {...props} steps={ExecuteTxSteps} /> -} - -export default ExecuteTxModal diff --git a/src/components/tx/modals/NewTxModal/CreationModal.tsx b/src/components/tx/modals/NewTxModal/CreationModal.tsx deleted file mode 100644 index d9a597c778..0000000000 --- a/src/components/tx/modals/NewTxModal/CreationModal.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { Box, DialogContent } from '@mui/material' -import Link from 'next/link' - -import ModalDialog from '@/components/common/ModalDialog' -import { useTxBuilderApp } from '@/hooks/safe-apps/useTxBuilderApp' -import TxButton, { SendNFTsButton, SendTokensButton } from './TxButton' -import useIsOnlySpendingLimitBeneficiary from '@/hooks/useIsOnlySpendingLimitBeneficiary' - -const CreationModal = ({ - open, - onClose, - onTokenModalOpen, - onNFTModalOpen, - onContractInteraction, - shouldShowTxBuilder, -}: { - open: boolean - onClose: () => void - onTokenModalOpen: () => void - onNFTModalOpen?: () => void - onContractInteraction: () => void - shouldShowTxBuilder: boolean -}) => { - const isOnlySpendingLimitBeneficiary = useIsOnlySpendingLimitBeneficiary() - const txBuilder = useTxBuilderApp() - - return ( - <ModalDialog open={open} dialogTitle="New transaction" onClose={onClose}> - <DialogContent> - <Box display="flex" flexDirection="column" alignItems="center" gap={2} pt={7} pb={4} width={240} m="auto"> - <SendTokensButton onClick={onTokenModalOpen} /> - - {!isOnlySpendingLimitBeneficiary && ( - <> - {onNFTModalOpen && <SendNFTsButton onClick={onNFTModalOpen} />} - - {txBuilder && txBuilder.app && shouldShowTxBuilder && ( - <Link href={txBuilder.link} passHref> - <a style={{ width: '100%' }}> - <TxButton - startIcon={<img src={txBuilder.app.iconUrl} height={20} width="auto" alt={txBuilder.app.name} />} - variant="outlined" - onClick={onContractInteraction} - > - Contract interaction - </TxButton> - </a> - </Link> - )} - </> - )} - </Box> - </DialogContent> - </ModalDialog> - ) -} - -export default CreationModal diff --git a/src/components/tx/modals/NewTxModal/ReplacementModal.tsx b/src/components/tx/modals/NewTxModal/ReplacementModal.tsx deleted file mode 100644 index beb19b0977..0000000000 --- a/src/components/tx/modals/NewTxModal/ReplacementModal.tsx +++ /dev/null @@ -1,164 +0,0 @@ -import { - Button, - DialogContent, - SvgIcon, - Tooltip, - Typography, - Stepper, - Step, - StepLabel, - DialogActions, - Grid, -} from '@mui/material' - -import ModalDialog from '@/components/common/ModalDialog' -import InfoIcon from '@/public/images/notifications/info.svg' -import RocketIcon from '@/public/images/transactions/rocket.svg' -import CheckIcon from '@mui/icons-material/Check' -import DeleteIcon from '@/public/images/common/delete.svg' -import { SendTokensButton } from './TxButton' -import { useQueuedTxByNonce } from '@/hooks/useTxQueue' -import { isCustomTxInfo } from '@/utils/transaction-guards' - -import css from './styles.module.css' - -const wrapIcon = (icon: React.ReactNode) => <div className={css.circle}>{icon}</div> - -const steps = [ - { - label: 'Create new transaction with same nonce', - icon: <div className={css.redCircle} />, - }, - { - label: 'Collect confirmations from owners', - icon: wrapIcon(<CheckIcon fontSize="small" color="border" />), - }, - { - label: 'Execute replacement transaction', - icon: wrapIcon(<SvgIcon component={RocketIcon} inheritViewBox fontSize="small" color="border" />), - }, - { - label: 'Initial transaction is replaced', - icon: wrapIcon(<SvgIcon component={DeleteIcon} inheritViewBox fontSize="small" color="border" />), - }, -] - -const btnWidth = { - width: { - xs: 240, - sm: '100%', - }, -} - -const ReplacementModal = ({ - open, - txNonce, - onClose, - onTokenModalOpen, - onRejectModalOpen, -}: { - open: boolean - txNonce: number - onClose: () => void - onTokenModalOpen: () => void - onRejectModalOpen: () => void -}) => { - const queuedTxsByNonce = useQueuedTxByNonce(txNonce) - const canCancel = !queuedTxsByNonce?.some( - (item) => isCustomTxInfo(item.transaction.txInfo) && item.transaction.txInfo.isCancellation, - ) - - return ( - <ModalDialog open={open} dialogTitle={`Replace transaction with nonce ${txNonce}`} onClose={onClose}> - <DialogContent className={css.container}> - <Typography variant="h5" mb={1} textAlign="center"> - Need to replace or discard this transaction? - </Typography> - <Typography variant="body1" textAlign="center"> - A signed transaction cannot be removed but it can be replaced with a new transaction with the same nonce. - </Typography> - <Stepper alternativeLabel className={css.stepper}> - {steps.map(({ label }) => ( - <Step key={label}> - <StepLabel StepIconComponent={({ icon }) => steps[Number(icon) - 1].icon}> - <Typography variant="body1" fontWeight={700}> - {label} - </Typography> - </StepLabel> - </Step> - ))} - </Stepper> - </DialogContent> - <DialogActions className={css.container}> - <Grid container alignItems="center" justifyContent="center" flexDirection="row"> - <Grid item xs={12}> - <Typography variant="body2" textAlign="center" fontWeight={700} mb={3}> - Select how you would like to replace this transaction - </Typography> - </Grid> - <Grid item container justifyContent="center" alignItems="center" gap={1} xs={12} sm flexDirection="row"> - <SendTokensButton onClick={onTokenModalOpen} sx={btnWidth} /> - </Grid> - <Grid item> - <Typography variant="body2" className={css.or}> - or - </Typography> - </Grid> - <Grid - item - container - xs={12} - sm - justifyContent={{ - xs: 'center', - sm: 'flex-start', - }} - alignItems="center" - textAlign="center" - flexDirection="row" - > - <Tooltip - arrow - placement="top" - title={canCancel ? '' : `Transaction with nonce ${txNonce} already has a reject transaction`} - > - <span style={{ width: '100%' }}> - <Button - onClick={onRejectModalOpen} - variant="outlined" - fullWidth - sx={{ mb: 1, ...btnWidth }} - disabled={!canCancel} - > - Reject transaction - </Button> - </span> - </Tooltip> - - <div> - <Typography variant="caption" display="flex" alignItems="center"> - How does it work?{' '} - <Tooltip - title={`An on-chain rejection doesn't send any funds. Executing an on-chain rejection will replace all currently awaiting transactions with nonce ${txNonce}.`} - arrow - > - <span> - <SvgIcon - component={InfoIcon} - inheritViewBox - fontSize="small" - color="border" - sx={{ verticalAlign: 'middle', ml: 0.5 }} - /> - </span> - </Tooltip> - </Typography> - </div> - </Grid> - </Grid> - </DialogActions> - </ModalDialog> - ) -} - -export default ReplacementModal diff --git a/src/components/tx/modals/NewTxModal/TxButton.tsx b/src/components/tx/modals/NewTxModal/TxButton.tsx deleted file mode 100644 index 32452c4385..0000000000 --- a/src/components/tx/modals/NewTxModal/TxButton.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Button, SvgIcon } from '@mui/material' -import type { ButtonProps } from '@mui/material' - -import AssetsIcon from '@/public/images/sidebar/assets.svg' -import NftIcon from '@/public/images/common/nft.svg' - -const TxButton = ({ sx, ...props }: ButtonProps) => ( - <Button variant="contained" sx={{ '& svg path': { fill: 'currentColor' }, ...sx }} fullWidth {...props} /> -) - -export const SendTokensButton = ({ onClick, ...props }: ButtonProps) => ( - <TxButton onClick={onClick} startIcon={<SvgIcon component={AssetsIcon} inheritViewBox />} {...props}> - Send tokens - </TxButton> -) - -export const SendNFTsButton = ({ onClick, ...props }: ButtonProps) => ( - <TxButton onClick={onClick} startIcon={<SvgIcon component={NftIcon} inheritViewBox />} {...props}> - Send NFTs - </TxButton> -) - -export default TxButton diff --git a/src/components/tx/modals/NewTxModal/index.tsx b/src/components/tx/modals/NewTxModal/index.tsx deleted file mode 100644 index c41c6a2f54..0000000000 --- a/src/components/tx/modals/NewTxModal/index.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { useState } from 'react' -import type { ReactElement } from 'react' -import { useRouter } from 'next/router' - -import TokenTransferModal from '../TokenTransferModal' -import RejectTxModal from '../RejectTxModal' -import { trackEvent, MODALS_EVENTS } from '@/services/analytics' -import { SendAssetsField } from '../TokenTransferModal/SendAssetsForm' -import CreationModal from './CreationModal' -import ReplacementModal from './ReplacementModal' -import { AppRoutes } from '@/config/routes' - -const NewTxModal = ({ - onClose, - recipient = '', - txNonce, -}: { - onClose: () => void - recipient?: string - txNonce?: number -}): ReactElement => { - const router = useRouter() - const [tokenModalOpen, setTokenModalOpen] = useState<boolean>(false) - const [rejectModalOpen, setRejectModalOpen] = useState<boolean>(false) - const isReplacement = txNonce !== undefined - const showNftButton = router.pathname !== AppRoutes.balances.nfts - - // These cannot be Track components as they intefere with styling - const onTokenModalOpen = () => { - trackEvent(MODALS_EVENTS.SEND_FUNDS) - setTokenModalOpen(true) - } - - const onNFTModalOpen = () => { - trackEvent(MODALS_EVENTS.SEND_COLLECTIBLE) - router.push({ - pathname: AppRoutes.balances.nfts, - query: { safe: router.query.safe }, - }) - onClose() - } - - const onRejectModalOpen = () => { - trackEvent(MODALS_EVENTS.REJECT_TX) - setRejectModalOpen(true) - } - - const onContractInteraction = () => { - trackEvent(MODALS_EVENTS.CONTRACT_INTERACTION) - onClose() - } - - const sharedProps = { - open: !tokenModalOpen, - onClose, - onTokenModalOpen, - } - - return ( - <> - {isReplacement ? ( - <ReplacementModal txNonce={txNonce} onRejectModalOpen={onRejectModalOpen} {...sharedProps} /> - ) : ( - <CreationModal - shouldShowTxBuilder={!recipient} - onNFTModalOpen={showNftButton ? onNFTModalOpen : undefined} - onContractInteraction={onContractInteraction} - {...sharedProps} - /> - )} - - {tokenModalOpen && ( - <TokenTransferModal - onClose={onClose} - initialData={[{ [SendAssetsField.recipient]: recipient, disableSpendingLimit: isReplacement }, { txNonce }]} - /> - )} - - {rejectModalOpen && typeof txNonce === 'number' ? ( - <RejectTxModal onClose={onClose} initialData={[txNonce]} /> - ) : null} - </> - ) -} - -export default NewTxModal diff --git a/src/components/tx/modals/NftBatchModal/ReviewNftBatch.tsx b/src/components/tx/modals/NftBatchModal/ReviewNftBatch.tsx deleted file mode 100644 index b9fd391d0a..0000000000 --- a/src/components/tx/modals/NftBatchModal/ReviewNftBatch.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { type ReactElement } from 'react' -import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' -import SendFromBlock from '../../SendFromBlock' -import SignOrExecuteForm from '../../SignOrExecuteForm' -import SendToBlock from '@/components/tx/SendToBlock' -import useAsync from '@/hooks/useAsync' -import { createNftTransferParams } from '@/services/tx/tokenTransferParams' -import { type NftTransferParams } from '.' -import useSafeAddress from '@/hooks/useSafeAddress' -import { createMultiSendCallOnlyTx, createTx } from '@/services/tx/tx-sender' - -type ReviewNftBatchProps = { - params: NftTransferParams - onSubmit: () => void -} - -const ReviewNftBatch = ({ params, onSubmit }: ReviewNftBatchProps): ReactElement => { - const safeAddress = useSafeAddress() - const { tokens } = params - - const [safeTx, safeTxError] = useAsync<SafeTransaction>(() => { - const calls = tokens.map((token) => { - return createNftTransferParams(safeAddress, params.recipient, token.id, token.address) - }) - return calls.length > 1 ? createMultiSendCallOnlyTx(calls) : createTx(calls[0]) - }, [safeAddress, params]) - - return ( - <SignOrExecuteForm safeTx={safeTx} onSubmit={onSubmit} error={safeTxError}> - <SendFromBlock title={`Sending ${tokens.length} NFT${tokens.length > 1 ? 's' : ''} from`} /> - - <SendToBlock address={params.recipient} title="To" /> - </SignOrExecuteForm> - ) -} - -export default ReviewNftBatch diff --git a/src/components/tx/modals/NftBatchModal/SendNftBatch.tsx b/src/components/tx/modals/NftBatchModal/SendNftBatch.tsx deleted file mode 100644 index 0f6dbe4feb..0000000000 --- a/src/components/tx/modals/NftBatchModal/SendNftBatch.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { Box, Button, DialogContent, FormControl, Grid, SvgIcon, Typography } from '@mui/material' -import { FormProvider, useForm } from 'react-hook-form' -import NftIcon from '@/public/images/common/nft.svg' -import AddressBookInput from '@/components/common/AddressBookInput' -import SendFromBlock from '../../SendFromBlock' -import { type NftTransferParams } from '.' -import ImageFallback from '@/components/common/ImageFallback' -import useAddressBook from '@/hooks/useAddressBook' -import SendToBlock from '@/components/tx/SendToBlock' - -enum Field { - recipient = 'recipient', -} - -type FormData = { - [Field.recipient]: string -} - -export type SendNftBatchProps = { - onSubmit: (data: NftTransferParams) => void - params: NftTransferParams -} - -const NftItem = ({ image, name, description }: { image: string; name: string; description?: string }) => ( - <Grid container spacing={1} alignItems="center" wrap="nowrap" mb={2}> - <Grid item> - <Box width={20} height={20}> - <ImageFallback - src={image} - fallbackSrc="" - fallbackComponent={<SvgIcon component={NftIcon} inheritViewBox width={20} height={20} />} - alt={name} - height={20} - /> - </Box> - </Grid> - - <Grid item overflow="hidden"> - <Typography overflow="hidden" textOverflow="ellipsis"> - {name} - </Typography> - - {description && ( - <Typography variant="caption" color="primary.light" display="block" overflow="hidden" textOverflow="ellipsis"> - {description} - </Typography> - )} - </Grid> - </Grid> -) - -const SendNftBatch = ({ params, onSubmit }: SendNftBatchProps) => { - const addressBook = useAddressBook() - const { tokens } = params - - const formMethods = useForm<FormData>({ - defaultValues: { - [Field.recipient]: params.recipient || '', - }, - }) - const { handleSubmit, watch, setValue } = formMethods - - const recipient = watch(Field.recipient) - - const onFormSubmit = (data: FormData) => { - onSubmit({ - recipient: data.recipient, - tokens, - }) - } - - return ( - <FormProvider {...formMethods}> - <form onSubmit={handleSubmit(onFormSubmit)}> - <DialogContent> - <SendFromBlock title={`Sending ${tokens.length} NFT${tokens.length > 1 ? 's' : ''} from`} /> - - <FormControl fullWidth sx={{ mb: 2 }}> - {addressBook[recipient] ? ( - <Box onClick={() => setValue(Field.recipient, '')} mb={-1.5}> - <SendToBlock address={recipient} /> - </Box> - ) : ( - <> - <Typography color="text.secondary" pb={1}> - To - </Typography> - - <AddressBookInput name={Field.recipient} label="Recipient" /> - </> - )} - </FormControl> - - <Typography color="text.secondary" mb={1}> - Selected NFTs - </Typography> - - <Box overflow="auto" maxHeight="20vh" minHeight="54px" pr={1}> - {tokens.map((token) => ( - <NftItem - key={`${token.address}-${token.id}`} - image={token.imageUri || token.logoUri} - name={`${token.tokenName || token.tokenSymbol || ''} #${token.id}`} - description={`Token ID: ${token.id}${token.name ? ` - ${token.name}` : ''}`} - /> - ))} - </Box> - </DialogContent> - - <Button variant="contained" type="submit"> - Next - </Button> - </form> - </FormProvider> - ) -} - -export default SendNftBatch diff --git a/src/components/tx/modals/NftBatchModal/index.tsx b/src/components/tx/modals/NftBatchModal/index.tsx deleted file mode 100644 index 8ec56340b8..0000000000 --- a/src/components/tx/modals/NftBatchModal/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { type ReactElement } from 'react' -import { type SafeCollectibleResponse } from '@safe-global/safe-gateway-typescript-sdk' -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import type { TxModalProps } from '@/components/tx/TxModal' -import TxModal from '@/components/tx/TxModal' -import SendNftBatch from './SendNftBatch' -import ReviewNftBatch from './ReviewNftBatch' - -export type NftTransferParams = { - recipient: string - tokens: SafeCollectibleResponse[] -} - -export const NftTransferSteps: TxStepperProps['steps'] = [ - { - label: 'Send NFTs', - render: (data, onSubmit) => <SendNftBatch onSubmit={onSubmit} params={data as NftTransferParams} />, - }, - { - label: 'Review NFT transaction', - render: (data, onSubmit) => <ReviewNftBatch onSubmit={onSubmit} params={data as NftTransferParams} />, - }, -] - -const NftBatchModal = (props: Omit<TxModalProps, 'steps'>): ReactElement => { - return <TxModal {...props} steps={NftTransferSteps} /> -} - -export default NftBatchModal diff --git a/src/components/tx/modals/RejectTxModal/index.tsx b/src/components/tx/modals/RejectTxModal/index.tsx deleted file mode 100644 index 48b01ba826..0000000000 --- a/src/components/tx/modals/RejectTxModal/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' - -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import type { TxModalProps } from '@/components/tx/TxModal' -import TxModal from '@/components/tx/TxModal' -import RejectTx from '@/components/tx/modals/RejectTxModal/RejectTx' - -export const RejectTxSteps: TxStepperProps['steps'] = [ - { - label: 'Reject transaction', - render: (data, onSubmit) => <RejectTx txNonce={data as number} onSubmit={onSubmit} />, - }, -] - -const RejectTxModal = (props: Omit<TxModalProps, 'steps'>) => { - return <TxModal {...props} steps={RejectTxSteps} /> -} - -export default RejectTxModal diff --git a/src/components/tx/modals/TokenTransferModal/ReviewMultisigTx.tsx b/src/components/tx/modals/TokenTransferModal/ReviewMultisigTx.tsx deleted file mode 100644 index 7549ede416..0000000000 --- a/src/components/tx/modals/TokenTransferModal/ReviewMultisigTx.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { type ReactElement } from 'react' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' - -import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -import { createTokenTransferParams } from '@/services/tx/tokenTransferParams' -import useBalances from '@/hooks/useBalances' -import useAsync from '@/hooks/useAsync' -import SendToBlock from '@/components/tx/SendToBlock' -import SendFromBlock from '../../SendFromBlock' -import type { TokenTransferModalProps } from '.' -import { TokenTransferReview } from '@/components/tx/modals/TokenTransferModal/ReviewTokenTx' -import { createTx } from '@/services/tx/tx-sender' - -const ReviewMultisigTx = ({ params, onSubmit }: TokenTransferModalProps): ReactElement => { - const { balances } = useBalances() - - const token = balances.items.find((item) => item.tokenInfo.address === params.tokenAddress) - const { decimals, address } = token?.tokenInfo || {} - - // Create a safeTx - const [safeTx, safeTxError] = useAsync<SafeTransaction>(() => { - if (!address || typeof decimals === 'undefined') return - const txParams = createTokenTransferParams(params.recipient, params.amount, decimals, address) - return createTx(txParams, params.txNonce) - }, [params, decimals, address]) - - return ( - <SignOrExecuteForm safeTx={safeTx} onSubmit={onSubmit} error={safeTxError}> - {token && <TokenTransferReview amount={params.amount} tokenInfo={token.tokenInfo} />} - - <SendFromBlock /> - - <SendToBlock address={params.recipient} /> - </SignOrExecuteForm> - ) -} - -export default ReviewMultisigTx diff --git a/src/components/tx/modals/TokenTransferModal/ReviewTokenTx.tsx b/src/components/tx/modals/TokenTransferModal/ReviewTokenTx.tsx deleted file mode 100644 index 4da0cd7353..0000000000 --- a/src/components/tx/modals/TokenTransferModal/ReviewTokenTx.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { type ReactNode, type ReactElement } from 'react' -import { Box } from '@mui/material' -import type { TokenInfo } from '@safe-global/safe-gateway-typescript-sdk' - -import css from './styles.module.css' -import type { TokenTransferModalProps } from '.' -import { SendTxType } from '@/components/tx/modals/TokenTransferModal/SendAssetsForm' -import TokenIcon from '@/components/common/TokenIcon' -import ReviewSpendingLimitTx from '@/components/tx/modals/TokenTransferModal/ReviewSpendingLimitTx' -import ReviewMultisigTx from '@/components/tx/modals/TokenTransferModal/ReviewMultisigTx' -import { formatAmountPrecise } from '@/utils/formatNumber' - -export const TokenTransferReview = ({ - amount, - tokenInfo, - children, -}: { - amount: number | string - tokenInfo: TokenInfo - children?: ReactNode -}) => { - return ( - <Box className={css.tokenPreview}> - <Box className={css.tokenIcon}> - <TokenIcon logoUri={tokenInfo.logoUri} tokenSymbol={tokenInfo.symbol} /> - </Box> - - <Box mt={1} fontSize={20}> - {children} - {formatAmountPrecise(amount, tokenInfo.decimals)} {tokenInfo.symbol} - </Box> - </Box> - ) -} - -const ReviewTokenTx = ({ params, onSubmit }: TokenTransferModalProps): ReactElement => { - const isSpendingLimitTx = params.type === SendTxType.spendingLimit - - return isSpendingLimitTx ? ( - <ReviewSpendingLimitTx params={params} onSubmit={onSubmit} /> - ) : ( - <ReviewMultisigTx params={params} onSubmit={onSubmit} /> - ) -} - -export default ReviewTokenTx diff --git a/src/components/tx/modals/TokenTransferModal/SendAssetsForm.tsx b/src/components/tx/modals/TokenTransferModal/SendAssetsForm.tsx deleted file mode 100644 index d7dd4ede00..0000000000 --- a/src/components/tx/modals/TokenTransferModal/SendAssetsForm.tsx +++ /dev/null @@ -1,261 +0,0 @@ -import type { ReactElement } from 'react' -import { useCallback, useMemo } from 'react' -import { useForm, FormProvider, Controller } from 'react-hook-form' -import { - Button, - FormControl, - Grid, - InputLabel, - MenuItem, - Select, - Typography, - DialogContent, - Box, - SvgIcon, -} from '@mui/material' -import { type TokenInfo } from '@safe-global/safe-gateway-typescript-sdk' -import { BigNumber } from '@ethersproject/bignumber' - -import TokenIcon from '@/components/common/TokenIcon' -import { formatVisualAmount, safeFormatUnits } from '@/utils/formatters' -import { validateDecimalLength, validateLimitedAmount } from '@/utils/validation' -import AddressBookInput from '@/components/common/AddressBookInput' -import InputValueHelper from '@/components/common/InputValueHelper' -import SendFromBlock from '../../SendFromBlock' -import SpendingLimitRow from '@/components/tx/SpendingLimitRow' -import useSpendingLimit from '@/hooks/useSpendingLimit' -import SendToBlock from '@/components/tx/SendToBlock' -import useAddressBook from '@/hooks/useAddressBook' -import { getSafeTokenAddress } from '@/components/common/SafeTokenWidget' -import useChainId from '@/hooks/useChainId' -import { sameAddress } from '@/utils/addresses' -import InfoIcon from '@/public/images/notifications/info.svg' -import useIsSafeTokenPaused from '@/components/tx/modals/TokenTransferModal/useIsSafeTokenPaused' -import NumberField from '@/components/common/NumberField' -import { useVisibleBalances } from '@/hooks/useVisibleBalances' -import useIsOnlySpendingLimitBeneficiary from '@/hooks/useIsOnlySpendingLimitBeneficiary' -import { useAppSelector } from '@/store' -import { selectSpendingLimits } from '@/store/spendingLimitsSlice' -import useWallet from '@/hooks/wallets/useWallet' - -export const AutocompleteItem = (item: { tokenInfo: TokenInfo; balance: string }): ReactElement => ( - <Grid container alignItems="center" gap={1}> - <TokenIcon logoUri={item.tokenInfo.logoUri} tokenSymbol={item.tokenInfo.symbol} /> - - <Grid item xs> - <Typography variant="body2">{item.tokenInfo.name}</Typography> - - <Typography variant="caption" component="p"> - {formatVisualAmount(item.balance, item.tokenInfo.decimals)} {item.tokenInfo.symbol} - </Typography> - </Grid> - </Grid> -) - -export enum SendTxType { - multiSig = 'multiSig', - spendingLimit = 'spendingLimit', -} - -export enum SendAssetsField { - recipient = 'recipient', - tokenAddress = 'tokenAddress', - amount = 'amount', - type = 'type', -} - -export type SendAssetsFormData = { - [SendAssetsField.recipient]: string - [SendAssetsField.tokenAddress]: string - [SendAssetsField.amount]: string - [SendAssetsField.type]: SendTxType -} - -type SendAssetsFormProps = { - formData?: SendAssetsFormData - disableSpendingLimit?: boolean - onSubmit: (formData: SendAssetsFormData) => void -} - -const SendAssetsForm = ({ - onSubmit, - formData, - // Spending limits only disabled upon replacement, which pure spending limit beneficiaries can't do - disableSpendingLimit = false, -}: SendAssetsFormProps): ReactElement => { - const { balances } = useVisibleBalances() - const addressBook = useAddressBook() - const chainId = useChainId() - const safeTokenAddress = getSafeTokenAddress(chainId) - const isSafeTokenPaused = useIsSafeTokenPaused() - const isOnlySpendingLimitBeneficiary = useIsOnlySpendingLimitBeneficiary() - const spendingLimits = useAppSelector(selectSpendingLimits) - const wallet = useWallet() - - const formMethods = useForm<SendAssetsFormData>({ - defaultValues: { - [SendAssetsField.recipient]: formData?.[SendAssetsField.recipient] || '', - [SendAssetsField.tokenAddress]: formData?.[SendAssetsField.tokenAddress] || '', - [SendAssetsField.amount]: formData?.[SendAssetsField.amount] || '', - [SendAssetsField.type]: disableSpendingLimit - ? SendTxType.multiSig - : isOnlySpendingLimitBeneficiary - ? SendTxType.spendingLimit - : formData?.[SendAssetsField.type] || SendTxType.multiSig, - }, - mode: 'onChange', - delayError: 500, - }) - const { - register, - handleSubmit, - setValue, - resetField, - watch, - formState: { errors }, - control, - } = formMethods - - const recipient = watch(SendAssetsField.recipient) - - // Selected token - const tokenAddress = watch(SendAssetsField.tokenAddress) - const selectedToken = tokenAddress - ? balances.items.find((item) => item.tokenInfo.address === tokenAddress) - : undefined - - const type = watch(SendAssetsField.type) - const spendingLimit = useSpendingLimit(selectedToken?.tokenInfo) - const isSpendingLimitType = type === SendTxType.spendingLimit - const spendingLimitAmount = spendingLimit ? BigNumber.from(spendingLimit.amount).sub(spendingLimit.spent) : undefined - const totalAmount = BigNumber.from(selectedToken?.balance || 0) - const maxAmount = isSpendingLimitType - ? spendingLimitAmount && totalAmount.gt(spendingLimitAmount) - ? spendingLimitAmount - : totalAmount - : totalAmount - - const balancesItems = useMemo(() => { - return isOnlySpendingLimitBeneficiary - ? balances.items.filter(({ tokenInfo }) => { - return spendingLimits?.some(({ beneficiary, token }) => { - return sameAddress(beneficiary, wallet?.address || '') && sameAddress(tokenInfo.address, token.address) - }) - }) - : balances.items - }, [balances.items, isOnlySpendingLimitBeneficiary, spendingLimits, wallet?.address]) - - const onMaxAmountClick = useCallback(() => { - if (!selectedToken) return - - const amount = - isSpendingLimitType && spendingLimitAmount && spendingLimitAmount.lte(selectedToken.balance) - ? spendingLimitAmount.toString() - : selectedToken.balance - - setValue(SendAssetsField.amount, safeFormatUnits(amount, selectedToken.tokenInfo.decimals), { - shouldValidate: true, - }) - }, [isSpendingLimitType, selectedToken, setValue, spendingLimitAmount]) - - const isSafeTokenSelected = sameAddress(safeTokenAddress, tokenAddress) - const isDisabled = isSafeTokenSelected && isSafeTokenPaused - - return ( - <FormProvider {...formMethods}> - <form onSubmit={handleSubmit(onSubmit)}> - <DialogContent> - <SendFromBlock /> - - <FormControl fullWidth sx={{ mb: 2, mt: 1 }}> - {addressBook[recipient] ? ( - <Box onClick={() => setValue(SendAssetsField.recipient, '')}> - <SendToBlock address={recipient} /> - </Box> - ) : ( - <AddressBookInput name={SendAssetsField.recipient} label="Recipient" /> - )} - </FormControl> - - <Controller - name={SendAssetsField.tokenAddress} - control={control} - rules={{ required: true }} - render={({ fieldState, field }) => ( - <FormControl fullWidth> - <InputLabel id="asset-label" required> - Select an asset - </InputLabel> - <Select - labelId="asset-label" - label={fieldState.error?.message || 'Select an asset'} - error={!!fieldState.error} - {...field} - onChange={(e) => { - field.onChange(e) - resetField(SendAssetsField.amount) - }} - > - {balancesItems.map((item) => ( - <MenuItem key={item.tokenInfo.address} value={item.tokenInfo.address}> - <AutocompleteItem {...item} /> - </MenuItem> - ))} - </Select> - </FormControl> - )} - /> - - {isDisabled && ( - <Box mt={1} display="flex" alignItems="center"> - <SvgIcon component={InfoIcon} color="error" fontSize="small" /> - <Typography variant="body2" color="error" ml={0.5}> - $SAFE is currently non-transferable. - </Typography> - </Box> - )} - - {!disableSpendingLimit && !!spendingLimitAmount && ( - <FormControl fullWidth sx={{ mt: 2 }}> - <SpendingLimitRow availableAmount={spendingLimitAmount} selectedToken={selectedToken?.tokenInfo} /> - </FormControl> - )} - - <FormControl fullWidth sx={{ mt: 2 }}> - <NumberField - label={errors.amount?.message || 'Amount'} - error={!!errors.amount} - InputProps={{ - endAdornment: ( - <InputValueHelper onClick={onMaxAmountClick} disabled={!selectedToken}> - Max - </InputValueHelper> - ), - }} - // @see https://github.com/react-hook-form/react-hook-form/issues/220 - InputLabelProps={{ - shrink: !!watch(SendAssetsField.amount), - }} - required - {...register(SendAssetsField.amount, { - required: true, - validate: (val) => { - const decimals = selectedToken?.tokenInfo.decimals - return ( - validateLimitedAmount(val, decimals, maxAmount.toString()) || validateDecimalLength(val, decimals) - ) - }, - })} - /> - </FormControl> - </DialogContent> - - <Button variant="contained" type="submit" disabled={isDisabled}> - Next - </Button> - </form> - </FormProvider> - ) -} - -export default SendAssetsForm diff --git a/src/components/tx/modals/TokenTransferModal/index.tsx b/src/components/tx/modals/TokenTransferModal/index.tsx deleted file mode 100644 index b5feadcb5f..0000000000 --- a/src/components/tx/modals/TokenTransferModal/index.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react' - -import type { TxStepperProps } from '@/components/tx/TxStepper/useTxStepper' -import type { SendAssetsFormData } from '@/components/tx/modals/TokenTransferModal/SendAssetsForm' -import SendAssetsForm from '@/components/tx/modals/TokenTransferModal/SendAssetsForm' -import ReviewTokenTx from '@/components/tx/modals/TokenTransferModal/ReviewTokenTx' -import type { TxModalProps } from '@/components/tx/TxModal' -import TxModal from '@/components/tx/TxModal' - -export type TokenTransferModalProps = { - params: SendAssetsFormData & { txNonce?: number; disableSpendingLimit?: boolean } - onSubmit: () => void -} - -export const TokenTransferSteps: TxStepperProps['steps'] = [ - { - label: 'Send tokens', - render: (data, onSubmit) => { - const { disableSpendingLimit, ...formData } = data as SendAssetsFormData & { disableSpendingLimit?: boolean } - return <SendAssetsForm onSubmit={onSubmit} formData={formData} disableSpendingLimit={disableSpendingLimit} /> - }, - }, - { - label: 'Review transaction', - render: (data, onSubmit) => ( - <ReviewTokenTx - onSubmit={onSubmit} - params={data as Omit<TokenTransferModalProps['params'], 'disableSpendingLimit'>} - /> - ), - }, -] - -const TokenTransferModal = (props: Omit<TxModalProps, 'steps'>) => { - return <TxModal {...props} steps={TokenTransferSteps} /> -} - -export default TokenTransferModal diff --git a/src/components/tx/modals/TokenTransferModal/styles.module.css b/src/components/tx/modals/TokenTransferModal/styles.module.css deleted file mode 100644 index dc1718b7b6..0000000000 --- a/src/components/tx/modals/TokenTransferModal/styles.module.css +++ /dev/null @@ -1,16 +0,0 @@ -.container { - display: flex; - flex-direction: column; - flex-wrap: wrap; - gap: var(--space-3); - padding: var(--space-3); -} - -.tokenPreview { - text-align: center; -} - -.tokenIcon { - display: flex; - justify-content: center; -} diff --git a/src/components/tx/security/redefine/RedefineBalanceChange/index.tsx b/src/components/tx/security/redefine/RedefineBalanceChange.tsx similarity index 66% rename from src/components/tx/security/redefine/RedefineBalanceChange/index.tsx rename to src/components/tx/security/redefine/RedefineBalanceChange.tsx index 4cea2fd0c5..538d8d5c6b 100644 --- a/src/components/tx/security/redefine/RedefineBalanceChange/index.tsx +++ b/src/components/tx/security/redefine/RedefineBalanceChange.tsx @@ -7,19 +7,18 @@ import { type RedefineModuleResponse } from '@/services/security/modules/Redefin import { sameAddress } from '@/utils/addresses' import { FEATURES } from '@/utils/chains' import { formatVisualAmount } from '@/utils/formatters' -import { Box, Chip, Grid, SvgIcon, Typography } from '@mui/material' +import { Box, Chip, CircularProgress, Grid, SvgIcon, Tooltip, Typography } from '@mui/material' import { TokenType } from '@safe-global/safe-gateway-typescript-sdk' import { ErrorBoundary } from '@sentry/react' import { useContext } from 'react' -import { LoadingLabel } from '../../shared/LoadingLabel' -import { TransactionSecurityContext } from '../../TransactionSecurityContext' -import RedefineLogo from '@/public/images/transactions/redefine.svg' -import RedefineLogoDark from '@/public/images/transactions/redefine-dark-mode.svg' +import { TxSecurityContext } from '../shared/TxSecurityContext' import ArrowOutwardIcon from '@/public/images/transactions/outgoing.svg' import ArrowDownwardIcon from '@/public/images/transactions/incoming.svg' +import InfoIcon from '@/public/images/notifications/info.svg' +import ExternalLink from '@/components/common/ExternalLink' +import { REDEFINE_ARTICLE } from '@/config/constants' import css from './styles.module.css' -import { useDarkMode } from '@/hooks/useDarkMode' const FungibleBalanceChange = ({ change, @@ -43,6 +42,7 @@ const FungibleBalanceChange = ({ <Typography variant="body2" fontWeight={700} display="inline" ml={0.5}> {change.symbol} </Typography> + <span style={{ margin: 'auto' }} /> <Chip className={css.categoryChip} label={change.type} /> </> ) @@ -77,6 +77,7 @@ const NFTBalanceChange = ({ <Typography variant="subtitle2" className={css.nftId} ml={1}> #{change.tokenId} </Typography> + <span style={{ margin: 'auto' }} /> <Chip className={css.categoryChip} label="NFT" /> </> ) @@ -100,17 +101,29 @@ const BalanceChange = ({ } const BalanceChanges = () => { - const { balanceChange, isLoading } = useContext(TransactionSecurityContext) - const totalBalanceChanges = balanceChange ? balanceChange.in.length + balanceChange.out.length : 0 + const { balanceChange, isLoading } = useContext(TxSecurityContext) + const totalBalanceChanges = balanceChange ? balanceChange.in.length + balanceChange.out.length : undefined if (isLoading && !balanceChange) { - return <LoadingLabel /> + return ( + <div className={css.loader}> + <CircularProgress + size={22} + sx={{ + color: ({ palette }) => palette.text.secondary, + }} + /> + <Typography variant="body2" color="text.secondary"> + Calculating... + </Typography> + </div> + ) } - if (totalBalanceChanges === 0) { + if (totalBalanceChanges && totalBalanceChanges === 0) { return ( - <Typography color="text.secondary" p={2}> - None + <Typography variant="body2" color="text.secondary" justifySelf="flex-end"> + No balance change detected </Typography> ) } @@ -131,27 +144,46 @@ const BalanceChanges = () => { export const RedefineBalanceChanges = () => { const isFeatureEnabled = useHasFeature(FEATURES.RISK_MITIGATION) - const isDarkMode = useDarkMode() if (!isFeatureEnabled) { return null } return ( - <Box className={css.box}> - <Box className={css.head}> - <Typography variant="subtitle2" fontWeight={700}> - Balance change - </Typography> - <SvgIcon - inheritViewBox - sx={{ height: '40px', width: '52px' }} - component={isDarkMode ? RedefineLogoDark : RedefineLogo} - /> - </Box> + <div className={css.box}> + <Typography variant="subtitle2" fontWeight={700} flexShrink={0}> + Balance change + <Tooltip + title={ + <> + The balance change gives an overview of the implications of a transaction. You can see which assets will + be sent and received after the transaction is executed.  + <ExternalLink href={REDEFINE_ARTICLE} title="Learn more about balance change"> + Learn more about balance change + </ExternalLink> + . + </> + } + arrow + placement="top" + > + <span> + <SvgIcon + component={InfoIcon} + inheritViewBox + color="border" + fontSize="small" + sx={{ + verticalAlign: 'middle', + ml: 0.5, + }} + /> + </span> + </Tooltip> + </Typography> <ErrorBoundary fallback={<div>Error showing balance changes</div>}> <BalanceChanges /> </ErrorBoundary> - </Box> + </div> ) } diff --git a/src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css b/src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css deleted file mode 100644 index e94196cc52..0000000000 --- a/src/components/tx/security/redefine/RedefineBalanceChange/styles.module.css +++ /dev/null @@ -1,52 +0,0 @@ -.balanceChanges { - padding: var(--space-2); - max-height: 300px; - overflow-y: auto; - align-items: center; - gap: 1px; -} - -.balanceChange { - display: flex; - border-radius: 6px; - align-items: center; - margin-bottom: 6px; -} - -.balanceChange:last-child { - margin-bottom: 0; -} - -.balanceChange svg { - flex-shrink: 0; -} - -.nftId { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.categoryChip { - border-radius: 4px; - margin-left: auto; - height: auto; -} - -.head { - border-bottom: 1px solid var(--color-border-light); - padding: var(--space-1) var(--space-2); - - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; -} - -.box { - border-radius: 6px; - border: 1px solid var(--color-border-light); - margin: var(--space-2) 0; - display: flex; - flex-direction: column; -} diff --git a/src/components/tx/security/redefine/RedefineHint.tsx b/src/components/tx/security/redefine/RedefineHint.tsx new file mode 100644 index 0000000000..8030ec9ec4 --- /dev/null +++ b/src/components/tx/security/redefine/RedefineHint.tsx @@ -0,0 +1,52 @@ +import { SecuritySeverity } from '@/services/security/modules/types' +import { Alert, Box, List, ListItem, SvgIcon, Typography } from '@mui/material' +import css from 'src/components/tx/security/redefine/styles.module.css' +import AlertIcon from '@/public/images/notifications/alert.svg' +import { mapRedefineSeverity } from '@/components/tx/security/redefine/useRedefine' + +export const RedefineHint = ({ severity, warnings }: { severity: SecuritySeverity; warnings: string[] }) => { + const severityProps = mapRedefineSeverity[severity] + const pluralizedLabel = ( + <> + {warnings.length} {severityProps.label} + {warnings.length > 1 ? 's' : ''} + </> + ) + + return ( + <> + <Alert + className={css.hint} + severity={severityProps.color} + sx={{ bgcolor: ({ palette }) => palette[severityProps.color].background }} + icon={ + <SvgIcon + component={AlertIcon} + inheritViewBox + color={severityProps.color} + sx={{ + '& path': { + fill: ({ palette }) => palette[severityProps.color].main, + }, + }} + /> + } + > + {severity !== SecuritySeverity.NONE && ( + <Typography variant="body2" fontWeight={700}> + {pluralizedLabel} + </Typography> + )} + <Box display="flex" flexDirection="column" gap={2}> + <List sx={{ listStyle: 'disc', pl: 2, '& li:last-child': { m: 0 } }}> + {warnings.map((warning) => ( + <ListItem key={warning} disablePadding sx={{ display: 'list-item', mb: 1 }}> + <Typography variant="body2">{warning}</Typography> + </ListItem> + ))} + </List> + </Box> + </Alert> + </> + ) +} diff --git a/src/components/tx/security/redefine/RedefineScanResult/RedefineScanResult.tsx b/src/components/tx/security/redefine/RedefineScanResult/RedefineScanResult.tsx deleted file mode 100644 index a800657b45..0000000000 --- a/src/components/tx/security/redefine/RedefineScanResult/RedefineScanResult.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { useContext } from 'react' -import { SecurityHint, SecurityWarning } from '../../shared/SecurityWarnings' -import { TransactionSecurityContext } from '../../TransactionSecurityContext' -import { SecuritySeverity } from '@/services/security/modules/types' -import { groupBy } from 'lodash' -import { Box, Typography } from '@mui/material' -import ExternalLink from '@/components/common/ExternalLink' -import { FEATURES } from '@/utils/chains' -import { useHasFeature } from '@/hooks/useChains' -import { ErrorBoundary } from '@sentry/react' -import { REDEFINE_SIMULATION_URL } from '@/config/constants' - -const MAX_SHOWN_WARNINGS = 3 - -const ScanWarnings = () => { - /* Hooks */ - const { - warnings, - severity, - isLoading, - error, - simulationUuid, - needsRiskConfirmation, - isRiskConfirmed, - setIsRiskConfirmed, - } = useContext(TransactionSecurityContext) - - /* Evaluate security warnings */ - const relevantWarnings = warnings.filter((warning) => warning.severity !== SecuritySeverity.NONE) - const shownWarnings = relevantWarnings.slice(0, MAX_SHOWN_WARNINGS) - const hiddenWarningCount = warnings.length - shownWarnings.length - const hiddenMaxSeverity = hiddenWarningCount > 0 ? relevantWarnings[MAX_SHOWN_WARNINGS]?.severity : 0 - - const groupedShownWarnings = groupBy(shownWarnings, (warning) => warning.severity) - const sortedSeverities = Object.keys(groupedShownWarnings).sort((a, b) => (Number(a) < Number(b) ? 1 : -1)) - - return ( - <SecurityWarning - severity={severity} - isLoading={isLoading} - error={error} - isConfirmed={isRiskConfirmed} - needsConfirmation={needsRiskConfirmation} - setIsConfirmed={setIsRiskConfirmed} - > - <Box display="flex" flexDirection="column" gap={1}> - {sortedSeverities.map((key) => ( - <SecurityHint - key={key} - severity={Number(key)} - warnings={groupedShownWarnings[key].map((warning) => warning.description.short)} - /> - ))} - {hiddenWarningCount > 0 && ( - <SecurityHint - severity={hiddenMaxSeverity} - warnings={[`${hiddenWarningCount} more issue${hiddenWarningCount > 1 ? 's' : ''}`]} - /> - )} - - {simulationUuid && ( - <Typography> - For a comprehensive risk overview,{' '} - <ExternalLink href={`${REDEFINE_SIMULATION_URL}${simulationUuid}`}> - see the full report on Redefine - </ExternalLink> - </Typography> - )} - </Box> - </SecurityWarning> - ) -} - -export const RedefineScanResult = () => { - const isFeatureEnabled = useHasFeature(FEATURES.RISK_MITIGATION) - - if (!isFeatureEnabled) { - return null - } - - return ( - <ErrorBoundary fallback={<div>Error showing scan result</div>}> - <ScanWarnings /> - </ErrorBoundary> - ) -} diff --git a/src/components/tx/security/redefine/index.tsx b/src/components/tx/security/redefine/index.tsx new file mode 100644 index 0000000000..f02ffcd23e --- /dev/null +++ b/src/components/tx/security/redefine/index.tsx @@ -0,0 +1,195 @@ +import { useContext, useEffect, useRef } from 'react' +import { mapRedefineSeverity } from '@/components/tx/security/redefine/useRedefine' +import { TxSecurityContext } from '@/components/tx/security/shared/TxSecurityContext' +import { SecuritySeverity } from '@/services/security/modules/types' +import { groupBy } from 'lodash' +import { Alert, Box, Checkbox, FormControlLabel, Paper, SvgIcon, Tooltip, Typography } from '@mui/material' +import ExternalLink from '@/components/common/ExternalLink' +import { FEATURES } from '@/utils/chains' +import { useHasFeature } from '@/hooks/useChains' +import { ErrorBoundary } from '@sentry/react' +import { REDEFINE_ARTICLE, REDEFINE_SIMULATION_URL } from '@/config/constants' +import css from 'src/components/tx/security/redefine/styles.module.css' +import sharedCss from '@/components/tx/security/shared/styles.module.css' +import RedefineLogoDark from '@/public/images/transactions/redefine-dark-mode.svg' +import RedefineLogo from '@/public/images/transactions/redefine.svg' +import Track from '@/components/common/Track' +import { MODALS_EVENTS } from '@/services/analytics' +import { useDarkMode } from '@/hooks/useDarkMode' +import CircularProgress from '@mui/material/CircularProgress' +import { RedefineHint } from '@/components/tx/security/redefine/RedefineHint' +import InfoIcon from '@/public/images/notifications/info.svg' + +const MAX_SHOWN_WARNINGS = 3 + +const RedefineBlock = () => { + const { severity, isLoading, error, needsRiskConfirmation, isRiskConfirmed, setIsRiskConfirmed, isRiskIgnored } = + useContext(TxSecurityContext) + const checkboxRef = useRef<HTMLElement>(null) + + const isDarkMode = useDarkMode() + const severityProps = severity !== undefined ? mapRedefineSeverity[severity] : undefined + + const toggleConfirmation = () => { + setIsRiskConfirmed((prev) => !prev) + } + + // Highlight checkbox if user tries to submit transaction without confirming risks + useEffect(() => { + if (isRiskIgnored) { + checkboxRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center' }) + } + }, [isRiskIgnored, checkboxRef]) + + return ( + <div className={css.wrapperBox}> + <Paper + variant="outlined" + className={sharedCss.wrapper} + sx={needsRiskConfirmation ? { borderTop: 'none', borderLeft: 'none', borderRight: 'none' } : { border: 'none' }} + > + <div> + <Typography variant="body2" fontWeight={700}> + Scan for risks + <Tooltip + title={ + <> + This transaction has been automatically scanned for risks to help prevent scams.  + <ExternalLink href={REDEFINE_ARTICLE} title="Learn more about security scans"> + Learn more about security scans + </ExternalLink> + . + </> + } + arrow + placement="top" + > + <span> + <SvgIcon + component={InfoIcon} + inheritViewBox + color="border" + fontSize="small" + sx={{ + verticalAlign: 'middle', + ml: 0.5, + }} + /> + </span> + </Tooltip> + </Typography> + + <Typography variant="caption" className={sharedCss.poweredBy} position="relative"> + Powered by{' '} + <SvgIcon + inheritViewBox + sx={{ height: '40px', width: '52px', position: 'absolute', right: '-58px' }} + component={isDarkMode ? RedefineLogoDark : RedefineLogo} + /> + </Typography> + </div> + + <div className={sharedCss.result}> + {isLoading ? ( + <CircularProgress + size={22} + sx={{ + color: ({ palette }) => palette.text.secondary, + }} + /> + ) : severityProps ? ( + <Typography variant="body2" color={`${severityProps.color}.main`} className={sharedCss.result}> + <SvgIcon + component={severityProps.icon} + inheritViewBox + fontSize="small" + sx={{ verticalAlign: 'middle', mr: 1 }} + /> + {severityProps.label} + </Typography> + ) : error ? ( + <Typography variant="body2" color="error" className={sharedCss.result}> + {error.message} + </Typography> + ) : null} + </div> + </Paper> + <div> + {needsRiskConfirmation && ( + <Box pl={2} ref={checkboxRef}> + <Track {...MODALS_EVENTS.ACCEPT_RISK}> + <FormControlLabel + label="I understand the risks and would like to continue this transaction" + control={<Checkbox checked={isRiskConfirmed} onChange={toggleConfirmation} />} + className={isRiskIgnored ? css.checkboxError : ''} + /> + </Track> + </Box> + )} + </div> + </div> + ) +} + +export const Redefine = () => { + const isFeatureEnabled = useHasFeature(FEATURES.RISK_MITIGATION) + + if (!isFeatureEnabled) { + return null + } + + return ( + <ErrorBoundary fallback={<div>Error showing scan result</div>}> + <RedefineBlock /> + </ErrorBoundary> + ) +} + +export const RedefineMessage = () => { + const { severity, warnings, simulationUuid } = useContext(TxSecurityContext) + + /* Evaluate security warnings */ + const relevantWarnings = warnings.filter((warning) => warning.severity !== SecuritySeverity.NONE) + const shownWarnings = relevantWarnings.slice(0, MAX_SHOWN_WARNINGS) + const hiddenWarningCount = warnings.length - shownWarnings.length + const hiddenMaxSeverity = + hiddenWarningCount > 0 ? relevantWarnings[MAX_SHOWN_WARNINGS]?.severity : SecuritySeverity.NONE + + const groupedShownWarnings = groupBy(shownWarnings, (warning) => warning.severity) + const sortedSeverities = Object.keys(groupedShownWarnings).sort((a, b) => (Number(a) < Number(b) ? 1 : -1)) + + if (sortedSeverities.length === 0 && hiddenWarningCount === 0 && !simulationUuid) return null + + return ( + <Box display="flex" flexDirection="column" gap={1}> + {sortedSeverities.map((key) => ( + <RedefineHint + key={key} + severity={Number(key)} + warnings={groupedShownWarnings[key].map((warning) => warning.description.short)} + /> + ))} + + {hiddenWarningCount > 0 && ( + <RedefineHint + severity={hiddenMaxSeverity} + warnings={[`${hiddenWarningCount} more issue${hiddenWarningCount > 1 ? 's' : ''}`]} + /> + )} + + {simulationUuid && ( + <Alert severity="info" sx={{ border: 'unset' }}> + {severity === SecuritySeverity.NONE && ( + <Typography variant="body2" fontWeight={700}> + {mapRedefineSeverity[severity].label} + </Typography> + )} + For a comprehensive risk overview,{' '} + <ExternalLink href={`${REDEFINE_SIMULATION_URL}${simulationUuid}`}> + see the full report on Redefine + </ExternalLink> + </Alert> + )} + </Box> + ) +} diff --git a/src/components/tx/security/redefine/styles.module.css b/src/components/tx/security/redefine/styles.module.css new file mode 100644 index 0000000000..552ed28b5e --- /dev/null +++ b/src/components/tx/security/redefine/styles.module.css @@ -0,0 +1,93 @@ +.hint { + padding: var(--space-2); + border: unset; +} + +.hint :global .MuiAlert-icon { + padding: 0; +} + +.hint :global .MuiAlert-message { + padding: 0; +} + +.wrapperBox :global .MuiAccordion-root.Mui-expanded { + border-color: var(--color-border-light) !important; +} + +.wrapperBox { + border-radius: 6px; + border: 1px solid var(--color-border-light); + padding: 0; + background-color: var(--color-background-main); + line-height: 1; +} + +.loader { + display: flex; + align-items: center; + gap: var(--space-1); + padding-right: 12px; + justify-self: flex-end; +} + +.balanceChanges { + max-height: 300px; + overflow-y: auto; + align-items: center; + gap: var(--space-1); +} + +.balanceChange { + display: flex; + margin-bottom: 6px; + align-items: center; +} + +.balanceChange:last-child { + margin-bottom: 0; +} + +.balanceChange svg { + flex-shrink: 0; +} + +.nftId { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.categoryChip { + border-radius: 4px; + height: auto; +} + +.box { + border-radius: 6px; + border: 1px solid var(--color-border-light); + display: grid; + grid-template-columns: 35% auto; + padding: var(--space-2) 12px; +} + +@keyframes popup { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.05); + } + 100% { + transform: scale(1); + } +} + +.checkboxError { + color: var(--color-error-main); + animation: popup 0.5s ease-in-out; +} + +.checkboxError svg { + color: var(--color-error-main) !important; +} diff --git a/src/components/tx/security/redefine/useRedefine.ts b/src/components/tx/security/redefine/useRedefine.ts index d2b1f5ab2a..96a7621a7e 100644 --- a/src/components/tx/security/redefine/useRedefine.ts +++ b/src/components/tx/security/redefine/useRedefine.ts @@ -12,6 +12,11 @@ import type { SecurityResponse } from '@/services/security/modules/types' import { FEATURES } from '@/utils/chains' import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' import { useState, useEffect, useMemo } from 'react' +import { type AlertColor, type SvgIconProps } from '@mui/material' +import { SecuritySeverity } from '@/services/security/modules/types' +import CloseIcon from '@/public/images/common/close.svg' +import InfoIcon from '@/public/images/notifications/info.svg' +import CheckIcon from '@/public/images/common/check.svg' export const REDEFINE_RETRY_TIMEOUT = 2_000 const RedefineModuleInstance = new RedefineModule() @@ -24,6 +29,49 @@ const CRITICAL_ERRORS: Record<number, string> = { [3000]: DEFAULT_ERROR_MESSAGE, } +type SecurityWarningProps = { + color: AlertColor + // @ts-expect-error - Use any to avoid conflicts with @svgr/webpack plugin or babel-plugin-inline-react-svg plugin. + icon: SvgIconProps['component'] + label: string + action?: string +} + +const ACTION_REJECT = 'Reject this transaction' +const ACTION_REVIEW = 'Review before processing' + +export const mapRedefineSeverity: Record<SecuritySeverity, SecurityWarningProps> = { + [SecuritySeverity.CRITICAL]: { + action: ACTION_REJECT, + color: 'error', + icon: CloseIcon, + label: 'Critical issue', + }, + [SecuritySeverity.HIGH]: { + action: ACTION_REJECT, + color: 'error', + icon: CloseIcon, + label: 'High issue', + }, + [SecuritySeverity.MEDIUM]: { + action: ACTION_REVIEW, + color: 'warning', + icon: InfoIcon, + label: 'Medium issue', + }, + [SecuritySeverity.LOW]: { + action: ACTION_REVIEW, + color: 'warning', + icon: InfoIcon, + label: 'Low issue', + }, + [SecuritySeverity.NONE]: { + color: 'success', + icon: CheckIcon, + label: 'No issues found', + }, +} + export const useRedefine = ( safeTransaction: SafeTransaction | undefined, ): AsyncResult<SecurityResponse<RedefineModuleResponse>> => { diff --git a/src/components/tx/security/shared/LoadingLabel.tsx b/src/components/tx/security/shared/LoadingLabel.tsx deleted file mode 100644 index 268b01dff1..0000000000 --- a/src/components/tx/security/shared/LoadingLabel.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { Typography, CircularProgress } from '@mui/material' - -export const LoadingLabel = () => { - return ( - <Typography variant="body2" color="text.secondary" display="flex" alignItems="center" gap={1} p={2}> - <CircularProgress - thickness={2} - size={24} - sx={{ - color: ({ palette }) => palette.text.secondary, - }} - /> - Calculating... - </Typography> - ) -} diff --git a/src/components/tx/security/shared/SecurityWarnings/index.test.ts b/src/components/tx/security/shared/SecurityWarnings/index.test.ts deleted file mode 100644 index b646fbd37d..0000000000 --- a/src/components/tx/security/shared/SecurityWarnings/index.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { SecuritySeverity } from '@/services/security/modules/types' -import { mapSeverityComponentProps } from '.' - -describe('SecurityWarnings', () => { - describe('mapSeverity', () => { - it('should return "error" when the severity is "HIGH', () => { - expect(mapSeverityComponentProps[SecuritySeverity.HIGH].color).toBe('error') - }) - - it('should return "warning" when the severity is "LOW', () => { - expect(mapSeverityComponentProps[SecuritySeverity.LOW].color).toBe('warning') - }) - - it('should return "info" when the severity is "NONE', () => { - expect(mapSeverityComponentProps[SecuritySeverity.NONE].color).toBe('info') - }) - }) - - describe('mapRisk', () => { - it('should return "Critical risk" when the severity is "HIGH', () => { - expect(mapSeverityComponentProps[SecuritySeverity.HIGH].label).toBe('High issue') - }) - - it('should return "Low risk" when the severity is "LOW', () => { - expect(mapSeverityComponentProps[SecuritySeverity.LOW].label).toBe('Low issue') - }) - - it('should return "No issues found" when the severity is "NONE', () => { - expect(mapSeverityComponentProps[SecuritySeverity.NONE].label).toBe('No issues found') - }) - }) - - describe('mapAction', () => { - it('should return "Reject this transaction" when the severity is "HIGH', () => { - expect(mapSeverityComponentProps[SecuritySeverity.HIGH].action).toBe('Reject this transaction') - }) - - it('should return "Review before processing" when the severity is "LOW', () => { - expect(mapSeverityComponentProps[SecuritySeverity.LOW].action).toBe('Review before processing') - }) - - it('should return undefined when the severity is "NONE', () => { - expect(mapSeverityComponentProps[SecuritySeverity.NONE].action).toBe(undefined) - }) - }) -}) diff --git a/src/components/tx/security/shared/SecurityWarnings/index.tsx b/src/components/tx/security/shared/SecurityWarnings/index.tsx deleted file mode 100644 index f5966d3006..0000000000 --- a/src/components/tx/security/shared/SecurityWarnings/index.tsx +++ /dev/null @@ -1,185 +0,0 @@ -import { - Alert, - type AlertColor, - SvgIcon, - Typography, - Box, - Grid, - Checkbox, - Accordion, - AccordionSummary, - AccordionDetails, - FormControlLabel, - List, - ListItem, -} from '@mui/material' - -import { SecuritySeverity } from '@/services/security/modules/types' -import AlertIcon from '@/public/images/notifications/alert.svg' - -import css from './styles.module.css' -import { LoadingLabel } from '../LoadingLabel' -import { type Dispatch, type ReactElement, type SetStateAction, useCallback } from 'react' -import RedefineLogo from '@/public/images/transactions/redefine.svg' -import RedefineLogoDark from '@/public/images/transactions/redefine-dark-mode.svg' - -import ExpandMoreIcon from '@mui/icons-material/ExpandMore' -import Track from '@/components/common/Track' -import { MODALS_EVENTS } from '@/services/analytics' -import { useDarkMode } from '@/hooks/useDarkMode' - -type SecurityWarningProps = { - color: AlertColor - label: string - action?: string -} - -const ACTION_REJECT = 'Reject this transaction' -const ACTION_REVIEW = 'Review before processing' - -export const mapSeverityComponentProps: Record<SecuritySeverity, SecurityWarningProps> = { - [SecuritySeverity.CRITICAL]: { - action: ACTION_REJECT, - color: 'error', - label: 'Critical issue', - }, - [SecuritySeverity.HIGH]: { - action: ACTION_REJECT, - color: 'error', - label: 'High issue', - }, - [SecuritySeverity.MEDIUM]: { - action: ACTION_REVIEW, - color: 'warning', - label: 'Medium issue', - }, - [SecuritySeverity.LOW]: { - action: ACTION_REVIEW, - color: 'warning', - label: 'Low issue', - }, - [SecuritySeverity.NONE]: { - color: 'info', - label: 'No issues found', - }, -} - -export const SecurityHint = ({ severity, warnings }: { severity: SecuritySeverity; warnings: string[] }) => { - const severityProps = mapSeverityComponentProps[severity] - const pluralizedLabel = `${severityProps.label}${warnings.length > 1 ? 's' : ''}` - return ( - <> - <Alert - className={css.hint} - severity={severityProps.color} - sx={{ bgcolor: ({ palette }) => palette[severityProps.color].background }} - icon={ - <SvgIcon - component={AlertIcon} - inheritViewBox - color={severityProps.color} - sx={{ - '& path': { - fill: ({ palette }) => palette[severityProps.color].main, - }, - }} - /> - } - > - {severity !== SecuritySeverity.NONE && <Typography variant="h5">{pluralizedLabel}</Typography>} - <Box display="flex" flexDirection="column" gap={2}> - <List sx={{ listStyle: 'disc', pl: 2, '& li:last-child': { m: 0 } }}> - {warnings.map((warning) => ( - <ListItem key={warning} disablePadding sx={{ display: 'list-item', mb: 1 }}> - <Typography variant="body2">{warning}</Typography> - </ListItem> - ))} - </List> - </Box> - </Alert> - </> - ) -} - -export const SecurityWarning = ({ - severity, - isLoading, - error, - children, - needsConfirmation, - isConfirmed, - setIsConfirmed, -}: { - severity: SecuritySeverity | undefined - isLoading: boolean - error: Error | undefined - children: ReactElement - needsConfirmation: boolean - isConfirmed: boolean - setIsConfirmed: Dispatch<SetStateAction<boolean>> -}) => { - const isDarkMode = useDarkMode() - const severityProps = severity !== undefined ? mapSeverityComponentProps[severity] : undefined - - const toggleConfirmation = useCallback(() => { - setIsConfirmed((prev) => !prev) - }, [setIsConfirmed]) - - return ( - <Box className={css.wrapperBox}> - <Accordion className={css.verdictBox}> - <AccordionSummary sx={{ mb: 0 }} expandIcon={<ExpandMoreIcon />}> - <Grid container direction="row" justifyContent="space-between" alignItems="center"> - <Grid item> - <Typography fontWeight={700} variant="subtitle1"> - Scan for risks - </Typography> - - <Typography - variant="caption" - color="text.secondary" - display="flex" - flexDirection="row" - gap={1} - alignItems="center" - position="relative" - > - Powered by{' '} - <SvgIcon - inheritViewBox - sx={{ height: '40px', width: '52px', position: 'absolute', right: '-20px' }} - component={isDarkMode ? RedefineLogoDark : RedefineLogo} - /> - </Typography> - </Grid> - - {isLoading ? ( - <LoadingLabel /> - ) : severityProps ? ( - <Typography variant="body2" fontWeight={700} color={`${severityProps.color}.main`}> - {severityProps.label} - </Typography> - ) : error ? ( - <Typography variant="body2" fontWeight={700} color="error"> - {error.message} - </Typography> - ) : null} - </Grid> - </AccordionSummary> - - <AccordionDetails>{children}</AccordionDetails> - </Accordion> - - {needsConfirmation && ( - <Box pl={2}> - <Track {...MODALS_EVENTS.ACCEPT_RISK}> - <FormControlLabel - label="I understand the risks and would like to continue this transaction" - control={<Checkbox checked={isConfirmed} onChange={toggleConfirmation} />} - /> - </Track> - </Box> - )} - </Box> - ) -} diff --git a/src/components/tx/security/shared/SecurityWarnings/styles.module.css b/src/components/tx/security/shared/SecurityWarnings/styles.module.css deleted file mode 100644 index 697205454c..0000000000 --- a/src/components/tx/security/shared/SecurityWarnings/styles.module.css +++ /dev/null @@ -1,60 +0,0 @@ -.hint { - padding: var(--space-2); - border: unset; -} - -.hint :global .MuiAlert-icon { - padding: 0; -} - -.hint :global .MuiAlert-message { - padding: 0; -} - -.warning { - padding: var(--space-2) var(--space-4); - background-color: unset; -} - -.warning :global .MuiAlert-message { - padding: 0; -} - -.checkbox { - margin: var(--space-2) 0; -} - -.checkbox :global .MuiCheckbox-root { - padding: 0 12px; -} - -.verdictBox { - border: none; - border-radius: 6px; - border-bottom: 1px solid var(--color-border-light); -} - -.verdictBox :global .Mui-expanded.MuiAccordionSummary-root { - background-color: var(--color-background-paper); - border-bottom: 1px solid var(--color-border-light); -} - -.verdictBox :global .MuiAccordionSummary-root:hover { - background-color: var(--color-background-paper); -} - -.verdictBox:hover { - border-color: var(--color-border-light); -} - -.wrapperBox :global .MuiAccordion-root.Mui-expanded { - border-color: var(--color-border-light) !important; -} - -.wrapperBox { - border-radius: 6px; - border: 1px solid var(--color-border-light); - padding: 0; - margin-top: var(--space-2); - background-color: var(--color-background-main); -} diff --git a/src/components/tx/security/TransactionSecurityContext/index.tsx b/src/components/tx/security/shared/TxSecurityContext.tsx similarity index 64% rename from src/components/tx/security/TransactionSecurityContext/index.tsx rename to src/components/tx/security/shared/TxSecurityContext.tsx index 58d54f5d6d..f1840302fc 100644 --- a/src/components/tx/security/TransactionSecurityContext/index.tsx +++ b/src/components/tx/security/shared/TxSecurityContext.tsx @@ -1,10 +1,10 @@ import { type RedefineModuleResponse } from '@/services/security/modules/RedefineModule' import { SecuritySeverity } from '@/services/security/modules/types' -import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' -import { createContext, type Dispatch, type SetStateAction, useMemo, useState } from 'react' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' +import { createContext, type Dispatch, type SetStateAction, useContext, useMemo, useState } from 'react' import { useRedefine } from '../redefine/useRedefine' -export const TransactionSecurityContext = createContext<{ +export const TxSecurityContext = createContext<{ warnings: NonNullable<RedefineModuleResponse['issues']> simulationUuid: string | undefined balanceChange: RedefineModuleResponse['balanceChange'] @@ -14,6 +14,8 @@ export const TransactionSecurityContext = createContext<{ needsRiskConfirmation: boolean isRiskConfirmed: boolean setIsRiskConfirmed: Dispatch<SetStateAction<boolean>> + isRiskIgnored: boolean + setIsRiskIgnored: Dispatch<SetStateAction<boolean>> }>({ warnings: [], simulationUuid: undefined, @@ -24,17 +26,15 @@ export const TransactionSecurityContext = createContext<{ needsRiskConfirmation: false, isRiskConfirmed: false, setIsRiskConfirmed: () => {}, + isRiskIgnored: false, + setIsRiskIgnored: () => {}, }) -export const TransactionSecurityProvider = ({ - children, - safeTx, -}: { - children: JSX.Element - safeTx: SafeTransaction | undefined -}) => { +export const TxSecurityProvider = ({ children }: { children: JSX.Element }) => { + const { safeTx } = useContext(SafeTxContext) const [redefineResponse, redefineError, redefineLoading] = useRedefine(safeTx) const [isRiskConfirmed, setIsRiskConfirmed] = useState(false) + const [isRiskIgnored, setIsRiskIgnored] = useState(false) const providedValue = useMemo( () => ({ @@ -47,9 +47,11 @@ export const TransactionSecurityProvider = ({ needsRiskConfirmation: !!redefineResponse && redefineResponse.severity >= SecuritySeverity.HIGH, isRiskConfirmed, setIsRiskConfirmed, + isRiskIgnored: isRiskIgnored && !isRiskConfirmed, + setIsRiskIgnored, }), - [isRiskConfirmed, redefineError, redefineLoading, redefineResponse], + [isRiskConfirmed, isRiskIgnored, redefineError, redefineLoading, redefineResponse], ) - return <TransactionSecurityContext.Provider value={providedValue}>{children}</TransactionSecurityContext.Provider> + return <TxSecurityContext.Provider value={providedValue}>{children}</TxSecurityContext.Provider> } diff --git a/src/components/tx/security/shared/styles.module.css b/src/components/tx/security/shared/styles.module.css new file mode 100644 index 0000000000..ddbb7d675b --- /dev/null +++ b/src/components/tx/security/shared/styles.module.css @@ -0,0 +1,18 @@ +.wrapper { + display: flex; + justify-content: space-between; + padding: var(--space-1) var(--space-2); + border-width: 1px; +} + +.poweredBy { + color: var(--color-text-secondary); + display: inline-flex; + align-items: center; + gap: var(--space-1); +} + +.result { + display: inline-flex; + align-items: center; +} diff --git a/src/components/tx/TxSimulation/__tests__/useSimulation.test.ts b/src/components/tx/security/tenderly/__tests__/useSimulation.test.ts similarity index 95% rename from src/components/tx/TxSimulation/__tests__/useSimulation.test.ts rename to src/components/tx/security/tenderly/__tests__/useSimulation.test.ts index ffde6952f5..97b33bd226 100644 --- a/src/components/tx/TxSimulation/__tests__/useSimulation.test.ts +++ b/src/components/tx/security/tenderly/__tests__/useSimulation.test.ts @@ -1,9 +1,9 @@ import type { SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' import { act, renderHook, waitFor } from '@/tests/test-utils' -import { useSimulation } from '@/components/tx/TxSimulation/useSimulation' -import * as utils from '@/components/tx/TxSimulation/utils' -import { FETCH_STATUS, type TenderlySimulation } from '@/components/tx/TxSimulation/types' +import { useSimulation } from '@/components/tx/security/tenderly/useSimulation' +import * as utils from '@/components/tx/security/tenderly/utils' +import { FETCH_STATUS, type TenderlySimulation } from '@/components/tx/security/tenderly/types' const setupFetchStub = (data: any) => (_url: string) => { return Promise.resolve({ @@ -46,7 +46,7 @@ describe('useSimulation()', () => { const mockFetch = jest.spyOn(global, 'fetch') - mockFetch.mockImplementation(() => Promise.reject({ message: '404 not found' })) + mockFetch.mockImplementation(() => Promise.reject(new Error('404 not found'))) jest.spyOn(utils, 'getSimulationPayload').mockImplementation(() => Promise.resolve({ @@ -80,7 +80,6 @@ describe('useSimulation()', () => { chainId, } as SafeInfo, executionOwner: safeAddress, - canExecute: true, }), ) @@ -150,7 +149,6 @@ describe('useSimulation()', () => { chainId, } as SafeInfo, executionOwner: safeAddress, - canExecute: true, }), ) @@ -221,7 +219,6 @@ describe('useSimulation()', () => { chainId, } as SafeInfo, executionOwner: safeAddress, - canExecute: false, }), ) diff --git a/src/components/tx/TxSimulation/__tests__/utils.test.ts b/src/components/tx/security/tenderly/__tests__/utils.test.ts similarity index 97% rename from src/components/tx/TxSimulation/__tests__/utils.test.ts rename to src/components/tx/security/tenderly/__tests__/utils.test.ts index 3f5db7d551..a53583466c 100644 --- a/src/components/tx/TxSimulation/__tests__/utils.test.ts +++ b/src/components/tx/security/tenderly/__tests__/utils.test.ts @@ -1,7 +1,11 @@ import type { MetaTransactionData, SafeTransaction } from '@safe-global/safe-core-sdk-types' import type { SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' import { BigNumber, ethers } from 'ethers' -import { getSimulationPayload, NONCE_STORAGE_POSITION, THRESHOLD_STORAGE_POSITION } from '../utils' +import { + getSimulationPayload, + NONCE_STORAGE_POSITION, + THRESHOLD_STORAGE_POSITION, +} from '@/components/tx/security/tenderly/utils' import * as safeContracts from '@/services/contracts/safeContracts' import { getMultiSendCallOnlyDeployment, getSafeSingletonDeployment } from '@safe-global/safe-deployments' import EthSafeTransaction from '@safe-global/safe-core-sdk/dist/src/utils/transactions/SafeTransaction' @@ -71,7 +75,6 @@ describe('simulation utils', () => { }) const tenderlyPayload = await getSimulationPayload({ - canExecute: true, executionOwner: ownerAddress, gasLimit: 50_000, safe: mockSafeInfo as SafeInfo, @@ -140,7 +143,6 @@ describe('simulation utils', () => { mockTx.addSignature(generatePreValidatedSignature(otherOwnerAddress2)) const tenderlyPayload = await getSimulationPayload({ - canExecute: true, executionOwner: ownerAddress, gasLimit: 50_000, safe: mockSafeInfo as SafeInfo, @@ -181,7 +183,6 @@ describe('simulation utils', () => { mockTx.addSignature(generatePreValidatedSignature(otherOwnerAddress1)) const tenderlyPayload = await getSimulationPayload({ - canExecute: false, executionOwner: ownerAddress, safe: mockSafeInfo as SafeInfo, transactions: mockTx, @@ -226,7 +227,6 @@ describe('simulation utils', () => { mockTx.addSignature(generatePreValidatedSignature(otherOwnerAddress1)) const tenderlyPayload = await getSimulationPayload({ - canExecute: true, executionOwner: ownerAddress, gasLimit: 50_000, safe: mockSafeInfo as SafeInfo, @@ -265,7 +265,6 @@ describe('simulation utils', () => { }) const tenderlyPayload = await getSimulationPayload({ - canExecute: false, executionOwner: ownerAddress, gasLimit: 50_000, safe: mockSafeInfo as SafeInfo, @@ -315,7 +314,6 @@ describe('simulation utils', () => { ] const tenderlyPayload = await getSimulationPayload({ - canExecute: true, executionOwner: ownerAddress, safe: mockSafeInfo as SafeInfo, transactions: mockTxs, diff --git a/src/components/tx/security/tenderly/index.tsx b/src/components/tx/security/tenderly/index.tsx new file mode 100644 index 0000000000..ab1c75b261 --- /dev/null +++ b/src/components/tx/security/tenderly/index.tsx @@ -0,0 +1,202 @@ +import { Alert, Button, Paper, SvgIcon, Tooltip, Typography } from '@mui/material' +import { useContext, useEffect } from 'react' +import type { ReactElement } from 'react' + +import useSafeInfo from '@/hooks/useSafeInfo' +import useWallet from '@/hooks/wallets/useWallet' +import CheckIcon from '@/public/images/common/check.svg' +import CloseIcon from '@/public/images/common/close.svg' +import { useDarkMode } from '@/hooks/useDarkMode' +import CircularProgress from '@mui/material/CircularProgress' +import ExternalLink from '@/components/common/ExternalLink' +import { useCurrentChain } from '@/hooks/useChains' +import { FETCH_STATUS } from '@/components/tx/security/tenderly/types' +import { isTxSimulationEnabled } from '@/components/tx/security/tenderly/utils' +import type { SimulationTxParams } from '@/components/tx/security/tenderly/utils' +import type { TenderlySimulation } from '@/components/tx/security/tenderly/types' + +import css from './styles.module.css' +import sharedCss from '@/components/tx/security/shared/styles.module.css' +import { TxInfoContext } from '@/components/tx-flow/TxInfoProvider' +import { SafeTxContext } from '@/components/tx-flow/SafeTxProvider' +import InfoIcon from '@/public/images/notifications/info.svg' + +export type TxSimulationProps = { + transactions?: SimulationTxParams['transactions'] + gasLimit?: number + disabled: boolean +} + +const getCallTraceErrors = (simulation?: TenderlySimulation) => { + if (!simulation || !simulation.simulation.status) { + return [] + } + + return simulation.transaction.call_trace.filter((call) => call.error) +} + +// TODO: Investigate resetting on gasLimit change as we are not simulating with the gasLimit of the tx +// otherwise remove all usage of gasLimit in simulation. Note: this was previously being done. +const TxSimulationBlock = ({ transactions, disabled, gasLimit }: TxSimulationProps): ReactElement => { + const { safe } = useSafeInfo() + const wallet = useWallet() + const isDarkMode = useDarkMode() + const { safeTx } = useContext(SafeTxContext) + const { + simulation: { simulateTransaction, simulationRequestStatus, resetSimulation }, + } = useContext(TxInfoContext) + + const isLoading = simulationRequestStatus === FETCH_STATUS.LOADING + const isSuccess = simulationRequestStatus === FETCH_STATUS.SUCCESS + const isError = simulationRequestStatus === FETCH_STATUS.ERROR + + const handleSimulation = async () => { + if (!wallet) { + return + } + + simulateTransaction({ + safe, + executionOwner: wallet.address, + transactions, + gasLimit, + } as SimulationTxParams) + } + + // Reset simulation if safeTx changes + useEffect(() => { + resetSimulation() + }, [safeTx, resetSimulation]) + + return ( + <Paper variant="outlined" className={sharedCss.wrapper}> + <div className={css.wrapper}> + <Typography variant="body2" fontWeight={700}> + Run a simulation + <Tooltip + title="This transaction can be simulated before execution to ensure that it will be succeed, generating a detailed report of the transaction execution." + arrow + placement="top" + > + <span> + <SvgIcon + component={InfoIcon} + inheritViewBox + color="border" + fontSize="small" + sx={{ + verticalAlign: 'middle', + ml: 0.5, + }} + /> + </span> + </Tooltip> + </Typography> + <Typography variant="caption" className={sharedCss.poweredBy}> + Powered by{' '} + <img + src={isDarkMode ? '/images/transactions/tenderly-light.svg' : '/images/transactions/tenderly-dark.svg'} + alt="Tenderly" + width="65px" + height="15px" + /> + </Typography> + </div> + + <div className={sharedCss.result}> + {isLoading ? ( + <CircularProgress + size={22} + sx={{ + color: ({ palette }) => palette.text.secondary, + }} + /> + ) : isSuccess ? ( + <Typography variant="body2" color="success.main" className={sharedCss.result}> + <SvgIcon component={CheckIcon} inheritViewBox fontSize="small" sx={{ verticalAlign: 'middle', mr: 1 }} /> + Success + </Typography> + ) : isError ? ( + <Typography variant="body2" color="error.main" className={sharedCss.result}> + <SvgIcon component={CloseIcon} inheritViewBox fontSize="small" sx={{ verticalAlign: 'middle', mr: 1 }} /> + Error + </Typography> + ) : ( + <Button + variant="outlined" + size="small" + className={css.simulate} + onClick={handleSimulation} + disabled={!transactions || disabled} + > + Simulate + </Button> + )} + </div> + </Paper> + ) +} + +export const TxSimulation = (props: TxSimulationProps): ReactElement | null => { + const chain = useCurrentChain() + + if (!chain || !isTxSimulationEnabled(chain)) { + return null + } + + return <TxSimulationBlock {...props} /> +} + +export const TxSimulationMessage = () => { + const { + simulation: { simulationRequestStatus, simulationLink, simulation, requestError }, + } = useContext(TxInfoContext) + + const isFinished = simulationRequestStatus === FETCH_STATUS.SUCCESS || simulationRequestStatus === FETCH_STATUS.ERROR + + if (!isFinished) { + return null + } + + const isSuccess = simulation?.simulation.status + // Safe can emit failure event even though Tenderly simulation succeeds + const isCallTraceError = isSuccess && getCallTraceErrors(simulation).length > 0 + const isError = simulationRequestStatus === FETCH_STATUS.ERROR + + if (!isSuccess || isError || isCallTraceError) { + return ( + <Alert severity="error" sx={{ border: 'unset' }}> + <Typography variant="body2" fontWeight={700}> + Simulation failed + </Typography> + {requestError ? ( + <Typography color="error"> + An unexpected error occurred during simulation: <b>{requestError}</b>. + </Typography> + ) : ( + <Typography> + {isCallTraceError ? ( + <>The transaction failed during the simulation.</> + ) : ( + <> + The transaction failed during the simulation throwing error{' '} + <b>{simulation?.transaction.error_message}</b> in the contract at{' '} + <b>{simulation?.transaction.error_info?.address}</b>. + </> + )}{' '} + Full simulation report is available <ExternalLink href={simulationLink}>on Tenderly</ExternalLink>. + </Typography> + )} + </Alert> + ) + } + + return ( + <Alert severity="info" sx={{ border: 'unset' }}> + <Typography variant="body2" fontWeight={700}> + Simulation successful + </Typography> + Full simulation report is available <ExternalLink href={simulationLink}>on Tenderly</ExternalLink>. + </Alert> + ) +} diff --git a/src/components/tx/security/tenderly/styles.module.css b/src/components/tx/security/tenderly/styles.module.css new file mode 100644 index 0000000000..464186db25 --- /dev/null +++ b/src/components/tx/security/tenderly/styles.module.css @@ -0,0 +1,8 @@ +.simulate { + margin: 0; + padding: calc(var(--space-1) / 2) var(--space-2); +} + +.wrapper { + line-height: 1; +} diff --git a/src/components/tx/TxSimulation/types.ts b/src/components/tx/security/tenderly/types.ts similarity index 100% rename from src/components/tx/TxSimulation/types.ts rename to src/components/tx/security/tenderly/types.ts diff --git a/src/components/tx/TxSimulation/useSimulation.ts b/src/components/tx/security/tenderly/useSimulation.ts similarity index 90% rename from src/components/tx/TxSimulation/useSimulation.ts rename to src/components/tx/security/tenderly/useSimulation.ts index 1f101492fd..286d8cdcef 100644 --- a/src/components/tx/TxSimulation/useSimulation.ts +++ b/src/components/tx/security/tenderly/useSimulation.ts @@ -1,12 +1,13 @@ import { useCallback, useMemo, useState } from 'react' -import { getSimulation, getSimulationLink } from '@/components/tx/TxSimulation/utils' -import { FETCH_STATUS, type TenderlySimulation } from '@/components/tx/TxSimulation/types' -import { getSimulationPayload, type SimulationTxParams } from '@/components/tx/TxSimulation/utils' +import { getSimulation, getSimulationLink } from '@/components/tx/security/tenderly/utils' +import { FETCH_STATUS, type TenderlySimulation } from '@/components/tx/security/tenderly/types' +import { getSimulationPayload, type SimulationTxParams } from '@/components/tx/security/tenderly/utils' import { useAppSelector } from '@/store' import { selectTenderly } from '@/store/settingsSlice' +import { asError } from '@/services/exceptions/utils' -type UseSimulationReturn = +export type UseSimulationReturn = | { simulationRequestStatus: FETCH_STATUS.NOT_ASKED | FETCH_STATUS.ERROR | FETCH_STATUS.LOADING simulation: undefined @@ -53,7 +54,7 @@ export const useSimulation = (): UseSimulationReturn => { } catch (error) { console.error(error) - setRequestError((error as Error).message) + setRequestError(asError(error).message) setSimulationRequestStatus(FETCH_STATUS.ERROR) } }, diff --git a/src/components/tx/TxSimulation/utils.ts b/src/components/tx/security/tenderly/utils.ts similarity index 98% rename from src/components/tx/TxSimulation/utils.ts rename to src/components/tx/security/tenderly/utils.ts index c133dc576d..47838a87a7 100644 --- a/src/components/tx/TxSimulation/utils.ts +++ b/src/components/tx/security/tenderly/utils.ts @@ -10,7 +10,7 @@ import { } from '@/services/contracts/safeContracts' import { TENDERLY_SIMULATE_ENDPOINT_URL, TENDERLY_ORG_NAME, TENDERLY_PROJECT_NAME } from '@/config/constants' import { FEATURES, hasFeature } from '@/utils/chains' -import type { StateObject, TenderlySimulatePayload, TenderlySimulation } from '@/components/tx/TxSimulation/types' +import type { StateObject, TenderlySimulatePayload, TenderlySimulation } from '@/components/tx/security/tenderly/types' import { getWeb3ReadOnly } from '@/hooks/wallets/web3' import { hexZeroPad } from 'ethers/lib/utils' import { BigNumber } from 'ethers' @@ -67,7 +67,6 @@ type SingleTransactionSimulationParams = { executionOwner: string transactions: SafeTransaction gasLimit?: number - canExecute: boolean } type MultiSendTransactionSimulationParams = { @@ -75,7 +74,6 @@ type MultiSendTransactionSimulationParams = { executionOwner: string transactions: MetaTransactionData[] gasLimit?: number - canExecute: boolean } export type SimulationTxParams = SingleTransactionSimulationParams | MultiSendTransactionSimulationParams diff --git a/src/components/tx/security/redefine/useDelegateCallModule.ts b/src/components/tx/security/useDelegateCallModule.ts similarity index 96% rename from src/components/tx/security/redefine/useDelegateCallModule.ts rename to src/components/tx/security/useDelegateCallModule.ts index 4a70f17e82..a838a64403 100644 --- a/src/components/tx/security/redefine/useDelegateCallModule.ts +++ b/src/components/tx/security/useDelegateCallModule.ts @@ -8,6 +8,7 @@ import type { SecurityResponse } from '@/services/security/modules/types' const DelegateCallModuleInstance = new DelegateCallModule() +// TODO: Not being used right now export const useDelegateCallModule = (safeTransaction: SafeTransaction | undefined) => { const { safe, safeLoaded } = useSafeInfo() diff --git a/src/components/tx/security/redefine/useRecipientModule.ts b/src/components/tx/security/useRecipientModule.ts similarity index 97% rename from src/components/tx/security/redefine/useRecipientModule.ts rename to src/components/tx/security/useRecipientModule.ts index 85702eaa0c..6a0804034b 100644 --- a/src/components/tx/security/redefine/useRecipientModule.ts +++ b/src/components/tx/security/useRecipientModule.ts @@ -11,6 +11,7 @@ import type { SecurityResponse } from '@/services/security/modules/types' const RecipientAddressModuleInstance = new RecipientAddressModule() +// TODO: Not being used right now export const useRecipientModule = (safeTransaction: SafeTransaction | undefined) => { const { safe, safeLoaded } = useSafeInfo() const web3ReadOnly = useWeb3ReadOnly() diff --git a/src/components/welcome/styles.module.css b/src/components/welcome/styles.module.css index 5a9ca361c5..109c8246e2 100644 --- a/src/components/welcome/styles.module.css +++ b/src/components/welcome/styles.module.css @@ -63,7 +63,7 @@ padding: 0; } -@media (max-width: 900px) { +@media (max-width: 899.95px) { .sidebar :global .MuiPaper-root { height: 100%; } @@ -85,7 +85,7 @@ } } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .content { padding: var(--space-4); } diff --git a/src/config/constants.ts b/src/config/constants.ts index 771e8ed57e..e1217ea980 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -79,6 +79,7 @@ export const HelpCenterArticle = { SAFE_SETUP: `${HELP_CENTER_URL}/en/articles/40835-what-safe-setup-should-i-use`, SIGNED_MESSAGES: `${HELP_CENTER_URL}/en/articles/40783-what-are-signed-messages`, SPAM_TOKENS: `${HELP_CENTER_URL}/en/articles/40784-default-token-list-local-hiding-of-spam-tokens`, + SPENDING_LIMITS: `${HELP_CENTER_URL}/en/articles/40842-set-up-and-use-spending-limits`, TRANSACTION_GUARD: `${HELP_CENTER_URL}/en/articles/40809-what-is-a-transaction-guard`, UNEXPECTED_DELEGATE_CALL: `${HELP_CENTER_URL}/en/articles/40794-why-do-i-see-an-unexpected-delegate-call-warning-in-my-transaction`, } as const @@ -93,3 +94,4 @@ export const IS_OFFICIAL_HOST = process.env.NEXT_PUBLIC_IS_OFFICIAL_HOST || fals // Risk mitigation (Redefine) export const REDEFINE_SIMULATION_URL = 'https://dashboard.redefine.net/reports/' export const REDEFINE_API = process.env.NEXT_PUBLIC_REDEFINE_API +export const REDEFINE_ARTICLE = 'https://safe.mirror.xyz/rInLWZwD_sf7enjoFerj6FIzCYmVMGrrV8Nhg4THdwI' diff --git a/src/hooks/__tests__/useAsync.test.ts b/src/hooks/__tests__/useAsync.test.ts index 05c24fd773..1e167ba39c 100644 --- a/src/hooks/__tests__/useAsync.test.ts +++ b/src/hooks/__tests__/useAsync.test.ts @@ -35,7 +35,7 @@ describe('useAsync hook', () => { expect(result.current).toEqual([undefined, undefined, true]) await waitFor(() => { - expect(result.current).toEqual([undefined, 'test', false]) + expect(result.current).toEqual([undefined, new Error('test'), false]) }) }) diff --git a/src/hooks/__tests__/useBatchedTxs.test.ts b/src/hooks/__tests__/useBatchedTxs.test.ts index 5b8d6c33dd..67480d5033 100644 --- a/src/hooks/__tests__/useBatchedTxs.test.ts +++ b/src/hooks/__tests__/useBatchedTxs.test.ts @@ -1,67 +1,7 @@ -import type { - AddressEx, - MultisigExecutionInfo, - Transaction, - TransactionInfo, - TransactionListItem, - TransactionSummary, - TransferInfo, -} from '@safe-global/safe-gateway-typescript-sdk' -import { - ConflictType, - DetailedExecutionInfoType, - TransactionInfoType, - TransactionListItemType, - TransactionStatus, - TransactionTokenType, - TransferDirection, -} from '@safe-global/safe-gateway-typescript-sdk' +import type { MultisigExecutionInfo, Transaction, TransactionListItem } from '@safe-global/safe-gateway-typescript-sdk' +import { ConflictType, TransactionListItemType } from '@safe-global/safe-gateway-typescript-sdk' import { getBatchableTransactions } from '@/hooks/useBatchedTxs' - -const mockAddressEx: AddressEx = { - value: 'string', -} - -const mockTransferInfo: TransferInfo = { - type: TransactionTokenType.ERC20, - tokenAddress: 'string', - value: 'string', -} - -const mockTxInfo: TransactionInfo = { - type: TransactionInfoType.TRANSFER, - sender: mockAddressEx, - recipient: mockAddressEx, - direction: TransferDirection.OUTGOING, - transferInfo: mockTransferInfo, -} - -const defaultTx: TransactionSummary = { - id: '', - timestamp: 0, - txInfo: mockTxInfo, - txStatus: TransactionStatus.AWAITING_CONFIRMATIONS, - executionInfo: { - type: DetailedExecutionInfoType.MULTISIG, - nonce: 1, - confirmationsRequired: 2, - confirmationsSubmitted: 2, - }, -} - -const getMockTx = ({ nonce }: { nonce?: number }): Transaction => { - return { - transaction: { - ...defaultTx, - executionInfo: { - ...defaultTx.executionInfo, - nonce: nonce ?? (defaultTx.executionInfo as MultisigExecutionInfo).nonce, - } as MultisigExecutionInfo, - }, - type: TransactionListItemType.TRANSACTION, - conflictType: ConflictType.NONE, - } -} +import { defaultTx, getMockTx } from '@/tests/mocks/transactions' describe('getBatchableTransactions', () => { it('should return an empty array if no transactions are passed', () => { diff --git a/src/hooks/__tests__/usePreviousNonces.test.ts b/src/hooks/__tests__/usePreviousNonces.test.ts new file mode 100644 index 0000000000..3115a03cb7 --- /dev/null +++ b/src/hooks/__tests__/usePreviousNonces.test.ts @@ -0,0 +1,29 @@ +import { _getUniqueQueuedTxs } from '@/hooks/usePreviousNonces' +import { getMockTx } from '@/tests/mocks/transactions' + +describe('_getUniqueQueuedTxs', () => { + it('returns an empty array if input is undefined', () => { + const result = _getUniqueQueuedTxs() + + expect(result).toEqual([]) + }) + + it('returns an empty array if input is an empty array', () => { + const result = _getUniqueQueuedTxs({ results: [] }) + + expect(result).toEqual([]) + }) + + it('only returns one transaction per nonce', () => { + const mockTx = getMockTx({ nonce: 0 }) + const mockTx1 = getMockTx({ nonce: 1 }) + const mockTx2 = getMockTx({ nonce: 1 }) + + const mockPage = { + results: [mockTx, mockTx1, mockTx2], + } + const result = _getUniqueQueuedTxs(mockPage) + + expect(result.length).toEqual(2) + }) +}) diff --git a/src/hooks/coreSDK/useInitSafeCoreSDK.ts b/src/hooks/coreSDK/useInitSafeCoreSDK.ts index 845500f889..36912162c9 100644 --- a/src/hooks/coreSDK/useInitSafeCoreSDK.ts +++ b/src/hooks/coreSDK/useInitSafeCoreSDK.ts @@ -8,6 +8,7 @@ import { useAppDispatch } from '@/store' import { showNotification } from '@/store/notificationsSlice' import { useWeb3ReadOnly } from '@/hooks/wallets/web3' import { parsePrefixedAddress, sameAddress } from '@/utils/addresses' +import { asError } from '@/services/exceptions/utils' export const useInitSafeCoreSDK = () => { const { safe, safeLoaded } = useSafeInfo() @@ -35,16 +36,17 @@ export const useInitSafeCoreSDK = () => { implementation: safe.implementation.value, }) .then(setSafeSDK) - .catch((e) => { + .catch((_e) => { + const e = asError(_e) dispatch( showNotification({ message: 'Please try connecting your wallet again.', groupKey: 'core-sdk-init-error', variant: 'error', - detailedMessage: (e as Error).message, + detailedMessage: e.message, }), ) - trackError(ErrorCodes._105, (e as Error).message) + trackError(ErrorCodes._105, e.message) }) }, [ address, diff --git a/src/hooks/messages/useSyncSafeMessageSigner.ts b/src/hooks/messages/useSyncSafeMessageSigner.ts index 4fed68b50b..17bf4a4aa4 100644 --- a/src/hooks/messages/useSyncSafeMessageSigner.ts +++ b/src/hooks/messages/useSyncSafeMessageSigner.ts @@ -1,3 +1,4 @@ +import { asError } from '@/services/exceptions/utils' import { dispatchPreparedSignature } from '@/services/safe-messages/safeMsgNotifications' import { dispatchSafeMsgProposal, dispatchSafeMsgConfirmation } from '@/services/safe-messages/safeMsgSender' import { type EIP712TypedData, type SafeMessage } from '@safe-global/safe-gateway-typescript-sdk' @@ -56,7 +57,7 @@ const useSyncSafeMessageSigner = ( } } } catch (e) { - setSubmitError(e as Error) + setSubmitError(asError(e)) } }, [onboard, requestId, message, safe, decodedMessage, safeAppId, safeMessageHash, onClose]) diff --git a/src/hooks/safe-apps/useSafeAppFromManifest.ts b/src/hooks/safe-apps/useSafeAppFromManifest.ts index 3757c6cd76..015a9f5ee8 100644 --- a/src/hooks/safe-apps/useSafeAppFromManifest.ts +++ b/src/hooks/safe-apps/useSafeAppFromManifest.ts @@ -4,6 +4,7 @@ import { fetchSafeAppFromManifest } from '@/services/safe-apps/manifest' import useAsync from '@/hooks/useAsync' import { getEmptySafeApp } from '@/components/safe-apps/utils' import type { SafeAppDataWithPermissions } from '@/components/safe-apps/types' +import { asError } from '@/services/exceptions/utils' type UseSafeAppFromManifestReturnType = { safeApp: SafeAppDataWithPermissions @@ -19,7 +20,7 @@ const useSafeAppFromManifest = (appUrl: string, chainId: string): UseSafeAppFrom useEffect(() => { if (!error) return - logError(Errors._903, `${appUrl}, ${(error as Error).message}`) + logError(Errors._903, `${appUrl}, ${asError(error).message}`) }, [appUrl, error]) return { safeApp: data || emptyApp, isLoading } diff --git a/src/hooks/useAsync.ts b/src/hooks/useAsync.ts index 0883added3..494518a0e8 100644 --- a/src/hooks/useAsync.ts +++ b/src/hooks/useAsync.ts @@ -1,4 +1,5 @@ import { useCallback, useEffect, useState } from 'react' +import { asError } from '@/services/exceptions/utils' export type AsyncResult<T> = [result: T | undefined, error: Error | undefined, loading: boolean] @@ -35,7 +36,7 @@ const useAsync = <T>( isCurrent && setData(val) }) .catch((err) => { - isCurrent && setError(err) + isCurrent && setError(asError(err)) }) .finally(() => { isCurrent && setLoading(false) diff --git a/src/hooks/useGasLimit.ts b/src/hooks/useGasLimit.ts index ce2e441a11..6769072b53 100644 --- a/src/hooks/useGasLimit.ts +++ b/src/hooks/useGasLimit.ts @@ -51,6 +51,7 @@ const useGasLimit = ( const walletAddress = wallet?.address const isOwner = useIsSafeOwner() const currentChainId = useChainId() + const hasSafeTxGas = !!safeTx?.data?.safeTxGas const encodedSafeTx = useMemo<string>(() => { if (!safeTx || !safeSDK || !walletAddress) { @@ -77,17 +78,14 @@ const useGasLimit = ( .then((gasLimit) => { // Due to a bug in Nethermind estimation, we need to increment the gasLimit by 30% // when the safeTxGas is defined and not 0. Currently Nethermind is used only for Gnosis Chain. - if (currentChainId === chains.gno) { + if (currentChainId === chains.gno && hasSafeTxGas) { const incrementPercentage = 30 // value defined in %, ex. 30% - const isSafeTxGasSetAndNotZero = !!safeTx?.data?.safeTxGas - if (isSafeTxGasSetAndNotZero) { - return incrementByPercentage(gasLimit, incrementPercentage) - } + return incrementByPercentage(gasLimit, incrementPercentage) } return gasLimit }) - }, [currentChainId, safeAddress, safeTx, walletAddress, encodedSafeTx, web3ReadOnly, operationType]) + }, [currentChainId, safeAddress, hasSafeTxGas, walletAddress, encodedSafeTx, web3ReadOnly, operationType]) useEffect(() => { if (gasLimitError) { diff --git a/src/hooks/useGasPrice.ts b/src/hooks/useGasPrice.ts index 2f7127e974..4a7c3b91d1 100644 --- a/src/hooks/useGasPrice.ts +++ b/src/hooks/useGasPrice.ts @@ -7,6 +7,7 @@ import useIntervalCounter from './useIntervalCounter' import { useWeb3ReadOnly } from '../hooks/wallets/web3' import { Errors, logError } from '@/services/exceptions' import { FEATURES, hasFeature } from '@/utils/chains' +import { asError } from '@/services/exceptions/utils' // Update gas fees every 20 seconds const REFRESH_DELAY = 20e3 @@ -37,8 +38,8 @@ const getGasPrice = async (gasPriceConfigs: GasPrice): Promise<BigNumber | undef if (config.type == GAS_PRICE_TYPE.ORACLE) { try { return await fetchGasOracle(config) - } catch (err) { - error = err as Error + } catch (_err) { + error = asError(_err) logError(Errors._611, error.message) // Continue to the next oracle continue diff --git a/src/components/tx/modals/TokenTransferModal/useIsSafeTokenPaused.ts b/src/hooks/useIsSafeTokenPaused.ts similarity index 100% rename from src/components/tx/modals/TokenTransferModal/useIsSafeTokenPaused.ts rename to src/hooks/useIsSafeTokenPaused.ts diff --git a/src/hooks/useMasterCopies.ts b/src/hooks/useMasterCopies.ts index bc47e67e9e..aa69def055 100644 --- a/src/hooks/useMasterCopies.ts +++ b/src/hooks/useMasterCopies.ts @@ -36,7 +36,7 @@ export const useMasterCopies = () => { const res = await getMasterCopies(chainId) return res.map(extractMasterCopyInfo) } catch (error) { - logError(Errors._619, (error as Error).message) + logError(Errors._619, error) } } return useAsync(fetchMasterCopies, [chainId]) diff --git a/src/hooks/usePreviousNonces.ts b/src/hooks/usePreviousNonces.ts new file mode 100644 index 0000000000..ae7ef9e635 --- /dev/null +++ b/src/hooks/usePreviousNonces.ts @@ -0,0 +1,31 @@ +import { useMemo } from 'react' +import { isMultisigExecutionInfo, isTransactionListItem } from '@/utils/transaction-guards' +import { uniqBy } from 'lodash' +import useTxQueue from '@/hooks/useTxQueue' +import { type TransactionListPage } from '@safe-global/safe-gateway-typescript-sdk' + +export const _getUniqueQueuedTxs = (page?: TransactionListPage) => { + if (!page) { + return [] + } + + const txs = page.results.filter(isTransactionListItem).map((item) => item.transaction) + + return uniqBy(txs, (tx) => { + return isMultisigExecutionInfo(tx.executionInfo) ? tx.executionInfo.nonce : '' + }) +} + +const usePreviousNonces = () => { + const { page } = useTxQueue() + + const previousNonces = useMemo(() => { + return _getUniqueQueuedTxs(page) + .map((tx) => (isMultisigExecutionInfo(tx.executionInfo) ? tx.executionInfo.nonce : undefined)) + .filter((nonce): nonce is number => !!nonce) + }, [page]) + + return previousNonces +} + +export default usePreviousNonces diff --git a/src/hooks/useSpendingLimitGas.ts b/src/hooks/useSpendingLimitGas.ts index d43906a33b..e21be1c74f 100644 --- a/src/hooks/useSpendingLimitGas.ts +++ b/src/hooks/useSpendingLimitGas.ts @@ -2,7 +2,7 @@ import type { BigNumber } from 'ethers' import { useWeb3 } from '@/hooks/wallets/web3' import { getSpendingLimitContract } from '@/services/contracts/spendingLimitContracts' import useAsync from '@/hooks/useAsync' -import type { SpendingLimitTxParams } from '@/components/tx/modals/TokenTransferModal/ReviewSpendingLimitTx' +import { type SpendingLimitTxParams } from '@/components/tx-flow/flows/TokenTransfer/ReviewSpendingLimitTx' import useChainId from '@/hooks/useChainId' const useSpendingLimitGas = (params: SpendingLimitTxParams) => { diff --git a/src/hooks/useWalletCanRelay.ts b/src/hooks/useWalletCanRelay.ts index 639890be77..9463e4e7a1 100644 --- a/src/hooks/useWalletCanRelay.ts +++ b/src/hooks/useWalletCanRelay.ts @@ -3,12 +3,12 @@ import useSafeInfo from '@/hooks/useSafeInfo' import useWallet from '@/hooks/wallets/useWallet' import { isSmartContractWallet } from '@/utils/wallets' import { Errors, logError } from '@/services/exceptions' -import { hasEnoughSignatures } from '@/utils/transactions' import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' const useWalletCanRelay = (tx: SafeTransaction | undefined) => { const { safe } = useSafeInfo() const wallet = useWallet() + const hasEnoughSignatures = tx && tx.signatures.size >= safe.threshold return useAsync(() => { if (!tx || !wallet) return @@ -17,13 +17,13 @@ const useWalletCanRelay = (tx: SafeTransaction | undefined) => { .then((isSCWallet) => { if (!isSCWallet) return true - return hasEnoughSignatures(tx, safe) + return hasEnoughSignatures }) .catch((err) => { logError(Errors._106, err.message) return false }) - }, [tx, wallet, safe.threshold]) + }, [hasEnoughSignatures, wallet]) } export default useWalletCanRelay diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index 85a1a12d04..ef8fef73d8 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -62,7 +62,7 @@ export const getConnectedWallet = (wallets: WalletState[]): ConnectedWallet | nu icon: primaryWallet.icon, } } catch (e) { - logError(Errors._106, (e as Error).message) + logError(Errors._106, e) return null } } @@ -127,7 +127,7 @@ export const connectWallet = async ( try { wallets = await onboard.connectWallet(options) } catch (e) { - logError(Errors._302, (e as Error).message) + logError(Errors._302, e) isConnecting = false return diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 3a2cb23567..d6612c4179 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -36,6 +36,7 @@ import useAdjustUrl from '@/hooks/useAdjustUrl' import useSafeMessageNotifications from '@/hooks/messages/useSafeMessageNotifications' import useSafeMessagePendingStatuses from '@/hooks/messages/useSafeMessagePendingStatuses' import useChangedValue from '@/hooks/useChangedValue' +import { TxModalProvider } from '@/components/tx-flow' const GATEWAY_URL = IS_PRODUCTION || cgwDebugStorage.get() ? GATEWAY_URL_PRODUCTION : GATEWAY_URL_STAGING @@ -72,7 +73,7 @@ export const AppProviders = ({ children }: { children: ReactNode | ReactNode[] } {(safeTheme: Theme) => ( <ThemeProvider theme={safeTheme}> <Sentry.ErrorBoundary showDialog fallback={ErrorBoundary}> - {children} + <TxModalProvider>{children}</TxModalProvider> </Sentry.ErrorBoundary> </ThemeProvider> )} diff --git a/src/services/exceptions/index.test.ts b/src/services/exceptions/__tests__/index.test.ts similarity index 81% rename from src/services/exceptions/index.test.ts rename to src/services/exceptions/__tests__/index.test.ts index d5e92f4b7a..205b43ce19 100644 --- a/src/services/exceptions/index.test.ts +++ b/src/services/exceptions/__tests__/index.test.ts @@ -1,4 +1,4 @@ -import { Errors, logError, trackError, CodedException } from '.' +import { Errors, logError, trackError, CodedException } from '..' import * as constants from '@/config/constants' import * as Sentry from '@sentry/react' @@ -37,13 +37,27 @@ describe('CodedException', () => { expect(err.content).toBe(Errors._100) }) - it('creates an error with an extra message', () => { + it('creates an error with an extra message from a string', () => { const err = new CodedException(Errors._100, '0x123') expect(err.message).toBe('Code 100: Invalid input in the address field (0x123)') expect(err.code).toBe(100) expect(err.content).toBe(Errors._100) }) + it('creates an error with an extra message from an Error instance', () => { + const err = new CodedException(Errors._100, new Error('0x123')) + expect(err.message).toBe('Code 100: Invalid input in the address field (0x123)') + expect(err.code).toBe(100) + expect(err.content).toBe(Errors._100) + }) + + it('creates an error with an extra message from an object', () => { + const err = new CodedException(Errors._100, { address: '0x123' }) + expect(err.message).toBe('Code 100: Invalid input in the address field ({"address":"0x123"})') + expect(err.code).toBe(100) + expect(err.content).toBe(Errors._100) + }) + it('creates an error with an extra message and a context', () => { const context = { tags: { diff --git a/src/services/exceptions/__tests__/utils.test.ts b/src/services/exceptions/__tests__/utils.test.ts new file mode 100644 index 0000000000..40984da620 --- /dev/null +++ b/src/services/exceptions/__tests__/utils.test.ts @@ -0,0 +1,34 @@ +import { asError } from '@/services/exceptions/utils' + +describe('utils', () => { + describe('asError', () => { + it('should return the same error if thrown is an instance of Error', () => { + const thrown = new Error('test error') + + expect(asError(thrown)).toEqual(new Error('test error')) + }) + + it('should return a new Error instance with the thrown value if thrown is a string', () => { + const thrown = 'test error' + + const result = asError(thrown) + expect(result).toEqual(new Error('test error')) + + // If stringified: + expect(result).not.toEqual(new Error('"test error')) + }) + it('should return a new Error instance with the stringified thrown value if thrown is not an instance of Error', () => { + const thrown = { message: 'test error' } + + expect(asError(thrown)).toEqual(new Error('{"message":"test error"}')) + }) + + it('should return a new Error instance with the string representation of thrown if JSON.stringify throws an error', () => { + // Circular dependency + const thrown: Record<string, unknown> = {} + thrown.a = { b: thrown } + + expect(asError(thrown)).toEqual(new Error('[object Object]')) + }) + }) +}) diff --git a/src/services/exceptions/index.ts b/src/services/exceptions/index.ts index af0e7701df..9db26380c0 100644 --- a/src/services/exceptions/index.ts +++ b/src/services/exceptions/index.ts @@ -2,6 +2,7 @@ import * as Sentry from '@sentry/react' import type { CaptureContext } from '@sentry/types' import { IS_PRODUCTION } from '@/config/constants' import ErrorCodes from './ErrorCodes' +import { asError } from './utils' export class CodedException extends Error { public readonly code: number @@ -20,10 +21,10 @@ export class CodedException extends Error { return code } - constructor(content: ErrorCodes, extraMessage?: string, context?: CaptureContext) { + constructor(content: ErrorCodes, thrown?: unknown, context?: CaptureContext) { super() - const extraInfo = extraMessage ? ` (${extraMessage})` : '' + const extraInfo = thrown ? ` (${asError(thrown).message})` : '' this.message = `Code ${content}${extraInfo}` this.code = this.getCode(content) this.content = content @@ -55,7 +56,7 @@ export class CodedException extends Error { } } -type ErrorHandler = (content: ErrorCodes, extraMessage?: string, context?: CaptureContext) => CodedException +type ErrorHandler = (content: ErrorCodes, thrown?: unknown, context?: CaptureContext) => CodedException export const logError: ErrorHandler = function logError(...args) { const error = new CodedException(...args) diff --git a/src/services/exceptions/utils.ts b/src/services/exceptions/utils.ts new file mode 100644 index 0000000000..710ac44641 --- /dev/null +++ b/src/services/exceptions/utils.ts @@ -0,0 +1,19 @@ +export const asError = (thrown: unknown): Error => { + if (thrown instanceof Error) { + return thrown + } + + let message: string + + if (typeof thrown === 'string') { + message = thrown + } else { + try { + message = JSON.stringify(thrown) + } catch { + message = String(thrown) + } + } + + return new Error(message) +} diff --git a/src/services/local-storage/Storage.ts b/src/services/local-storage/Storage.ts index 3bbce8b64d..40a58d4a3d 100644 --- a/src/services/local-storage/Storage.ts +++ b/src/services/local-storage/Storage.ts @@ -1,5 +1,6 @@ import { LS_NAMESPACE } from '@/config/constants' import { Errors, logError } from '@/services/exceptions' +import { asError } from '../exceptions/utils' type BrowserStorage = typeof localStorage | typeof sessionStorage @@ -27,7 +28,7 @@ class Storage { try { saved = this.storage?.getItem(fullKey) ?? null } catch (err) { - logError(Errors._700, `key ${key} – ${(err as Error).message}`) + logError(Errors._700, `key ${key} – ${asError(err).message}`) } if (saved == null) return null @@ -35,7 +36,7 @@ class Storage { try { return JSON.parse(saved) as T } catch (err) { - logError(Errors._700, `key ${key} – ${(err as Error).message}`) + logError(Errors._700, `key ${key} – ${asError(err).message}`) } return null } @@ -49,7 +50,7 @@ class Storage { this.storage?.setItem(fullKey, JSON.stringify(item)) } } catch (err) { - logError(Errors._701, `key ${key} – ${(err as Error).message}`) + logError(Errors._701, `key ${key} – ${asError(err).message}`) } } @@ -58,7 +59,7 @@ class Storage { try { this.storage?.removeItem(fullKey) } catch (err) { - logError(Errors._702, `key ${key} – ${(err as Error).message}`) + logError(Errors._702, `key ${key} – ${asError(err).message}`) } } diff --git a/src/services/pairing/hooks.ts b/src/services/pairing/hooks.ts index 377b0858b5..07292eb0f8 100644 --- a/src/services/pairing/hooks.ts +++ b/src/services/pairing/hooks.ts @@ -59,7 +59,7 @@ export const useInitPairing = () => { .then(() => { isConnecting = false }) - .catch((e) => logError(Errors._303, (e as Error).message)) + .catch((e) => logError(Errors._303, e)) }, [canConnect, chain, isSupported, onboard, connector]) useEffect(() => { diff --git a/src/services/safe-apps/AppCommunicator.ts b/src/services/safe-apps/AppCommunicator.ts index 54b2cedb00..0d2e5abdfa 100644 --- a/src/services/safe-apps/AppCommunicator.ts +++ b/src/services/safe-apps/AppCommunicator.ts @@ -1,6 +1,7 @@ import type { MutableRefObject } from 'react' import type { SDKMessageEvent, MethodToResponse, ErrorResponse, RequestId } from '@safe-global/safe-apps-sdk' import { getSDKVersion, Methods, MessageFormatter } from '@safe-global/safe-apps-sdk' +import { asError } from '../exceptions/utils' type MessageHandler = ( msg: SDKMessageEvent, @@ -69,7 +70,7 @@ class AppCommunicator { this.send(response, msg.data.id) } } catch (e) { - const error = e as Error + const error = asError(e) this.send(error.message, msg.data.id, true) this.config?.onError?.(error, msg.data) diff --git a/src/services/safe-messages/safeMsgNotifications.ts b/src/services/safe-messages/safeMsgNotifications.ts index d5456c6bd5..a3956824ba 100644 --- a/src/services/safe-messages/safeMsgNotifications.ts +++ b/src/services/safe-messages/safeMsgNotifications.ts @@ -27,7 +27,7 @@ export const dispatchPreparedSignature = async ( // fetchedMessage does not have a type because it is explicitly a message message = { ...fetchedMessage, type: SafeMessageListItemType.MESSAGE } } catch (err) { - logError(Errors._613, (err as Error).message) + logError(Errors._613, err) throw err } diff --git a/src/services/safe-messages/safeMsgSender.ts b/src/services/safe-messages/safeMsgSender.ts index 8382aa574b..47f0983268 100644 --- a/src/services/safe-messages/safeMsgSender.ts +++ b/src/services/safe-messages/safeMsgSender.ts @@ -7,6 +7,7 @@ import { safeMsgDispatch, SafeMsgEvent } from './safeMsgEvents' import { generateSafeMessageHash, tryOffChainMsgSigning } from '@/utils/safe-messages' import { normalizeTypedData } from '@/utils/web3' import { getAssertedChainSigner } from '@/services/tx/tx-sender/sdk' +import { asError } from '../exceptions/utils' export const dispatchSafeMsgProposal = async ({ onboard, @@ -38,7 +39,7 @@ export const dispatchSafeMsgProposal = async ({ } catch (error) { safeMsgDispatch(SafeMsgEvent.PROPOSE_FAILED, { messageHash, - error: error as Error, + error: asError(error), }) throw error @@ -70,7 +71,7 @@ export const dispatchSafeMsgConfirmation = async ({ } catch (error) { safeMsgDispatch(SafeMsgEvent.CONFIRM_PROPOSE_FAILED, { messageHash, - error: error as Error, + error: asError(error), }) throw error diff --git a/src/services/security/modules/ApprovalModule/index.ts b/src/services/security/modules/ApprovalModule/index.ts index b2b8087da6..3fc3238f6d 100644 --- a/src/services/security/modules/ApprovalModule/index.ts +++ b/src/services/security/modules/ApprovalModule/index.ts @@ -21,7 +21,7 @@ const MULTISEND_SIGNATURE_HASH = id('multiSend(bytes)').slice(0, 10) const ERC20_INTERFACE = ERC20__factory.createInterface() export class ApprovalModule implements SecurityModule<ApprovalModuleRequest, ApprovalModuleResponse> { - private scanInnerTransaction(txPartial: { to: string; data: string }): Approval[] { + private static scanInnerTransaction(txPartial: { to: string; data: string }): Approval[] { if (txPartial.data.startsWith(APPROVAL_SIGNATURE_HASH)) { const [spender, amount] = ERC20_INTERFACE.decodeFunctionData('approve', txPartial.data) return [ @@ -35,16 +35,16 @@ export class ApprovalModule implements SecurityModule<ApprovalModuleRequest, App return [] } - async scanTransaction(request: ApprovalModuleRequest): Promise<SecurityResponse<ApprovalModuleResponse>> { + scanTransaction(request: ApprovalModuleRequest): SecurityResponse<ApprovalModuleResponse> { const { safeTransaction } = request const safeTxData = safeTransaction.data.data const approvalInfos: Approval[] = [] if (safeTxData.startsWith(MULTISEND_SIGNATURE_HASH)) { const innerTxs = decodeMultiSendTxs(safeTxData) - approvalInfos.push(...innerTxs.flatMap((tx) => this.scanInnerTransaction(tx))) + approvalInfos.push(...innerTxs.flatMap((tx) => ApprovalModule.scanInnerTransaction(tx))) } else { - approvalInfos.push(...this.scanInnerTransaction({ to: safeTransaction.data.to, data: safeTxData })) + approvalInfos.push(...ApprovalModule.scanInnerTransaction({ to: safeTransaction.data.to, data: safeTxData })) } if (approvalInfos.length > 0) { diff --git a/src/services/security/modules/types.ts b/src/services/security/modules/types.ts index 4c46aafac3..415fe2cd0a 100644 --- a/src/services/security/modules/types.ts +++ b/src/services/security/modules/types.ts @@ -17,5 +17,5 @@ export type SecurityResponse<Res> = } export interface SecurityModule<Req, Res> { - scanTransaction(request: Req): Promise<SecurityResponse<Res>> + scanTransaction(request: Req): Promise<SecurityResponse<Res>> | SecurityResponse<Res> } diff --git a/src/services/tx/__tests__/spendingLimitParams.test.ts b/src/services/tx/__tests__/spendingLimitParams.test.ts index eb8b6e4b4f..28ed94fe03 100644 --- a/src/services/tx/__tests__/spendingLimitParams.test.ts +++ b/src/services/tx/__tests__/spendingLimitParams.test.ts @@ -1,4 +1,4 @@ -import type { NewSpendingLimitData } from '@/components/settings/SpendingLimits/NewSpendingLimit' +import type { NewSpendingLimitFlowProps } from '@/components/tx-flow/flows/NewSpendingLimit' import { ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' import * as safeCoreSDK from '@/hooks/coreSDK/safeCoreSDK' import * as spendingLimit from '@/services/contracts/spendingLimitContracts' @@ -8,7 +8,7 @@ import type Safe from '@safe-global/safe-core-sdk' import type { SpendingLimitState } from '@/store/spendingLimitsSlice' import { createNewSpendingLimitTx } from '@/services/tx/tx-sender' -const mockData: NewSpendingLimitData = { +const mockData: NewSpendingLimitFlowProps = { beneficiary: ZERO_ADDRESS, tokenAddress: ZERO_ADDRESS, amount: '1', diff --git a/src/services/tx/tx-sender/index.test.ts b/src/services/tx/tx-sender/__tests__/ts-sender.test.ts similarity index 93% rename from src/services/tx/tx-sender/index.test.ts rename to src/services/tx/tx-sender/__tests__/ts-sender.test.ts index a82de18537..23965f53a6 100644 --- a/src/services/tx/tx-sender/index.test.ts +++ b/src/services/tx/tx-sender/__tests__/ts-sender.test.ts @@ -2,10 +2,10 @@ import { setSafeSDK } from '@/hooks/coreSDK/safeCoreSDK' import type Safe from '@safe-global/safe-core-sdk' import { type TransactionResult } from '@safe-global/safe-core-sdk-types' import { type TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' -import { getTransactionDetails, postSafeGasEstimation } from '@safe-global/safe-gateway-typescript-sdk' -import extractTxInfo from '../extractTxInfo' -import proposeTx from '../proposeTransaction' -import * as txEvents from '../txEvents' +import { getTransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' +import extractTxInfo from '../../extractTxInfo' +import proposeTx from '../../proposeTransaction' +import * as txEvents from '../../txEvents' import { createExistingTx, createRejectTx, @@ -14,7 +14,7 @@ import { dispatchTxProposal, dispatchTxSigning, dispatchBatchExecutionRelay, -} from '.' +} from '..' import { ErrorCode } from '@ethersproject/logger' import { waitFor } from '@/tests/test-utils' import { ethers } from 'ethers' @@ -41,7 +41,7 @@ jest.mock('@safe-global/safe-gateway-typescript-sdk', () => ({ })) // Mock extractTxInfo -jest.mock('../extractTxInfo', () => ({ +jest.mock('../../extractTxInfo', () => ({ __esModule: true, default: jest.fn(() => ({ txParams: {}, @@ -50,7 +50,7 @@ jest.mock('../extractTxInfo', () => ({ })) // Mock proposeTx -jest.mock('../proposeTransaction', () => ({ +jest.mock('../../proposeTransaction', () => ({ __esModule: true, default: jest.fn(() => Promise.resolve({ txId: '123' })), })) @@ -141,6 +141,7 @@ describe('txSender', () => { to: '0x123', value: '1', data: '0x0', + safeTxGas: 60000, } await createTx(txParams) @@ -148,7 +149,6 @@ describe('txSender', () => { to: '0x123', value: '1', data: '0x0', - nonce: 17, safeTxGas: 60000, } expect(mockSafeSDK.createTransaction).toHaveBeenCalledWith({ safeTransactionData }) @@ -171,26 +171,6 @@ describe('txSender', () => { } expect(mockSafeSDK.createTransaction).toHaveBeenCalledWith({ safeTransactionData }) }) - - it('should create a tx with initial txParams if gas estimation fails', async () => { - // override postSafeGasEstimation default implementation - ;(postSafeGasEstimation as jest.Mock) - .mockImplementationOnce(() => Promise.reject(new Error('Failed to retrieve recommended nonce #1'))) - .mockImplementationOnce(() => Promise.reject(new Error('Failed to retrieve recommended nonce #2'))) - - const txParams = { - to: '0x123', - value: '1', - data: '0x0', - } - await createTx(txParams) - - // Shallow copy of txParams - const safeTransactionData = Object.assign({}, txParams) - - // calls SDK createTransaction withouth recommended nonce - expect(mockSafeSDK.createTransaction).toHaveBeenCalledWith({ safeTransactionData }) - }) }) describe('createExistingTx', () => { @@ -534,7 +514,7 @@ describe('txSender', () => { await waitFor(() => expect(txEvents.txDispatch).toHaveBeenCalledWith('FAILED', { txId: 'tx_id_123', - error: { code: ErrorCode.TRANSACTION_REPLACED, reason: 'cancelled' }, + error: new Error(JSON.stringify({ code: ErrorCode.TRANSACTION_REPLACED, reason: 'cancelled' })), }), ) }) diff --git a/src/services/tx/tx-sender/create.ts b/src/services/tx/tx-sender/create.ts index 79031b41ed..bf4073c209 100644 --- a/src/services/tx/tx-sender/create.ts +++ b/src/services/tx/tx-sender/create.ts @@ -1,121 +1,56 @@ -import { isLegacyVersion } from '@/hooks/coreSDK/safeCoreSDK' -import { Errors, logError } from '@/services/exceptions' -import type { SafeTransactionEstimation, TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' -import { getTransactionDetails, Operation, postSafeGasEstimation } from '@safe-global/safe-gateway-typescript-sdk' +import type { TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' +import { getTransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' import type { AddOwnerTxParams, RemoveOwnerTxParams, SwapOwnerTxParams } from '@safe-global/safe-core-sdk' import type { MetaTransactionData, SafeTransaction, SafeTransactionDataPartial } from '@safe-global/safe-core-sdk-types' -import { EMPTY_DATA } from '@safe-global/safe-core-sdk/dist/src/utils/constants' import extractTxInfo from '../extractTxInfo' import { getAndValidateSafeSDK } from './sdk' -import type Safe from '@safe-global/safe-core-sdk' - -const estimateSafeTxGas = async ( - chainId: string, - safeAddress: string, - txParams: MetaTransactionData, -): Promise<SafeTransactionEstimation> => { - return postSafeGasEstimation(chainId, safeAddress, { - to: txParams.to, - value: txParams.value, - data: txParams.data, - operation: (txParams.operation as unknown as Operation) || Operation.CALL, - }) -} - -const getRecommendedTxParams = async ( - txParams: SafeTransactionDataPartial, -): Promise<{ nonce: number; safeTxGas: number } | undefined> => { - const safeSDK = getAndValidateSafeSDK() - const chainId = await safeSDK.getChainId() - const safeAddress = safeSDK.getAddress() - const contractVersion = await safeSDK.getContractVersion() - const isSafeTxGasRequired = isLegacyVersion(contractVersion) - - let estimation: SafeTransactionEstimation | undefined - - try { - estimation = await estimateSafeTxGas(String(chainId), safeAddress, txParams) - } catch (e) { - try { - // If the initial transaction data causes the estimation to fail, - // we retry the request with a cancellation transaction to get the - // recommendedNonce, even if the original transaction will likely fail - const cancellationTxParams = { ...txParams, data: EMPTY_DATA, to: safeAddress, value: '0' } - estimation = await estimateSafeTxGas(String(chainId), safeAddress, cancellationTxParams) - } catch (e) { - logError(Errors._616, (e as Error).message) - return - } - } - - return { - nonce: estimation.recommendedNonce, - safeTxGas: isSafeTxGasRequired ? Number(estimation.safeTxGas) : 0, - } -} /** * Create a transaction from raw params */ export const createTx = async (txParams: SafeTransactionDataPartial, nonce?: number): Promise<SafeTransaction> => { + if (nonce !== undefined) txParams = { ...txParams, nonce } const safeSDK = getAndValidateSafeSDK() - - // If the nonce is not provided, we get the recommended one - if (nonce === undefined) { - const recParams = (await getRecommendedTxParams(txParams)) || {} - txParams = { ...txParams, ...recParams } - } else { - // Otherwise, we use the provided one - txParams = { ...txParams, nonce } - } - return safeSDK.createTransaction({ safeTransactionData: txParams }) } -const withRecommendedNonce = async ( - createFn: (safeSDK: Safe) => Promise<SafeTransaction>, -): Promise<SafeTransaction> => { - const safeSDK = getAndValidateSafeSDK() - const tx = await createFn(safeSDK) - return createTx(tx.data) -} - /** * Create a multiSendCallOnly transaction from an array of MetaTransactionData and options - * * If only one tx is passed it will be created without multiSend and without onlyCalls. */ export const createMultiSendCallOnlyTx = async (txParams: MetaTransactionData[]): Promise<SafeTransaction> => { - return withRecommendedNonce((safeSDK) => - safeSDK.createTransaction({ - safeTransactionData: txParams, - onlyCalls: true, - }), - ) + const safeSDK = getAndValidateSafeSDK() + return safeSDK.createTransaction({ safeTransactionData: txParams, onlyCalls: true }) } export const createRemoveOwnerTx = async (txParams: RemoveOwnerTxParams): Promise<SafeTransaction> => { - return withRecommendedNonce((safeSDK) => safeSDK.createRemoveOwnerTx(txParams)) + const safeSDK = getAndValidateSafeSDK() + return safeSDK.createRemoveOwnerTx(txParams) } export const createAddOwnerTx = async (txParams: AddOwnerTxParams): Promise<SafeTransaction> => { - return withRecommendedNonce((safeSDK) => safeSDK.createAddOwnerTx(txParams)) + const safeSDK = getAndValidateSafeSDK() + return safeSDK.createAddOwnerTx(txParams) } export const createSwapOwnerTx = async (txParams: SwapOwnerTxParams): Promise<SafeTransaction> => { - return withRecommendedNonce((safeSDK) => safeSDK.createSwapOwnerTx(txParams)) + const safeSDK = getAndValidateSafeSDK() + return safeSDK.createSwapOwnerTx(txParams) } export const createUpdateThresholdTx = async (threshold: number): Promise<SafeTransaction> => { - return withRecommendedNonce((safeSDK) => safeSDK.createChangeThresholdTx(threshold)) + const safeSDK = getAndValidateSafeSDK() + return safeSDK.createChangeThresholdTx(threshold) } export const createRemoveModuleTx = async (moduleAddress: string): Promise<SafeTransaction> => { - return withRecommendedNonce((safeSDK) => safeSDK.createDisableModuleTx(moduleAddress)) + const safeSDK = getAndValidateSafeSDK() + return safeSDK.createDisableModuleTx(moduleAddress) } export const createRemoveGuardTx = async (): Promise<SafeTransaction> => { - return withRecommendedNonce((safeSDK) => safeSDK.createDisableGuardTx()) + const safeSDK = getAndValidateSafeSDK() + return safeSDK.createDisableGuardTx() } /** diff --git a/src/services/tx/tx-sender/dispatch.ts b/src/services/tx/tx-sender/dispatch.ts index 0a05153bda..85cdb18014 100644 --- a/src/services/tx/tx-sender/dispatch.ts +++ b/src/services/tx/tx-sender/dispatch.ts @@ -3,7 +3,7 @@ import type { SafeTransaction, TransactionOptions, TransactionResult } from '@sa import type { EthersError } from '@/utils/ethers-utils' import { didReprice, didRevert } from '@/utils/ethers-utils' import type MultiSendCallOnlyEthersContract from '@safe-global/safe-ethers-lib/dist/src/contracts/MultiSendCallOnly/MultiSendCallOnlyEthersContract' -import type { SpendingLimitTxParams } from '@/components/tx/modals/TokenTransferModal/ReviewSpendingLimitTx' +import { type SpendingLimitTxParams } from '@/components/tx-flow/flows/TokenTransfer/ReviewSpendingLimitTx' import { getSpendingLimitContract } from '@/services/contracts/spendingLimitContracts' import type { ContractTransaction, PayableOverrides } from 'ethers' import type { RequestId } from '@safe-global/safe-apps-sdk' @@ -21,6 +21,7 @@ import { } from './sdk' import { createWeb3 } from '@/hooks/wallets/web3' import { type OnboardAPI } from '@web3-onboard/core' +import { asError } from '@/services/exceptions/utils' /** * Propose a transaction @@ -49,9 +50,9 @@ export const dispatchTxProposal = async ({ proposedTx = await proposeTx(chainId, safeAddress, sender, safeTx, safeTxHash, origin) } catch (error) { if (txId) { - txDispatch(TxEvent.SIGNATURE_PROPOSE_FAILED, { txId, error: error as Error }) + txDispatch(TxEvent.SIGNATURE_PROPOSE_FAILED, { txId, error: asError(error) }) } else { - txDispatch(TxEvent.PROPOSE_FAILED, { error: error as Error }) + txDispatch(TxEvent.PROPOSE_FAILED, { error: asError(error) }) } throw error } @@ -80,7 +81,7 @@ export const dispatchTxSigning = async ( try { signedTx = await tryOffChainTxSigning(safeTx, safeVersion, sdk) } catch (error) { - txDispatch(TxEvent.SIGN_FAILED, { txId, error: error as Error }) + txDispatch(TxEvent.SIGN_FAILED, { txId, error: asError(error) }) throw error } @@ -108,7 +109,7 @@ export const dispatchOnChainSigning = async ( await sdkUnchecked.approveTransactionHash(safeTxHash) txDispatch(TxEvent.ONCHAIN_SIGNATURE_REQUESTED, eventParams) } catch (err) { - txDispatch(TxEvent.FAILED, { ...eventParams, error: err as Error }) + txDispatch(TxEvent.FAILED, { ...eventParams, error: asError(err) }) throw err } @@ -138,7 +139,7 @@ export const dispatchTxExecution = async ( result = await sdkUnchecked.executeTransaction(safeTx, txOptions) txDispatch(TxEvent.EXECUTING, eventParams) } catch (error) { - txDispatch(TxEvent.FAILED, { ...eventParams, error: error as Error }) + txDispatch(TxEvent.FAILED, { ...eventParams, error: asError(error) }) throw error } @@ -160,7 +161,7 @@ export const dispatchTxExecution = async ( if (didReprice(error)) { txDispatch(TxEvent.PROCESSED, { ...eventParams, safeAddress }) } else { - txDispatch(TxEvent.FAILED, { ...eventParams, error: error as Error }) + txDispatch(TxEvent.FAILED, { ...eventParams, error: asError(error) }) } }) @@ -191,7 +192,7 @@ export const dispatchBatchExecution = async ( }) } catch (err) { txs.forEach(({ txId }) => { - txDispatch(TxEvent.FAILED, { txId, error: err as Error, groupKey }) + txDispatch(TxEvent.FAILED, { txId, error: asError(err), groupKey }) }) throw err } @@ -232,7 +233,7 @@ export const dispatchBatchExecution = async ( txs.forEach(({ txId }) => { txDispatch(TxEvent.FAILED, { txId, - error: err as Error, + error: asError(err), groupKey, }) }) @@ -270,7 +271,7 @@ export const dispatchSpendingLimitTxExecution = async ( ) txDispatch(TxEvent.EXECUTING, { groupKey: id }) } catch (error) { - txDispatch(TxEvent.FAILED, { groupKey: id, error: error as Error }) + txDispatch(TxEvent.FAILED, { groupKey: id, error: asError(error) }) throw error } @@ -289,7 +290,7 @@ export const dispatchSpendingLimitTxExecution = async ( } }) .catch((error) => { - txDispatch(TxEvent.FAILED, { groupKey: id, error: error as Error }) + txDispatch(TxEvent.FAILED, { groupKey: id, error: asError(error) }) }) return result?.hash @@ -341,7 +342,7 @@ export const dispatchTxRelay = async ( // Monitor relay tx waitForRelayedTx(taskId, [txId], safe.address.value) } catch (error) { - txDispatch(TxEvent.FAILED, { txId, error: error as Error }) + txDispatch(TxEvent.FAILED, { txId, error: asError(error) }) throw error } } @@ -368,7 +369,7 @@ export const dispatchBatchExecutionRelay = async ( txs.forEach(({ txId }) => { txDispatch(TxEvent.FAILED, { txId, - error: error as Error, + error: asError(error), groupKey, }) }) diff --git a/src/services/tx/tx-sender/recommendedNonce.ts b/src/services/tx/tx-sender/recommendedNonce.ts new file mode 100644 index 0000000000..a1697e2372 --- /dev/null +++ b/src/services/tx/tx-sender/recommendedNonce.ts @@ -0,0 +1,50 @@ +import type { SafeTransactionEstimation } from '@safe-global/safe-gateway-typescript-sdk' +import { Operation, postSafeGasEstimation } from '@safe-global/safe-gateway-typescript-sdk' +import type { MetaTransactionData, SafeTransactionDataPartial } from '@safe-global/safe-core-sdk-types' +import { isLegacyVersion } from '@/hooks/coreSDK/safeCoreSDK' +import { Errors, logError } from '@/services/exceptions' +import { getAndValidateSafeSDK } from './sdk' +import { EMPTY_DATA } from '@safe-global/safe-core-sdk/dist/src/utils/constants' + +const fetchRecommendedParams = async ( + chainId: string, + safeAddress: string, + txParams: MetaTransactionData, +): Promise<SafeTransactionEstimation> => { + return postSafeGasEstimation(chainId, safeAddress, { + to: txParams.to, + value: txParams.value, + data: txParams.data, + operation: (txParams.operation as unknown as Operation) || Operation.CALL, + }) +} + +export const getSafeTxGas = async ( + chainId: string, + safeAddress: string, + safeTxData: SafeTransactionDataPartial, +): Promise<number | undefined> => { + const safeSDK = getAndValidateSafeSDK() + const contractVersion = await safeSDK.getContractVersion() + const isSafeTxGasRequired = isLegacyVersion(contractVersion) + + // For 1.3.0+ Safes safeTxGas is not required + if (!isSafeTxGasRequired) return 0 + + try { + const estimation = await fetchRecommendedParams(chainId, safeAddress, safeTxData) + return Number(estimation.safeTxGas) + } catch (e) { + logError(Errors._616, e) + } +} + +export const getRecommendedNonce = async (chainId: string, safeAddress: string): Promise<number | undefined> => { + const blankTxParams = { data: EMPTY_DATA, to: safeAddress, value: '0' } + try { + const estimation = await fetchRecommendedParams(chainId, safeAddress, blankTxParams) + return Number(estimation.recommendedNonce) + } catch (e) { + logError(Errors._616, e) + } +} diff --git a/src/services/tx/tx-sender/sdk.ts b/src/services/tx/tx-sender/sdk.ts index 529711770e..331e28e8a6 100644 --- a/src/services/tx/tx-sender/sdk.ts +++ b/src/services/tx/tx-sender/sdk.ts @@ -13,6 +13,7 @@ import { connectWallet, getConnectedWallet } from '@/hooks/wallets/useOnboard' import { type OnboardAPI } from '@web3-onboard/core' import type { ConnectedWallet } from '@/services/onboard' import type { JsonRpcSigner } from '@ethersproject/providers' +import { asError } from '@/services/exceptions/utils' export const getAndValidateSafeSDK = (): Safe => { const safeSDK = getSafeSDK() @@ -146,7 +147,7 @@ export const tryOffChainTxSigning = async ( } catch (error) { const isLastSigningMethod = i === signingMethods.length - 1 - if (isWalletRejection(error as Error) || isLastSigningMethod) { + if (isWalletRejection(asError(error)) || isLastSigningMethod) { throw error } } diff --git a/src/services/tx/txMonitor.ts b/src/services/tx/txMonitor.ts index 190abf80ee..b75ac03f8d 100644 --- a/src/services/tx/txMonitor.ts +++ b/src/services/tx/txMonitor.ts @@ -6,6 +6,7 @@ import type { JsonRpcProvider } from '@ethersproject/providers' import { POLLING_INTERVAL } from '@/config/constants' import { Errors, logError } from '@/services/exceptions' import { SafeCreationStatus } from '@/components/new-safe/create/steps/StatusStep/useSafeCreation' +import { asError } from '../exceptions/utils' // Provider must be passed as an argument as it is undefined until initialised by `useInitWeb3` export const waitForTx = async (provider: JsonRpcProvider, txId: string, txHash: string) => { @@ -33,7 +34,7 @@ export const waitForTx = async (provider: JsonRpcProvider, txId: string, txHash: } catch (error) { txDispatch(TxEvent.FAILED, { txId, - error: error as Error, + error: asError(error), }) } } @@ -81,7 +82,7 @@ const getRelayTxStatus = async (taskId: string): Promise<{ task: TransactionStat }) }) } catch (error) { - logError(Errors._632, (error as Error).message) + logError(Errors._632, error) return } diff --git a/src/styles/accordion.module.css b/src/styles/accordion.module.css new file mode 100644 index 0000000000..296751c2a5 --- /dev/null +++ b/src/styles/accordion.module.css @@ -0,0 +1,5 @@ +/* TODO: Apply this style in the MUI theme once its part of this repository */ + +.accordion { + min-height: 56px !important; +} diff --git a/src/styles/globals.css b/src/styles/globals.css index f828e0bf22..1734b5b58e 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -74,7 +74,7 @@ input[type='number'] { stroke: var(--color-logo-background); } -@media (max-width: 600px) { +@media (max-width: 599.95px) { .sticky { position: sticky; right: 0; diff --git a/src/styles/inputs.module.css b/src/styles/inputs.module.css new file mode 100644 index 0000000000..0793279324 --- /dev/null +++ b/src/styles/inputs.module.css @@ -0,0 +1,35 @@ +/* TODO: Apply these styles in the MUI theme once its part of this repository */ +.input :global .MuiFormHelperText-root { + position: absolute; + bottom: -20px; +} + +.input :global .MuiFormLabel-root:not(.MuiInputLabel-shrink) { + transform: translate(16px, 22px) scale(1); +} + +.input :global .MuiInputBase-root { + background-color: var(--color-background-paper); + border-radius: 6px; + height: 66px; + padding: 12px var(--space-2); +} + +.input input { + padding: 0; +} + +.input :global .MuiInputBase-root fieldset { + border-width: 1px !important; +} + +.input :global .MuiInputBase-root:not(.Mui-error) fieldset { + border-color: var(--color-border-light) !important; +} + +@media (max-width: 899.95px) { + .input :global .MuiFormHelperText-root { + position: relative; + bottom: 0; + } +} diff --git a/src/tests/mocks/transactions.ts b/src/tests/mocks/transactions.ts new file mode 100644 index 0000000000..cc61f95847 --- /dev/null +++ b/src/tests/mocks/transactions.ts @@ -0,0 +1,60 @@ +import { + type AddressEx, + ConflictType, + DetailedExecutionInfoType, + type MultisigExecutionInfo, + type Transaction, + type TransactionInfo, + TransactionInfoType, + TransactionListItemType, + TransactionStatus, + type TransactionSummary, + TransactionTokenType, + TransferDirection, + type TransferInfo, +} from '@safe-global/safe-gateway-typescript-sdk' + +const mockAddressEx: AddressEx = { + value: 'string', +} + +const mockTransferInfo: TransferInfo = { + type: TransactionTokenType.ERC20, + tokenAddress: 'string', + value: 'string', +} + +const mockTxInfo: TransactionInfo = { + type: TransactionInfoType.TRANSFER, + sender: mockAddressEx, + recipient: mockAddressEx, + direction: TransferDirection.OUTGOING, + transferInfo: mockTransferInfo, +} + +export const defaultTx: TransactionSummary = { + id: '', + timestamp: 0, + txInfo: mockTxInfo, + txStatus: TransactionStatus.AWAITING_CONFIRMATIONS, + executionInfo: { + type: DetailedExecutionInfoType.MULTISIG, + nonce: 1, + confirmationsRequired: 2, + confirmationsSubmitted: 2, + }, +} + +export const getMockTx = ({ nonce }: { nonce?: number }): Transaction => { + return { + transaction: { + ...defaultTx, + executionInfo: { + ...defaultTx.executionInfo, + nonce: nonce ?? (defaultTx.executionInfo as MultisigExecutionInfo).nonce, + } as MultisigExecutionInfo, + }, + type: TransactionListItemType.TRANSACTION, + conflictType: ConflictType.NONE, + } +} diff --git a/src/tests/pages/apps-share.test.tsx b/src/tests/pages/apps-share.test.tsx index 915261b68c..598c6bb95b 100644 --- a/src/tests/pages/apps-share.test.tsx +++ b/src/tests/pages/apps-share.test.tsx @@ -108,7 +108,7 @@ describe('Share Safe App Page', () => { render(<ShareSafeApp />, { routerProps: { query: { - appUrl: 'https://apps.gnosis-safe.io/tx-builder/', + appUrl: 'https://apps-portal.safe.global/tx-builder/', chain: 'rin', }, }, diff --git a/src/utils/ethers-utils.ts b/src/utils/ethers-utils.ts index 90c8063a3d..5b611b706a 100644 --- a/src/utils/ethers-utils.ts +++ b/src/utils/ethers-utils.ts @@ -8,7 +8,7 @@ export enum EthersTxReplacedReason { replaced = 'replaced', } -// TODO: Replace this with ethers v6 types once released +// TODO: Replace this with ethers v6 types once released and create similar helper to `asError` export type EthersError = Error & { code: ErrorCode; reason?: EthersTxReplacedReason; receipt?: TransactionReceipt } export const didRevert = (receipt: EthersError['receipt']): boolean => { diff --git a/src/utils/safe-messages.ts b/src/utils/safe-messages.ts index c83956bd50..123764b175 100644 --- a/src/utils/safe-messages.ts +++ b/src/utils/safe-messages.ts @@ -17,6 +17,7 @@ import { } from '@safe-global/safe-gateway-typescript-sdk' import { hasFeature } from './chains' +import { asError } from '@/services/exceptions/utils' /* * From v1.3.0, EIP-1271 support was moved to the CompatibilityFallbackHandler. @@ -131,7 +132,7 @@ export const tryOffChainMsgSigning = async ( } catch (error) { const isLastSigningMethod = i === signingMethods.length - 1 - if (isWalletRejection(error as Error) || isLastSigningMethod) { + if (isWalletRejection(asError(error)) || isLastSigningMethod) { throw error } } diff --git a/src/utils/transactions.ts b/src/utils/transactions.ts index f5dd81f4a2..c6a8dbd856 100644 --- a/src/utils/transactions.ts +++ b/src/utils/transactions.ts @@ -22,7 +22,7 @@ import { OperationType } from '@safe-global/safe-core-sdk-types/dist/src/types' import { getReadOnlyGnosisSafeContract } from '@/services/contracts/safeContracts' import extractTxInfo from '@/services/tx/extractTxInfo' import type { AdvancedParameters } from '@/components/tx/AdvancedParams' -import type { TransactionOptions, SafeTransaction } from '@safe-global/safe-core-sdk-types' +import type { SafeTransaction, TransactionOptions } from '@safe-global/safe-core-sdk-types' import { FEATURES, hasFeature } from '@/utils/chains' import uniqBy from 'lodash/uniqBy' import { Errors, logError } from '@/services/exceptions' @@ -30,6 +30,7 @@ import { Multi_send__factory } from '@/types/contracts' import { ethers } from 'ethers' import { type BaseTransaction } from '@safe-global/safe-apps-sdk' import { id } from 'ethers/lib/utils' +import { isEmptyHexData } from '@/utils/hex' export const makeTxFromDetails = (txDetails: TransactionDetails): Transaction => { const getMissingSigners = ({ @@ -188,7 +189,7 @@ export const getTxOrigin = (app?: SafeAppData): string | undefined => { try { origin = JSON.stringify({ name: app.name, url: app.url }) } catch (e) { - logError(Errors._808, (e as Error).message) + logError(Errors._808, e) } return origin @@ -266,3 +267,7 @@ export const decodeMultiSendTxs = (encodedMultiSendData: string): BaseTransactio return txs } + +export const isRejectionTx = (tx?: SafeTransaction) => { + return !!tx && !!tx.data.data && !!isEmptyHexData(tx.data.data) && tx.data.value === '0' +} diff --git a/yarn.lock b/yarn.lock index 7c8ab02687..95a1f994e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1003,10 +1003,10 @@ dependencies: regenerator-runtime "^0.13.11" -"@babel/runtime@^7.20.13": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" - integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== +"@babel/runtime@^7.21.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" + integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== dependencies: regenerator-runtime "^0.13.11" @@ -1178,6 +1178,17 @@ "@emotion/weak-memoize" "^0.3.0" stylis "4.1.3" +"@emotion/cache@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" + integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + stylis "4.2.0" + "@emotion/hash@^0.9.0": version "0.9.0" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" @@ -1190,11 +1201,23 @@ dependencies: "@emotion/memoize" "^0.8.0" +"@emotion/is-prop-valid@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" + integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/memoize@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + "@emotion/react@^11.10.0": version "11.10.5" resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.5.tgz#95fff612a5de1efa9c0d535384d3cfa115fe175d" @@ -1235,6 +1258,11 @@ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== +"@emotion/sheet@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" + integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + "@emotion/styled@^11.10.0": version "11.10.5" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.5.tgz#1fe7bf941b0909802cb826457e362444e7e96a79" @@ -1262,11 +1290,21 @@ resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== + "@emotion/weak-memoize@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + "@eslint/eslintrc@^1.4.1": version "1.4.1" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" @@ -2727,24 +2765,24 @@ "@motionone/dom" "^10.16.2" tslib "^2.3.1" -"@mui/base@5.0.0-alpha.118": - version "5.0.0-alpha.118" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.118.tgz#335e7496ea605c9b7bda4164efb2da3f09f36dfc" - integrity sha512-GAEpqhnuHjRaAZLdxFNuOf2GDTp9sUawM46oHZV4VnYPFjXJDkIYFWfIQLONb0nga92OiqS5DD/scGzVKCL0Mw== +"@mui/base@5.0.0-beta.4": + version "5.0.0-beta.4" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.4.tgz#e3f4f4a056b88ab357194a245e223177ce35e0b0" + integrity sha512-ejhtqYJpjDgHGEljjMBQWZ22yEK0OzIXNa7toJmmXsP4TT3W7xVy8bTJ0TniPDf+JNjrsgfgiFTDGdlEhV1E+g== dependencies: - "@babel/runtime" "^7.20.13" - "@emotion/is-prop-valid" "^1.2.0" - "@mui/types" "^7.2.3" - "@mui/utils" "^5.11.9" - "@popperjs/core" "^2.11.6" + "@babel/runtime" "^7.21.0" + "@emotion/is-prop-valid" "^1.2.1" + "@mui/types" "^7.2.4" + "@mui/utils" "^5.13.1" + "@popperjs/core" "^2.11.8" clsx "^1.2.1" prop-types "^15.8.1" react-is "^18.2.0" -"@mui/core-downloads-tracker@^5.11.9": - version "5.11.9" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.9.tgz#0d3b20c2ef7704537c38597f9ecfc1894fe7c367" - integrity sha512-YGEtucQ/Nl91VZkzYaLad47Cdui51n/hW+OQm4210g4N3/nZzBxmGeKfubEalf+ShKH4aYDS86XTO6q/TpZnjQ== +"@mui/core-downloads-tracker@^5.13.4": + version "5.13.4" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.13.4.tgz#7e4b491d8081b6d45ae51556d82cb16b31315a19" + integrity sha512-yFrMWcrlI0TqRN5jpb6Ma9iI7sGTHpytdzzL33oskFHNQ8UgrtPas33Y1K7sWAMwCrr1qbWDrOHLAQG4tAzuSw== "@mui/icons-material@^5.8.4": version "5.11.0" @@ -2753,61 +2791,61 @@ dependencies: "@babel/runtime" "^7.20.6" -"@mui/material@^5.11.10": - version "5.11.10" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.11.10.tgz#d1a7e1691b36eb6aab0f41a82e9c5c564699f599" - integrity sha512-hs1WErbiedqlJIZsljgoil908x4NMp8Lfk8di+5c7o809roqKcFTg2+k3z5ucKvs29AXcsdXrDB/kn2K6dGYIw== - dependencies: - "@babel/runtime" "^7.20.13" - "@mui/base" "5.0.0-alpha.118" - "@mui/core-downloads-tracker" "^5.11.9" - "@mui/system" "^5.11.9" - "@mui/types" "^7.2.3" - "@mui/utils" "^5.11.9" - "@types/react-transition-group" "^4.4.5" +"@mui/material@^5.13.5": + version "5.13.5" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.13.5.tgz#c14f14824f3a37ae0c5ebddbc0034956bc6fec30" + integrity sha512-eMay+Ue1OYXOFMQA5Aau7qbAa/kWHLAyi0McsbPTWssCbGehqkF6CIdPsfVGw6tlO+xPee1hUitphHJNL3xpOQ== + dependencies: + "@babel/runtime" "^7.21.0" + "@mui/base" "5.0.0-beta.4" + "@mui/core-downloads-tracker" "^5.13.4" + "@mui/system" "^5.13.5" + "@mui/types" "^7.2.4" + "@mui/utils" "^5.13.1" + "@types/react-transition-group" "^4.4.6" clsx "^1.2.1" - csstype "^3.1.1" + csstype "^3.1.2" prop-types "^15.8.1" react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.11.9": - version "5.11.9" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.11.9.tgz#ce3f7b7fa7de3e8d6b2a3132a22bffd6bfaabe9b" - integrity sha512-XMyVIFGomVCmCm92EvYlgq3zrC9K+J6r7IKl/rBJT2/xVYoRY6uM7jeB+Wxh7kXxnW9Dbqsr2yL3cx6wSD1sAg== +"@mui/private-theming@^5.13.1": + version "5.13.1" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.13.1.tgz#c3e9a0b44f9c5a51b92cfcfb660536060cb61ed7" + integrity sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ== dependencies: - "@babel/runtime" "^7.20.13" - "@mui/utils" "^5.11.9" + "@babel/runtime" "^7.21.0" + "@mui/utils" "^5.13.1" prop-types "^15.8.1" -"@mui/styled-engine@^5.11.9": - version "5.11.9" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.11.9.tgz#105da848163b993522de0deaada82e10ad357194" - integrity sha512-bkh2CjHKOMy98HyOc8wQXEZvhOmDa/bhxMUekFX5IG0/w4f5HJ8R6+K6nakUUYNEgjOWPYzNPrvGB8EcGbhahQ== +"@mui/styled-engine@^5.13.2": + version "5.13.2" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.13.2.tgz#c87bd61c0ab8086d34828b6defe97c02bcd642ef" + integrity sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw== dependencies: - "@babel/runtime" "^7.20.13" - "@emotion/cache" "^11.10.5" - csstype "^3.1.1" + "@babel/runtime" "^7.21.0" + "@emotion/cache" "^11.11.0" + csstype "^3.1.2" prop-types "^15.8.1" -"@mui/system@^5.11.9": - version "5.11.9" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.11.9.tgz#61f83c538cb4bb9383bcfb39734d9d22ae11c3e7" - integrity sha512-h6uarf+l3FO6l75Nf7yO+qDGrIoa1DM9nAMCUFZQsNCDKOInRzcptnm8M1w/Z3gVetfeeGoIGAYuYKbft6KZZA== +"@mui/system@^5.13.5": + version "5.13.5" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.13.5.tgz#9f67ea0c4f6974713f90b7b94c999fd3f40f8de3" + integrity sha512-n0gzUxoZ2ZHZgnExkh2Htvo9uW2oakofgPRQrDoa/GQOWyRD0NH9MDszBwOb6AAoXZb+OV5TE7I4LeZ/dzgHYA== dependencies: - "@babel/runtime" "^7.20.13" - "@mui/private-theming" "^5.11.9" - "@mui/styled-engine" "^5.11.9" - "@mui/types" "^7.2.3" - "@mui/utils" "^5.11.9" + "@babel/runtime" "^7.21.0" + "@mui/private-theming" "^5.13.1" + "@mui/styled-engine" "^5.13.2" + "@mui/types" "^7.2.4" + "@mui/utils" "^5.13.1" clsx "^1.2.1" - csstype "^3.1.1" + csstype "^3.1.2" prop-types "^15.8.1" -"@mui/types@^7.2.3": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.3.tgz#06faae1c0e2f3a31c86af6f28b3a4a42143670b9" - integrity sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw== +"@mui/types@^7.2.4": + version "7.2.4" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.4.tgz#b6fade19323b754c5c6de679a38f068fd50b9328" + integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA== "@mui/utils@^5.10.3": version "5.11.1" @@ -2820,14 +2858,14 @@ prop-types "^15.8.1" react-is "^18.2.0" -"@mui/utils@^5.11.9": - version "5.11.9" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.11.9.tgz#8fab9cf773c63ad916597921860d2344b5d4b706" - integrity sha512-eOJaqzcEs4qEwolcvFAmXGpln+uvouvOS9FUX6Wkrte+4I8rZbjODOBDVNlK+V6/ziTfD4iNKC0G+KfOTApbqg== +"@mui/utils@^5.13.1": + version "5.13.1" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.13.1.tgz#86199e46014215f95da046a5ec803f4a39c96eee" + integrity sha512-6lXdWwmlUbEU2jUI8blw38Kt+3ly7xkmV9ljzY4Q20WhsJMWiNry9CX8M+TaP/HbtuyR8XKsdMgQW7h7MM3n3A== dependencies: - "@babel/runtime" "^7.20.13" + "@babel/runtime" "^7.21.0" "@types/prop-types" "^15.7.5" - "@types/react-is" "^16.7.1 || ^17.0.0" + "@types/react-is" "^18.2.0" prop-types "^15.8.1" react-is "^18.2.0" @@ -3019,10 +3057,10 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== -"@popperjs/core@^2.11.6": - version "2.11.6" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" - integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== +"@popperjs/core@^2.11.8": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" @@ -4204,6 +4242,13 @@ dependencies: "@types/react" "*" +"@types/react-is@^18.2.0": + version "18.2.1" + resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-18.2.1.tgz#61d01c2a6fc089a53520c0b66996d458fdc46863" + integrity sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw== + dependencies: + "@types/react" "*" + "@types/react-qr-reader@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@types/react-qr-reader/-/react-qr-reader-2.1.4.tgz#a36f0b83b4402e26c4217d0e8af6b5e2887fc749" @@ -4218,6 +4263,13 @@ dependencies: "@types/react" "*" +"@types/react-transition-group@^4.4.6": + version "4.4.6" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.6.tgz#18187bcda5281f8e10dfc48f0943e2fdf4f75e2e" + integrity sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@18.0.26": version "18.0.26" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.26.tgz#8ad59fc01fef8eaf5c74f4ea392621749f0b7917" @@ -6586,11 +6638,16 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -csstype@^3.0.2, csstype@^3.1.1: +csstype@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== +csstype@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + cypress-file-upload@^5.0.8: version "5.0.8" resolved "https://registry.yarnpkg.com/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz#d8824cbeaab798e44be8009769f9a6c9daa1b4a1" @@ -13113,6 +13170,11 @@ stylis@4.1.3: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + stylus@^0.59.0: version "0.59.0" resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.59.0.tgz#a344d5932787142a141946536d6e24e6a6be7aa6" From 27ffdd766bc0939b53a6e46b0b72d5581e6da755 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Wed, 12 Jul 2023 21:50:00 +0200 Subject: [PATCH 360/422] fix: highlight confirmed status when signer confirms (#2279) * Add folder structure for tx flow * feat: create new-tx route and NewTxMenu component * feat: Add StepperFactory and new tx layout (#2040) * feat: Add StepperFactory, new tx pages * wip: context instead of routes * Add tx flows to new modal context * fix: Close modal when user navigates * Export all flows from one file * refactor: Remove unused code from StepperFactory * fix: Duplicate ModalDialog to fix failing tests * Refactor: reactive recommended nonce (#2050) * Refactor: reactive recommended nonce Reduce re-renders Nonce -1 * Use "nonceReadyOnly" instead of -1 * Split sign and execute into two components * feat: Transaction status widget (#2062) * feat: add tx status widget UI * add logic to paint the stepper * port the ConfirmProposedTx to the new layout * pass tx data to the TxStatusWidget to get the tx confirmations * style: add new lines between adjacent tags * Refactor: SafeTxProvider (#2064) * Refactor: SafeTxProvider * Avoid oscillating nonce * fix reject tx for new provider --------- Co-authored-by: Usame Algan <usame@safe.global> * Move progress to TxLayout * Refactor: useRecommendedNonce + useSafeTxGas (#2066) * Refactor: useRecommendedNonce + useSafeTxGas * Fix lint * Get recommended nonce by "estimating" an empty tx * Adjust ConfirmTx and ExecuteTxButton * Refactor: a less verbose ModalProvider (#2068) * Refactor: a less verbose ModalProvider * Fix Cannot redefine property: dispatchTxProposal * Refactor the tx flow system (#2071) * Refactor the tx flow system * Array * Fix: pass nonce correctly (#2072) * Fix linting errors, add TODOs for failing tx flows (#2070) * Editable nonce (#2077) * Editable nonce * Fix tests * refactor: save entire data structure on submission (#2083) * fix: Close modal on sign, only render current step * fix: Close modal on sign, only render current step * fix: set all data + move back button --------- Co-authored-by: Usame Algan <usame@safe.global> * feat: Add SuccessScreen to tx flow (#2080) * Refactor: single type for tx flows (#2084) * Refactor: single type for tx flows * Omit txNonce * FormData type * feat: add owner flow (#2086) * feat: Change threshold flow (#2085) * feat: Port change threshold flow * fix: Only estimate gas when executing * fix: Remove old component * feat: remove owner flow * feat: replace owner flow (#2087) * feat: add owner flow * feat: replace owner flow * feat: replace owner flow * feat: update flow (#2089) * fix: Remove Module tx flow (#2090) * Add flow for remove guard (#2091) * Safe Apps tx flow (#2081) * SafeAppsTx flow * On close * Handle txFlow close * feat: new spending limit flow (#2093) * feat: new spending limit flow * fix: preserve token address + reset time values * Onclose callback (#2094) * Send button in Assets (#2097) * Send button in Assets * Supress contentEditable warning * Fix: align Next and Back buttons (#2103) * feat: remove spending limit flow (#2098) * Refactor: move AdvancedParams to ExecuteForm (#2104) * fix: Move sign msg modal to new flow (#2102) * fix: Move sign msg modal to new flow * Adjust flex property if subtitle exists * fix: Add flag to hide nonce field in TxLayout * TxCard layout (#2105) * Modal title and icon (#2107) * Modal title and icon * NFTs * feat: spending limit selector (#2106) * feat: batch execute flow (#2108) * Move on-chain sign to new flow (#2109) * feat: amount selector (#2111) * feat: amount selector * fix: use CSS variables * fix: cleanup styles * feat: execute/sign `RadioGroup` (#2117) * [Tx flow] feat: address input redesign (#2112) * feat: AddressInputReadOnly component * improve AddressInput * make component readonly * enable create AB entry from input component * show SaveAddressicon if address not in AB * open the list when clicking the caret * fix component height * show caret when there are available options * rm leftover code * do not highlight the readonly input on hover/click * focus the AddressInput on clicking to edit * change add to AB info text * do not truncate the address in the readonly component * show SaveAddressIcon when address is valid * amount input grows until token name * [TX flow] feat: confirm/execute title component (#2119) * feat: confirm/execute titles * place the component as per design * remove redundant code * use willExecute flag to display execution title * adjust the gap between SignOrExecuteForm elements * fix: remove error casting (#2127) * fix: remove error casting * refactor: don't call `asError` twice * fix: execution method style (#2125) * fix: execution method style * fix: change component * fix: change component * fix: update amount field style (#2124) * [TX flow] Send tokens overview (#2136) * fix: Adjust TxLayout header design * fix: Implement Token Transfer overview design * Remove loading state * [TX flow] style: offchain messages info boxes styles (#2134) * style: adjust success and info box styles * adjust msgSigners style * style margins in the info elements * clean up redundant variable * test: update tx builder URL * Feat: editable safeTxGas in Advanced details (#2132) * Feat: editable safeTxGas in Advanced details * Prettier * Make the form a popover * PR comments * fix: Nonce form (#2120) * fix: Update nonce input to show queued txs and reset button * fix: Extract hook, show input error outline, hide reset button if readonly * Add isEmpty flag to nonce input * Fix test * [TX flow] style: send token flow (#2126) * placeholder for AddressInput identicon * rm Send From * add the dividers to the layout * style CardActions * fix tests * [TX flow] styles: fix send token styles (#2138) * style: remove unnecessary CSS * style: consider the input label font-size in spacing * Small UI tweaks * fix: move default value to placeholder (#2139) * Fix DecodedTx tests * [TX flow] feat: add owner modal (#2143) * feat: create add owner * adjust ReviewOwner design * component to wrap owner address and include subtitle in modal * prefer RHF for form fields. use sx instead of classes * use MUI component * fix: remove owner flow styling (#2150) * fix: remove owner flow styling * fix: add titles * feat: add tooltip to advanced details (#2153) * feat: add tooltip to advanced details * fix: alter wording * [TX flow] feat: replace owner (#2151) * feat: redesign replace owner * rm unnecessary files. move css to module * fix: add titles * Update src/components/tx-flow/flows/AddOwner/ReviewOwner.tsx Co-authored-by: Aaron Cook <aaron@safe.global> --------- Co-authored-by: Aaron Cook <aaron@safe.global> * Align buttons in SignMessage modal * [TX flow] Display Token balance (#2155) * Add folder structure for tx flow * feat: create new-tx route and NewTxMenu component * feat: Add StepperFactory and new tx layout (#2040) * feat: Add StepperFactory, new tx pages * wip: context instead of routes * Add tx flows to new modal context * fix: Close modal when user navigates * Export all flows from one file * refactor: Remove unused code from StepperFactory * fix: Duplicate ModalDialog to fix failing tests * Refactor: reactive recommended nonce (#2050) * Refactor: reactive recommended nonce Reduce re-renders Nonce -1 * Use "nonceReadyOnly" instead of -1 * Split sign and execute into two components * feat: Transaction status widget (#2062) * feat: add tx status widget UI * add logic to paint the stepper * port the ConfirmProposedTx to the new layout * pass tx data to the TxStatusWidget to get the tx confirmations * style: add new lines between adjacent tags * Refactor: SafeTxProvider (#2064) * Refactor: SafeTxProvider * Avoid oscillating nonce * fix reject tx for new provider --------- Co-authored-by: Usame Algan <usame@safe.global> * Move progress to TxLayout * Refactor: useRecommendedNonce + useSafeTxGas (#2066) * Refactor: useRecommendedNonce + useSafeTxGas * Fix lint * Get recommended nonce by "estimating" an empty tx * Adjust ConfirmTx and ExecuteTxButton * Refactor: a less verbose ModalProvider (#2068) * Refactor: a less verbose ModalProvider * Fix Cannot redefine property: dispatchTxProposal * Refactor the tx flow system (#2071) * Refactor the tx flow system * Array * Fix: pass nonce correctly (#2072) * Fix linting errors, add TODOs for failing tx flows (#2070) * Editable nonce (#2077) * Editable nonce * Fix tests * refactor: save entire data structure on submission (#2083) * fix: Close modal on sign, only render current step * fix: Close modal on sign, only render current step * fix: set all data + move back button --------- Co-authored-by: Usame Algan <usame@safe.global> * feat: Add SuccessScreen to tx flow (#2080) * Refactor: single type for tx flows (#2084) * Refactor: single type for tx flows * Omit txNonce * FormData type * feat: add owner flow (#2086) * feat: Change threshold flow (#2085) * feat: Port change threshold flow * fix: Only estimate gas when executing * fix: Remove old component * feat: remove owner flow * feat: replace owner flow (#2087) * feat: add owner flow * feat: replace owner flow * feat: replace owner flow * feat: update flow (#2089) * fix: Remove Module tx flow (#2090) * Add flow for remove guard (#2091) * Safe Apps tx flow (#2081) * SafeAppsTx flow * On close * Handle txFlow close * feat: new spending limit flow (#2093) * feat: new spending limit flow * fix: preserve token address + reset time values * Onclose callback (#2094) * Send button in Assets (#2097) * Send button in Assets * Supress contentEditable warning * Fix: align Next and Back buttons (#2103) * feat: remove spending limit flow (#2098) * Refactor: move AdvancedParams to ExecuteForm (#2104) * fix: Move sign msg modal to new flow (#2102) * fix: Move sign msg modal to new flow * Adjust flex property if subtitle exists * fix: Add flag to hide nonce field in TxLayout * TxCard layout (#2105) * Modal title and icon (#2107) * Modal title and icon * NFTs * feat: spending limit selector (#2106) * feat: batch execute flow (#2108) * Move on-chain sign to new flow (#2109) * feat: amount selector (#2111) * feat: amount selector * fix: use CSS variables * fix: cleanup styles * feat: execute/sign `RadioGroup` (#2117) * [Tx flow] feat: address input redesign (#2112) * feat: AddressInputReadOnly component * improve AddressInput * make component readonly * enable create AB entry from input component * show SaveAddressicon if address not in AB * open the list when clicking the caret * fix component height * show caret when there are available options * rm leftover code * do not highlight the readonly input on hover/click * focus the AddressInput on clicking to edit * change add to AB info text * do not truncate the address in the readonly component * show SaveAddressIcon when address is valid * amount input grows until token name * [TX flow] feat: confirm/execute title component (#2119) * feat: confirm/execute titles * place the component as per design * remove redundant code * use willExecute flag to display execution title * adjust the gap between SignOrExecuteForm elements * fix: remove error casting (#2127) * fix: remove error casting * refactor: don't call `asError` twice * fix: execution method style (#2125) * fix: execution method style * fix: change component * fix: change component * fix: update amount field style (#2124) * [TX flow] Send tokens overview (#2136) * fix: Adjust TxLayout header design * fix: Implement Token Transfer overview design * Remove loading state * [TX flow] style: offchain messages info boxes styles (#2134) * style: adjust success and info box styles * adjust msgSigners style * style margins in the info elements * clean up redundant variable * test: update tx builder URL * Feat: editable safeTxGas in Advanced details (#2132) * Feat: editable safeTxGas in Advanced details * Prettier * Make the form a popover * PR comments * fix: Nonce form (#2120) * fix: Update nonce input to show queued txs and reset button * fix: Extract hook, show input error outline, hide reset button if readonly * Add isEmpty flag to nonce input * Fix test * [TX flow] style: send token flow (#2126) * placeholder for AddressInput identicon * rm Send From * add the dividers to the layout * style CardActions * fix tests * [TX flow] styles: fix send token styles (#2138) * style: remove unnecessary CSS * style: consider the input label font-size in spacing * Small UI tweaks * fix: move default value to placeholder (#2139) * Fix DecodedTx tests * [TX flow] feat: add owner modal (#2143) * feat: create add owner * adjust ReviewOwner design * component to wrap owner address and include subtitle in modal * prefer RHF for form fields. use sx instead of classes * use MUI component * fix: remove owner flow styling (#2150) * fix: remove owner flow styling * fix: add titles * feat: add tooltip to advanced details (#2153) * feat: add tooltip to advanced details * fix: alter wording * [TX flow] feat: replace owner (#2151) * feat: redesign replace owner * rm unnecessary files. move css to module * fix: add titles * Update src/components/tx-flow/flows/AddOwner/ReviewOwner.tsx Co-authored-by: Aaron Cook <aaron@safe.global> --------- Co-authored-by: Aaron Cook <aaron@safe.global> * fix: Display token balance in dropdown --------- Co-authored-by: Diogo Soares <diogo.lsoares@gmail.com> Co-authored-by: katspaugh <381895+katspaugh@users.noreply.github.com> Co-authored-by: katspaugh <katspaugh@gmail.com> Co-authored-by: Diogo Soares <32431609+DiogoSoaress@users.noreply.github.com> Co-authored-by: Aaron Cook <aaron@safe.global> * Fix: address book entry dialog (#2156) * [TX flow] Mobile optimisation (#2154) * Add folder structure for tx flow * feat: create new-tx route and NewTxMenu component * feat: Add StepperFactory and new tx layout (#2040) * feat: Add StepperFactory, new tx pages * wip: context instead of routes * Add tx flows to new modal context * fix: Close modal when user navigates * Export all flows from one file * refactor: Remove unused code from StepperFactory * fix: Duplicate ModalDialog to fix failing tests * Refactor: reactive recommended nonce (#2050) * Refactor: reactive recommended nonce Reduce re-renders Nonce -1 * Use "nonceReadyOnly" instead of -1 * Split sign and execute into two components * feat: Transaction status widget (#2062) * feat: add tx status widget UI * add logic to paint the stepper * port the ConfirmProposedTx to the new layout * pass tx data to the TxStatusWidget to get the tx confirmations * style: add new lines between adjacent tags * Refactor: SafeTxProvider (#2064) * Refactor: SafeTxProvider * Avoid oscillating nonce * fix reject tx for new provider --------- Co-authored-by: Usame Algan <usame@safe.global> * Move progress to TxLayout * Refactor: useRecommendedNonce + useSafeTxGas (#2066) * Refactor: useRecommendedNonce + useSafeTxGas * Fix lint * Get recommended nonce by "estimating" an empty tx * Adjust ConfirmTx and ExecuteTxButton * Refactor: a less verbose ModalProvider (#2068) * Refactor: a less verbose ModalProvider * Fix Cannot redefine property: dispatchTxProposal * Refactor the tx flow system (#2071) * Refactor the tx flow system * Array * Fix: pass nonce correctly (#2072) * Fix linting errors, add TODOs for failing tx flows (#2070) * Editable nonce (#2077) * Editable nonce * Fix tests * refactor: save entire data structure on submission (#2083) * fix: Close modal on sign, only render current step * fix: Close modal on sign, only render current step * fix: set all data + move back button --------- Co-authored-by: Usame Algan <usame@safe.global> * feat: Add SuccessScreen to tx flow (#2080) * Refactor: single type for tx flows (#2084) * Refactor: single type for tx flows * Omit txNonce * FormData type * feat: add owner flow (#2086) * feat: Change threshold flow (#2085) * feat: Port change threshold flow * fix: Only estimate gas when executing * fix: Remove old component * feat: remove owner flow * feat: replace owner flow (#2087) * feat: add owner flow * feat: replace owner flow * feat: replace owner flow * feat: update flow (#2089) * fix: Remove Module tx flow (#2090) * Add flow for remove guard (#2091) * Safe Apps tx flow (#2081) * SafeAppsTx flow * On close * Handle txFlow close * feat: new spending limit flow (#2093) * feat: new spending limit flow * fix: preserve token address + reset time values * Onclose callback (#2094) * Send button in Assets (#2097) * Send button in Assets * Supress contentEditable warning * Fix: align Next and Back buttons (#2103) * feat: remove spending limit flow (#2098) * Refactor: move AdvancedParams to ExecuteForm (#2104) * fix: Move sign msg modal to new flow (#2102) * fix: Move sign msg modal to new flow * Adjust flex property if subtitle exists * fix: Add flag to hide nonce field in TxLayout * TxCard layout (#2105) * Modal title and icon (#2107) * Modal title and icon * NFTs * feat: spending limit selector (#2106) * feat: batch execute flow (#2108) * Move on-chain sign to new flow (#2109) * feat: amount selector (#2111) * feat: amount selector * fix: use CSS variables * fix: cleanup styles * feat: execute/sign `RadioGroup` (#2117) * [Tx flow] feat: address input redesign (#2112) * feat: AddressInputReadOnly component * improve AddressInput * make component readonly * enable create AB entry from input component * show SaveAddressicon if address not in AB * open the list when clicking the caret * fix component height * show caret when there are available options * rm leftover code * do not highlight the readonly input on hover/click * focus the AddressInput on clicking to edit * change add to AB info text * do not truncate the address in the readonly component * show SaveAddressIcon when address is valid * amount input grows until token name * [TX flow] feat: confirm/execute title component (#2119) * feat: confirm/execute titles * place the component as per design * remove redundant code * use willExecute flag to display execution title * adjust the gap between SignOrExecuteForm elements * fix: remove error casting (#2127) * fix: remove error casting * refactor: don't call `asError` twice * fix: execution method style (#2125) * fix: execution method style * fix: change component * fix: change component * fix: update amount field style (#2124) * [TX flow] Send tokens overview (#2136) * fix: Adjust TxLayout header design * fix: Implement Token Transfer overview design * Remove loading state * [TX flow] style: offchain messages info boxes styles (#2134) * style: adjust success and info box styles * adjust msgSigners style * style margins in the info elements * clean up redundant variable * test: update tx builder URL * Feat: editable safeTxGas in Advanced details (#2132) * Feat: editable safeTxGas in Advanced details * Prettier * Make the form a popover * PR comments * fix: Nonce form (#2120) * fix: Update nonce input to show queued txs and reset button * fix: Extract hook, show input error outline, hide reset button if readonly * Add isEmpty flag to nonce input * Fix test * [TX flow] style: send token flow (#2126) * placeholder for AddressInput identicon * rm Send From * add the dividers to the layout * style CardActions * fix tests * [TX flow] styles: fix send token styles (#2138) * style: remove unnecessary CSS * style: consider the input label font-size in spacing * Small UI tweaks * fix: move default value to placeholder (#2139) * Fix DecodedTx tests * [TX flow] feat: add owner modal (#2143) * feat: create add owner * adjust ReviewOwner design * component to wrap owner address and include subtitle in modal * prefer RHF for form fields. use sx instead of classes * use MUI component * fix: remove owner flow styling (#2150) * fix: remove owner flow styling * fix: add titles * fix: Optimize new tx flow for mobile screens * refactor: Adjust all max media queries --------- Co-authored-by: Diogo Soares <diogo.lsoares@gmail.com> Co-authored-by: katspaugh <381895+katspaugh@users.noreply.github.com> Co-authored-by: katspaugh <katspaugh@gmail.com> Co-authored-by: Diogo Soares <32431609+DiogoSoaress@users.noreply.github.com> Co-authored-by: Aaron Cook <aaron@safe.global> * Chore: update MUI * fix: Enable spending limit txs in new flow (#2160) * fix: Enable spending limit txs in new flow * fix: Style review spending limit component * Adjust review screen design, fix nft link (#2162) * feat: simulation (#2157) * feat: simulation * Add context, update logos, remove canExecute * fix: reset on tx change + simplify context --------- Co-authored-by: Usame Algan <usame@safe.global> * Fix: hide Edit for safeTxGas when 0 in 1.3.0+ (#2163) * Fix: hide Edit for safeTxGas when 0 in 1.3.0+ * Simplify onBlur * Fix: TxModalDialog zIndex * feat: Move Redefine into new Tx Flow (#2166) * feat: Move Redefine into new Tx Flow * fix: cleanup logos + comments * refactor: Folder structure --------- Co-authored-by: iamacook <aaron@safe.global> * fix: port balance change (#2172) * [TX flow] Replace tx (#2173) * Move replace tx screen into tx layout * Add illustration, fix modal zIndex * fix: update owner management styles (#2174) * feat: add confirmation badge to flow (#2183) * feat: add confirmation badge to flow * fix: condition * fix: dark mode * feat: add replacement to transaction status widget (#2184) * Fix: restore tracking of send modals (#2185) * fix: make balance change more compact (#2186) * fix: make balance change more compact * fix: increase `gap` between changes * fix: disable transition + backdrop of modals (#2189) * Fix: tx modal with collapsed sidebar (#2188) * feat: show alert before closing transaction flow (#2187) * feat: show alert before closing transaction flow * fix: dark mode font colour * fix: handle back button * fix: change text * fix: change text * fix: unmount on final sig + close warning * Adjust spending limit ui for new tx flow (#2190) * Adjust spending limit ui for new tx flow * Adjust titles, fix remove owner button regression * Extract enum and reuse * Remove reset time switch * Adjust enum exports * Adjust Send NFT layout for new tx flow (#2192) * Adjust Remove module ui (#2194) * Fix: autofocus recipient if not set (#2196) * Fix: autofocus recipient if not set * hideBackdrop * Fix NFTs tests * Fix create_tx test * fix: style new tx modal (#2193) * fix: style new tx modal * fix: revert wrapper * fix: type * fix: animated icon * fix: e2e * [TX flow] Adds nonce validation (#2175) * Adds nonce validation * Adjust nonce validation * Disable nonce for reject tx, use correct nonce when replacing a tx * Adjust wording * fix: migrate input to RHF * Limit nonce input width * Fix e2e tests --------- Co-authored-by: iamacook <aaron@safe.global> * fix: don't warn for send NFTs or tx builder (#2202) * fix: don't warn for send NFTs or tx builder * fix: use `instanceof` * feat: add subtitle to confirmation flow (#2204) * fix: make tx check widgets `sticky` (#2203) * fix: make tx check widgets `sticky` * fix: move CSS * Adjust safe apps tx flow ui (#2201) * Adjust safe apps tx flow ui * Fix zIndex issue * Only show divider if there is an approval, fix e2e test * Handle undefined tokenInfo * Fix failing e2e test * fix: change threshold flow style + titles (#2208) * fix: change threshold flow style + titles * fix: change title + add divider * fix: don't rely only on fetch status for error (#2206) * Adjust batch execute ui (#2209) * Adjust icon color for dark mode (#2210) * Fix: show an error if risk isn't acknowledged (#2216) * Fix: show an error if risk isn't acknowledged * Highlight risk checkbox on submit * Don't reset error * Rm timeout * fix: Hide reset nonce button (#2223) * fix: Hide reset nonce button * Use ch units instead of em, absolute positioned reset button * fix: Show unlimited approval amount in readonly mode (#2220) * fix: Handle relayed txs and errors in status screen (#2226) * fix: Handle relayed txs and errors in status screen * fix: Status screen dashboard link to include chain prefix * fix: TxFlow submit button alignment, error message spacing (#2227) * fix: TxFlow submit button alignment, error message spacing * fix: Pass classname to ErrorMessage * fix: Apply input styles to all input fields (#2231) * fix: Apply input styles to all input fields * chore: Add TODO * fix: Hide confirmation dialog if set via setTxFlow (#2233) * feat: show redefine warnings on mobile (#2234) - adds RedefineMessage and tenderly result to TxChecks for small screens - changes order of Redefine scan results and Tenderly Simulation * fix: remove redundant component (#2241) * fix: Adjust decoded tx ui (#2235) * fix: recipient title alignment (#2240) * feat: add missing tooltips (#2245) * fix: reduce space between name and address (#2239) * fix: reduce space between name and address * fix: adjust `line-height` * fix: import * fix: router is undefined when using onboard modal (#2248) * fix: Update illustration for new tx (#2249) * fix: Adjust z-index of new flow (#2250) * fix: Write tests for ApprovalEditor (#2243) * fix: readonly nonce input (#2247) - tweaks nonce input design slightly - fixes e2e tests * fix: remove threshold input when swapping owners (#2253) * feat: add chain indicator (#2242) * fix: change simulation title (#2256) * Small UI adjustments (#2259) * fix: Show recommended nonce in list (#2260) * fix: Show recommended nonce in list * fix: button ref issue * fix: Disable submit button for non-owners (#2261) * fix: Review send NFT view (#2263) * [TX flow] Merge dev (#2265) * fix: Check execute checkbox if execution is the only option (#2230) * v1.14.0 * Chore: escape quotes in release action (#2236) Use printf Use a heredoc Use jq * fix: only initiate WC v2 module if project id provided (#2228) * chore: mark `NEXT_PUBLIC_WC_PROJECT_ID` required * chore: don't prettify * fix: don't return module * fix: revert readme * fix: autoconnect to WC v2 on mobile (#2238) * fix: update token price tooltip (#2257) --------- Co-authored-by: katspaugh <katspaugh@gmail.com> Co-authored-by: katspaugh <381895+katspaugh@users.noreply.github.com> Co-authored-by: Aaron Cook <aaron@safe.global> * [TX flow] Batch execute fixes (#2268) * fix: Hide status for batch execute * fix: Close batch execute flow when submitting tx * fix: Remove hide status flag, add isBatch flag and display different status messages for batch execution * fix: remove unnecessary hook (#2271) * fix: Sticky close button (#2269) * fix: Hide approval editor for non-approval transactions (#2262) * fix: Hide approval editor for non-approval transactions * fix: Adjust useApprovalInfos hook for non-approval txs * fix: Adjust tx flow elements height (#2272) * fix: increase `min-width` of nonce field (#2270) * fix: increase `min-width` of nonce field * fix: prevent recommended nonce jump * fix: align progress bar with new tx button (#2274) * fix: Align decoded tx ui for batch execute (#2275) * fix: Align decoded tx ui for batch execute * fix: Don't show confirmation dialog for batch execute, update spending limit components to use SendAmountBlock * fix: Validation for spending limits (#2277) * fix: Validation for spending limits * fix: Reset amount field to empty string instead of 0 when switching tokens * fix: Add readonly addressbook input to spending limits * fix: Hide nonce for spending limit txs (#2278) * fix: Hide nonce for spending limit txs * Update src/components/tx-flow/flows/TokenTransfer/ReviewSpendingLimitTx.tsx Co-authored-by: Aaron Cook <aaron@safe.global> --------- Co-authored-by: Aaron Cook <aaron@safe.global> * fix: highlight confirmed status when signer confirms * fix: Remove step check for confirm highlight * fix: highlight confirmed status when signer confirms * chore: Update version to 1.15.0 --------- Co-authored-by: Usame Algan <usame@safe.global> Co-authored-by: Diogo Soares <diogo.lsoares@gmail.com> Co-authored-by: Usame Algan <5880855+usame-algan@users.noreply.github.com> Co-authored-by: katspaugh <381895+katspaugh@users.noreply.github.com> Co-authored-by: katspaugh <katspaugh@gmail.com> Co-authored-by: Diogo Soares <32431609+DiogoSoaress@users.noreply.github.com> Co-authored-by: Manuel Gellfart <manu@safe.global> --- package.json | 2 +- src/components/transactions/TxSigners/index.tsx | 1 + .../tx-flow/common/TxStatusWidget/index.tsx | 6 +++--- src/utils/transaction-guards.ts | 17 ++++++++++++----- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index bdb49fb43e..edebd62a1e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/safe-global/safe-wallet-web", "license": "GPL-3.0", "type": "module", - "version": "1.14.0", + "version": "1.15.0", "scripts": { "dev": "next dev", "start": "next dev", diff --git a/src/components/transactions/TxSigners/index.tsx b/src/components/transactions/TxSigners/index.tsx index 7d5d99057f..9f03455e6c 100644 --- a/src/components/transactions/TxSigners/index.tsx +++ b/src/components/transactions/TxSigners/index.tsx @@ -125,6 +125,7 @@ export const TxSigners = ({ txDetails, txSummary }: TxSignersProps): ReactElemen const { confirmations, confirmationsRequired, executor } = detailedExecutionInfo + // TODO: Refactor to use `isConfirmableBy` const confirmationsCount = confirmations.length const canExecute = wallet?.address ? isExecutable(txSummary, wallet.address, safe) : false const confirmationsNeeded = confirmationsRequired - confirmations.length diff --git a/src/components/tx-flow/common/TxStatusWidget/index.tsx b/src/components/tx-flow/common/TxStatusWidget/index.tsx index 30862c0516..a702265558 100644 --- a/src/components/tx-flow/common/TxStatusWidget/index.tsx +++ b/src/components/tx-flow/common/TxStatusWidget/index.tsx @@ -3,7 +3,7 @@ import CreatedIcon from '@/public/images/messages/created.svg' import SignedIcon from '@/public/images/messages/signed.svg' import { type TransactionSummary } from '@safe-global/safe-gateway-typescript-sdk' import useSafeInfo from '@/hooks/useSafeInfo' -import { isMultisigExecutionInfo, isSignableBy } from '@/utils/transaction-guards' +import { isMultisigExecutionInfo, isSignableBy, isConfirmableBy } from '@/utils/transaction-guards' import classnames from 'classnames' import css from './styles.module.css' import CloseIcon from '@mui/icons-material/Close' @@ -41,7 +41,7 @@ const TxStatusWidget = ({ const { executionInfo = undefined } = txSummary || {} const { confirmationsSubmitted = 0 } = isMultisigExecutionInfo(executionInfo) ? executionInfo : {} - const isConfirmedStepIncomplete = step < 1 && !confirmationsSubmitted + const canConfirm = txSummary ? isConfirmableBy(txSummary, wallet?.address || '') : safe.threshold === 1 const canSign = txSummary ? isSignableBy(txSummary, wallet?.address || '') : true return ( @@ -69,7 +69,7 @@ const TxStatusWidget = ({ </ListItemText> </ListItem> - <ListItem className={classnames({ [css.incomplete]: isConfirmedStepIncomplete && !isBatch })}> + <ListItem className={classnames({ [css.incomplete]: !canConfirm && !isBatch })}> <ListItemIcon> <SignedIcon /> </ListItemIcon> diff --git a/src/utils/transaction-guards.ts b/src/utils/transaction-guards.ts index 6255f9b4c0..5622cc1b81 100644 --- a/src/utils/transaction-guards.ts +++ b/src/utils/transaction-guards.ts @@ -127,6 +127,17 @@ export const isSignableBy = (txSummary: TransactionSummary, walletAddress: strin return !!executionInfo?.missingSigners?.some((address) => address.value === walletAddress) } +export const isConfirmableBy = (txSummary: TransactionSummary, walletAddress: string): boolean => { + if (!txSummary.executionInfo || !isMultisigExecutionInfo(txSummary.executionInfo)) { + return false + } + const { confirmationsRequired, confirmationsSubmitted } = txSummary.executionInfo + return ( + confirmationsSubmitted >= confirmationsRequired || + (confirmationsSubmitted === confirmationsRequired - 1 && isSignableBy(txSummary, walletAddress)) + ) +} + export const isExecutable = (txSummary: TransactionSummary, walletAddress: string, safe: SafeInfo): boolean => { if ( !txSummary.executionInfo || @@ -135,11 +146,7 @@ export const isExecutable = (txSummary: TransactionSummary, walletAddress: strin ) { return false } - const { confirmationsRequired, confirmationsSubmitted } = txSummary.executionInfo - return ( - confirmationsSubmitted >= confirmationsRequired || - (confirmationsSubmitted === confirmationsRequired - 1 && isSignableBy(txSummary, walletAddress)) - ) + return isConfirmableBy(txSummary, walletAddress) } // Spending limits From 8e3246392a02629c91f6901aaf662c9d951dc670 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Thu, 13 Jul 2023 09:53:24 +0200 Subject: [PATCH 361/422] [EPIC] SEP #5 - Update header/widget (#2213) * fix: add `type` of SEP #5 claiming data * fix: staging allocation URL --- src/hooks/useSafeTokenAllocation.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/hooks/useSafeTokenAllocation.ts b/src/hooks/useSafeTokenAllocation.ts index 81b50d94ba..2ea00d7151 100644 --- a/src/hooks/useSafeTokenAllocation.ts +++ b/src/hooks/useSafeTokenAllocation.ts @@ -1,4 +1,6 @@ import { getSafeTokenAddress } from '@/components/common/SafeTokenWidget' +import { cgwDebugStorage } from '@/components/sidebar/DebugToggle' +import { IS_PRODUCTION } from '@/config/constants' import { ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' import { isPast } from 'date-fns' import { BigNumber } from 'ethers' @@ -8,10 +10,13 @@ import useAsync from './useAsync' import useSafeInfo from './useSafeInfo' import { getWeb3ReadOnly } from './wallets/web3' -export const VESTING_URL = 'https://safe-claiming-app-data.safe.global/allocations/' +export const VESTING_URL = + IS_PRODUCTION || cgwDebugStorage.get() + ? 'https://safe-claiming-app-data.safe.global/allocations/' + : 'https://safe-claiming-app-data.staging.5afe.dev/allocations/' type VestingData = { - tag: 'user' | 'ecosystem' | 'investor' + tag: 'user' | 'ecosystem' | 'investor' | 'user_v2' // SEP #5 account: string chainId: number contract: string From 99674a8512a9860113c04437ee312f4c48858bd9 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Thu, 13 Jul 2023 10:54:10 +0200 Subject: [PATCH 362/422] fix: update privacy policy for mobile onboarding (#2282) * fix: update privacy policy for mobile onboarding * fix: update date --- src/components/privacy/index.tsx | 69 +++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/src/components/privacy/index.tsx b/src/components/privacy/index.tsx index 635f292ae0..be84d6655f 100644 --- a/src/components/privacy/index.tsx +++ b/src/components/privacy/index.tsx @@ -6,7 +6,7 @@ const SafePrivacyPolicy = () => { return ( <div> <h1>Privacy Policy</h1> - <p>Last updated on May 2023.</p> + <p>Last updated on July 2023.</p> <p> Your privacy is important to us. It is our policy to respect your privacy and comply with any applicable law and regulation regarding any personal information we may collect about you, including across our website,{' '} @@ -448,6 +448,50 @@ const SafePrivacyPolicy = () => { <li>Error info: Time, stacktrace</li> </ol> <p>We rely on our legitimate interest (GDPR Art.6.1f) of ensuring product quality. </p> + <p> + 4.5.6 We process your personal data to allow you to authenticate using your gmail account or AppleID and to + create a signer wallet/owner account . For that purpose following personal data is processed: + </p> + <ol start={1} className={css.alphaList}> + <li>Anonymised device information and identifiers, e.g. IP address, cookie IDs, device type</li> + <li>User account authentication information (e.g. username, password)</li> + <li> + Unique user identifier (e.g. a random string associated with authentication, at times can be email. If so, + sensitive strings are processed but hashed and not stored) + </li> + <li>Connection and usage Information (e.g. logins to the application)</li> + </ol> + <p> + For this processing, we rely on our legitimate interest (GDPR Art.6.1f) of facilitating the onboarding for users + and ameliorating the user experience with regards to our product. + </p> + <p> + 4.5.7 Providing on and off-ramp services to enable you to top up your Safe Account with e.g. bank transfer, + debit card, credit card. For this purpose MoonPay may process your: + </p> + <ol start={1} className={css.alphaList}> + <li>full name</li> + <li>date of birth</li> + <li>nationality</li> + <li>gender</li> + <li>signature</li> + <li>utility bills</li> + <li>photographs</li> + <li>phone number</li> + <li>home address</li> + <li>email</li> + <li> + information about the transactions you make via MoonPay services (e.g. name of the recipient, your name, the + amount, and/or timestamp) + </li> + <li>geo location/tracking details</li> + <li>operating system</li> + <li>personal IP address</li> + </ol> + <p> + To conduct this activity we rely on our legitimate interest (GDPR Art.6.1f) of ameliorating the onboarding + process and the user experience through providing an easier option to customers to fund their account. + </p> <h4>4.6 Other uses of your Personal Data</h4> <p> We may process any of your Personal Data where it is necessary to establish, exercise, or defend legal claims. @@ -632,6 +676,27 @@ const SafePrivacyPolicy = () => { </Link> </li> </ul> + <h4>5.13. Web3Auth</h4> + <p> + We use{' '} + <Link href="https://web3auth.io/" passHref> + <MUILink target="_blank" rel="noreferrer"> + Web3Auth + </MUILink> + </Link>{' '} + to create a signer wallet/an owner account by using the user's Gmail account or Apple ID information. + </p> + <h4>MoonPay</h4> + <p> + We use{' '} + <Link href="https://www.moonpay.com/" passHref> + <MUILink target="_blank" rel="noreferrer"> + MoonPay + </MUILink> + </Link>{' '} + to offer on-ramp and off-ramp services. For that purpose personal data is required for KYC/AML or other + financial regulatory requirements. This data is encrypted by MoonPay. + </p> <h3 id="6">6. Sharing Your Personal Data</h3> <p> We may pass your information to our Business Partners, administration centers, third party service providers, @@ -668,6 +733,8 @@ const SafePrivacyPolicy = () => { <ul> <li>Tenderly d.o.o. is based in Serbia.</li> <li>Node Real PTE Ltd. is based in Singapore.</li> + <li>Torus Labs PTE. Ltd. is based in Singapore.</li> + <li>Eighteenth September Limited (“MoonPay”) in the Seychelles.</li> </ul> <p> HOWEVER, WHEN INTERACTING WITH THE BLOCKCHAIN, AS EXPLAINED ABOVE IN THIS POLICY, THE BLOCKCHAIN IS A GLOBAL From 573503015123d82c72713cb2a095720e485beec3 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Fri, 14 Jul 2023 09:23:20 +0200 Subject: [PATCH 363/422] fix: trim/remove leading zeros from values (#2284) * fix: trim token amount value * feat: remove leading zeros from numbers --- .../common/NumberField/index.test.ts | 13 +++++++ src/components/common/NumberField/index.tsx | 36 +++++++++++++++++-- 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 src/components/common/NumberField/index.test.ts diff --git a/src/components/common/NumberField/index.test.ts b/src/components/common/NumberField/index.test.ts new file mode 100644 index 0000000000..c30a9f4e0a --- /dev/null +++ b/src/components/common/NumberField/index.test.ts @@ -0,0 +1,13 @@ +import { _formatNumber } from '.' + +describe('NumberField', () => { + it('should trim the value', () => { + expect(_formatNumber(' 123 ')).toBe('123') + expect(_formatNumber(' 0.001 ')).toBe('0.001') + }) + + it('should remove the leading zeros', () => { + expect(_formatNumber('000123')).toBe('123') + expect(_formatNumber('0000.001')).toBe('0.001') + }) +}) diff --git a/src/components/common/NumberField/index.tsx b/src/components/common/NumberField/index.tsx index 234032ceb7..c5a3066ef1 100644 --- a/src/components/common/NumberField/index.tsx +++ b/src/components/common/NumberField/index.tsx @@ -3,8 +3,40 @@ import { forwardRef } from 'react' import type { TextFieldProps } from '@mui/material' import type { ReactElement } from 'react' -const NumberField = forwardRef<HTMLInputElement, TextFieldProps>((props, ref): ReactElement => { - return <TextField autoComplete="off" ref={ref} {...props} /> +export const _formatNumber = (value: string) => { + value = value.trim() + + if (value === '') { + return value + } + + // Remove leading zeros from the string + value = value.replace(/^0+/, '') + + if (value === '') { + return '0' + } + + // If the string starts with a decimal point, add a leading zero + if (value.startsWith('.')) { + value = '0' + value + } + + return value +} + +const NumberField = forwardRef<HTMLInputElement, TextFieldProps>(({ onChange, ...props }, ref): ReactElement => { + return ( + <TextField + autoComplete="off" + ref={ref} + onChange={(event) => { + event.target.value = _formatNumber(event.target.value) + return onChange?.(event) + }} + {...props} + /> + ) }) NumberField.displayName = 'NumberField' From b0ebdafe3a954b146ecb8c971cb14d05f7467875 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Fri, 14 Jul 2023 11:45:16 +0200 Subject: [PATCH 364/422] fix: Show Tenderly fail if there is a call trace error (#2290) * fix: Show tenderly failed message if call trace error * fix: Decoded tx compact header * fix: Use success status from simulation * refactor: Extract simulation status * chore: Add TODOs --- .../DecodedData/Multisend/styles.module.css | 3 +- src/components/tx-flow/TxInfoProvider.tsx | 50 +++++++++++++++++-- .../tenderly/__tests__/useSimulation.test.ts | 20 ++++---- src/components/tx/security/tenderly/index.tsx | 39 ++++----------- .../tx/security/tenderly/useSimulation.ts | 7 +-- 5 files changed, 74 insertions(+), 45 deletions(-) diff --git a/src/components/transactions/TxDetails/TxData/DecodedData/Multisend/styles.module.css b/src/components/transactions/TxDetails/TxData/DecodedData/Multisend/styles.module.css index 8d8935cd77..f90865ea2d 100644 --- a/src/components/transactions/TxDetails/TxData/DecodedData/Multisend/styles.module.css +++ b/src/components/transactions/TxDetails/TxData/DecodedData/Multisend/styles.module.css @@ -1,7 +1,7 @@ .actionsHeader { border-bottom: 1px solid var(--color-border-light); cursor: auto !important; - padding-left: 0; + padding-left: var(--space-2); padding-right: 0; display: flex; justify-content: space-between; @@ -10,6 +10,7 @@ .compactHeader { border: 0; + padding-left: 0; } .actionsHeader button { diff --git a/src/components/tx-flow/TxInfoProvider.tsx b/src/components/tx-flow/TxInfoProvider.tsx index 3c215d01d1..567087c5c4 100644 --- a/src/components/tx-flow/TxInfoProvider.tsx +++ b/src/components/tx-flow/TxInfoProvider.tsx @@ -1,23 +1,67 @@ import { createContext } from 'react' import { useSimulation, type UseSimulationReturn } from '@/components/tx/security/tenderly/useSimulation' -import { FETCH_STATUS } from '@/components/tx/security/tenderly/types' +import { FETCH_STATUS, type TenderlySimulation } from '@/components/tx/security/tenderly/types' + +const getCallTraceErrors = (simulation?: TenderlySimulation) => { + if (!simulation || !simulation.simulation.status) { + return [] + } + + return simulation.transaction.call_trace.filter((call) => call.error) +} + +type SimulationStatus = { + isLoading: boolean + isFinished: boolean + isSuccess: boolean + isCallTraceError: boolean + isError: boolean +} export const TxInfoContext = createContext<{ simulation: UseSimulationReturn + status: SimulationStatus }>({ simulation: { simulateTransaction: () => {}, simulation: undefined, - simulationRequestStatus: FETCH_STATUS.NOT_ASKED, + _simulationRequestStatus: FETCH_STATUS.NOT_ASKED, simulationLink: '', requestError: undefined, resetSimulation: () => {}, }, + status: { + isLoading: false, + isFinished: false, + isSuccess: false, + isCallTraceError: false, + isError: false, + }, }) export const TxInfoProvider = ({ children }: { children: JSX.Element }) => { const simulation = useSimulation() - return <TxInfoContext.Provider value={{ simulation }}>{children}</TxInfoContext.Provider> + const isLoading = simulation._simulationRequestStatus === FETCH_STATUS.LOADING + + const isFinished = + simulation._simulationRequestStatus === FETCH_STATUS.SUCCESS || + simulation._simulationRequestStatus === FETCH_STATUS.ERROR + + const isSuccess = simulation.simulation?.simulation.status || false + + // Safe can emit failure event even though Tenderly simulation succeeds + const isCallTraceError = isSuccess && getCallTraceErrors(simulation.simulation).length > 0 + const isError = simulation._simulationRequestStatus === FETCH_STATUS.ERROR + + const status = { + isLoading, + isFinished, + isSuccess, + isCallTraceError, + isError, + } + + return <TxInfoContext.Provider value={{ simulation, status }}>{children}</TxInfoContext.Provider> } diff --git a/src/components/tx/security/tenderly/__tests__/useSimulation.test.ts b/src/components/tx/security/tenderly/__tests__/useSimulation.test.ts index 97b33bd226..9e671ee8fc 100644 --- a/src/components/tx/security/tenderly/__tests__/useSimulation.test.ts +++ b/src/components/tx/security/tenderly/__tests__/useSimulation.test.ts @@ -30,12 +30,12 @@ describe('useSimulation()', () => { it('should have the correct initial values', () => { const { result } = renderHook(() => useSimulation()) - const { simulation, simulationLink, requestError: simulationError, simulationRequestStatus } = result.current + const { simulation, simulationLink, requestError: simulationError, _simulationRequestStatus } = result.current expect(simulation).toBeUndefined() expect(simulationLink).not.toBeUndefined() expect(simulationError).toBeUndefined() - expect(simulationRequestStatus).toEqual(FETCH_STATUS.NOT_ASKED) + expect(_simulationRequestStatus).toEqual(FETCH_STATUS.NOT_ASKED) }) it('should set simulationError on errors and errors can be reset.', async () => { @@ -84,8 +84,8 @@ describe('useSimulation()', () => { ) await waitFor(() => { - const { simulationRequestStatus, requestError: simulationError } = result.current - expect(simulationRequestStatus).toEqual(FETCH_STATUS.ERROR) + const { _simulationRequestStatus, requestError: simulationError } = result.current + expect(_simulationRequestStatus).toEqual(FETCH_STATUS.ERROR) expect(simulationError).toEqual('404 not found') }) @@ -95,7 +95,7 @@ describe('useSimulation()', () => { result.current.resetSimulation() }) - expect(result.current.simulationRequestStatus).toEqual(FETCH_STATUS.NOT_ASKED) + expect(result.current._simulationRequestStatus).toEqual(FETCH_STATUS.NOT_ASKED) expect(result.current.requestError).toBeUndefined() }) @@ -153,8 +153,8 @@ describe('useSimulation()', () => { ) await waitFor(() => { - const { simulationRequestStatus, simulation } = result.current - expect(simulationRequestStatus).toEqual(FETCH_STATUS.SUCCESS) + const { _simulationRequestStatus, simulation } = result.current + expect(_simulationRequestStatus).toEqual(FETCH_STATUS.SUCCESS) expect(simulation?.simulation.status).toBeTruthy() expect(simulation?.simulation.id).toEqual('123') }) @@ -165,7 +165,7 @@ describe('useSimulation()', () => { result.current.resetSimulation() }) - expect(result.current.simulationRequestStatus).toEqual(FETCH_STATUS.NOT_ASKED) + expect(result.current._simulationRequestStatus).toEqual(FETCH_STATUS.NOT_ASKED) expect(result.current.simulation).toBeUndefined() }) @@ -223,8 +223,8 @@ describe('useSimulation()', () => { ) await waitFor(() => { - const { simulationRequestStatus, simulation } = result.current - expect(simulationRequestStatus).toEqual(FETCH_STATUS.SUCCESS) + const { _simulationRequestStatus, simulation } = result.current + expect(_simulationRequestStatus).toEqual(FETCH_STATUS.SUCCESS) expect(simulation?.simulation.status).toBeTruthy() expect(simulation?.simulation.id).toEqual('123') }) diff --git a/src/components/tx/security/tenderly/index.tsx b/src/components/tx/security/tenderly/index.tsx index ab1c75b261..daa15a79b7 100644 --- a/src/components/tx/security/tenderly/index.tsx +++ b/src/components/tx/security/tenderly/index.tsx @@ -10,10 +10,8 @@ import { useDarkMode } from '@/hooks/useDarkMode' import CircularProgress from '@mui/material/CircularProgress' import ExternalLink from '@/components/common/ExternalLink' import { useCurrentChain } from '@/hooks/useChains' -import { FETCH_STATUS } from '@/components/tx/security/tenderly/types' import { isTxSimulationEnabled } from '@/components/tx/security/tenderly/utils' import type { SimulationTxParams } from '@/components/tx/security/tenderly/utils' -import type { TenderlySimulation } from '@/components/tx/security/tenderly/types' import css from './styles.module.css' import sharedCss from '@/components/tx/security/shared/styles.module.css' @@ -27,29 +25,19 @@ export type TxSimulationProps = { disabled: boolean } -const getCallTraceErrors = (simulation?: TenderlySimulation) => { - if (!simulation || !simulation.simulation.status) { - return [] - } - - return simulation.transaction.call_trace.filter((call) => call.error) -} - // TODO: Investigate resetting on gasLimit change as we are not simulating with the gasLimit of the tx // otherwise remove all usage of gasLimit in simulation. Note: this was previously being done. +// TODO: Test this component const TxSimulationBlock = ({ transactions, disabled, gasLimit }: TxSimulationProps): ReactElement => { const { safe } = useSafeInfo() const wallet = useWallet() const isDarkMode = useDarkMode() const { safeTx } = useContext(SafeTxContext) const { - simulation: { simulateTransaction, simulationRequestStatus, resetSimulation }, + simulation: { simulateTransaction, resetSimulation }, + status: { isError, isSuccess, isCallTraceError, isLoading }, } = useContext(TxInfoContext) - const isLoading = simulationRequestStatus === FETCH_STATUS.LOADING - const isSuccess = simulationRequestStatus === FETCH_STATUS.SUCCESS - const isError = simulationRequestStatus === FETCH_STATUS.ERROR - const handleSimulation = async () => { if (!wallet) { return @@ -111,16 +99,16 @@ const TxSimulationBlock = ({ transactions, disabled, gasLimit }: TxSimulationPro color: ({ palette }) => palette.text.secondary, }} /> + ) : isError || isCallTraceError ? ( + <Typography variant="body2" color="error.main" className={sharedCss.result}> + <SvgIcon component={CloseIcon} inheritViewBox fontSize="small" sx={{ verticalAlign: 'middle', mr: 1 }} /> + Error + </Typography> ) : isSuccess ? ( <Typography variant="body2" color="success.main" className={sharedCss.result}> <SvgIcon component={CheckIcon} inheritViewBox fontSize="small" sx={{ verticalAlign: 'middle', mr: 1 }} /> Success </Typography> - ) : isError ? ( - <Typography variant="body2" color="error.main" className={sharedCss.result}> - <SvgIcon component={CloseIcon} inheritViewBox fontSize="small" sx={{ verticalAlign: 'middle', mr: 1 }} /> - Error - </Typography> ) : ( <Button variant="outlined" @@ -147,22 +135,17 @@ export const TxSimulation = (props: TxSimulationProps): ReactElement | null => { return <TxSimulationBlock {...props} /> } +// TODO: Test this component export const TxSimulationMessage = () => { const { - simulation: { simulationRequestStatus, simulationLink, simulation, requestError }, + simulation: { simulationLink, simulation, requestError }, + status: { isError, isSuccess, isCallTraceError, isFinished }, } = useContext(TxInfoContext) - const isFinished = simulationRequestStatus === FETCH_STATUS.SUCCESS || simulationRequestStatus === FETCH_STATUS.ERROR - if (!isFinished) { return null } - const isSuccess = simulation?.simulation.status - // Safe can emit failure event even though Tenderly simulation succeeds - const isCallTraceError = isSuccess && getCallTraceErrors(simulation).length > 0 - const isError = simulationRequestStatus === FETCH_STATUS.ERROR - if (!isSuccess || isError || isCallTraceError) { return ( <Alert severity="error" sx={{ border: 'unset' }}> diff --git a/src/components/tx/security/tenderly/useSimulation.ts b/src/components/tx/security/tenderly/useSimulation.ts index 286d8cdcef..b957d3d3d1 100644 --- a/src/components/tx/security/tenderly/useSimulation.ts +++ b/src/components/tx/security/tenderly/useSimulation.ts @@ -9,7 +9,7 @@ import { asError } from '@/services/exceptions/utils' export type UseSimulationReturn = | { - simulationRequestStatus: FETCH_STATUS.NOT_ASKED | FETCH_STATUS.ERROR | FETCH_STATUS.LOADING + _simulationRequestStatus: FETCH_STATUS.NOT_ASKED | FETCH_STATUS.ERROR | FETCH_STATUS.LOADING simulation: undefined simulateTransaction: (params: SimulationTxParams) => void simulationLink: string @@ -17,7 +17,7 @@ export type UseSimulationReturn = resetSimulation: () => void } | { - simulationRequestStatus: FETCH_STATUS.SUCCESS + _simulationRequestStatus: FETCH_STATUS.SUCCESS simulation: TenderlySimulation simulateTransaction: (params: SimulationTxParams) => void simulationLink: string @@ -63,7 +63,8 @@ export const useSimulation = (): UseSimulationReturn => { return { simulateTransaction, - simulationRequestStatus, + // This is only used by the provider + _simulationRequestStatus: simulationRequestStatus, simulation, simulationLink, requestError, From 01135da86f018e0f05a6f4ddd8048f5e5d1f05e6 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Fri, 14 Jul 2023 12:34:01 +0200 Subject: [PATCH 365/422] fix: also format `inputProps['onChange']` (#2293) --- src/components/common/NumberField/index.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/components/common/NumberField/index.tsx b/src/components/common/NumberField/index.tsx index c5a3066ef1..523812f298 100644 --- a/src/components/common/NumberField/index.tsx +++ b/src/components/common/NumberField/index.tsx @@ -35,6 +35,17 @@ const NumberField = forwardRef<HTMLInputElement, TextFieldProps>(({ onChange, .. return onChange?.(event) }} {...props} + inputProps={{ + ...props.inputProps, + // Autocomplete passes `onChange` in `inputProps` + onChange: (event) => { + // inputProps['onChange'] is generically typed + if ('value' in event.target && typeof event.target.value === 'string') { + event.target.value = _formatNumber(event.target.value) + return props.inputProps?.onChange?.(event) + } + }, + }} /> ) }) From 327b4cd0593ebdea03b0fab2755b7c397fdcd6d5 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Thu, 20 Jul 2023 11:58:45 +0200 Subject: [PATCH 366/422] fix: use the deployment by `chainId` (#2246) * fix: use the deployment by `chainId` * fix: add test --- .../FallbackHandler/__tests__/index.test.tsx | 37 +++++++++++++++++++ .../settings/FallbackHandler/index.tsx | 3 +- src/hooks/coreSDK/safeCoreSDK.ts | 4 +- .../modules/DelegateCallModule/index.ts | 2 +- 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/src/components/settings/FallbackHandler/__tests__/index.test.tsx b/src/components/settings/FallbackHandler/__tests__/index.test.tsx index 2c65d13404..4546a74e75 100644 --- a/src/components/settings/FallbackHandler/__tests__/index.test.tsx +++ b/src/components/settings/FallbackHandler/__tests__/index.test.tsx @@ -45,6 +45,43 @@ describe('FallbackHandler', () => { }) }) + it('should render the Fallback Handler without warning when one that is not a default address is set', async () => { + const OPTIMISM_FALLBACK_HANDLER = '0x69f4D1788e39c87893C980c06EdF4b7f686e2938' + + // Optimism is not a "default" address + expect(OPTIMISM_FALLBACK_HANDLER).not.toBe(GOERLI_FALLBACK_HANDLER) + + jest.spyOn(useSafeInfoHook, 'default').mockImplementation( + () => + ({ + safe: { + version: '1.3.0', + chainId: '10', + fallbackHandler: { + value: OPTIMISM_FALLBACK_HANDLER, + name: 'FallbackHandlerName', + }, + }, + } as unknown as ReturnType<typeof useSafeInfoHook.default>), + ) + + const fbHandler = render(<FallbackHandler />) + + await waitFor(() => { + expect( + fbHandler.queryByText( + 'The fallback handler adds fallback logic for funtionality that may not be present in the Safe contract. Learn more about the fallback handler', + ), + ).toBeDefined() + + expect(fbHandler.getByText(OPTIMISM_FALLBACK_HANDLER)).toBeDefined() + + expect(fbHandler.getByText('FallbackHandlerName')).toBeDefined() + + expect(fbHandler.queryByText('An unofficial fallback handler is currently set.')).not.toBeInTheDocument() + }) + }) + it('should use the official deployment name if the address is official but no known name is present', async () => { jest.spyOn(useSafeInfoHook, 'default').mockImplementation( () => diff --git a/src/components/settings/FallbackHandler/index.tsx b/src/components/settings/FallbackHandler/index.tsx index 19ab5348e1..3d921be961 100644 --- a/src/components/settings/FallbackHandler/index.tsx +++ b/src/components/settings/FallbackHandler/index.tsx @@ -33,7 +33,8 @@ export const FallbackHandler = (): ReactElement | null => { return null } - const isOfficial = !!safe.fallbackHandler && safe.fallbackHandler.value === fallbackHandlerDeployment?.defaultAddress + const isOfficial = + !!safe.fallbackHandler && safe.fallbackHandler.value === fallbackHandlerDeployment?.networkAddresses[safe.chainId] const tooltip = !safe.fallbackHandler ? ( <> diff --git a/src/hooks/coreSDK/safeCoreSDK.ts b/src/hooks/coreSDK/safeCoreSDK.ts index 155166b3eb..f942e96469 100644 --- a/src/hooks/coreSDK/safeCoreSDK.ts +++ b/src/hooks/coreSDK/safeCoreSDK.ts @@ -76,8 +76,8 @@ export const initSafeSDK = async ({ const safeL1Deployment = getSafeSingletonDeployment({ network: chainId, version: safeVersion }) const safeL2Deployment = getSafeL2SingletonDeployment({ network: chainId, version: safeVersion }) - isL1SafeMasterCopy = masterCopy === safeL1Deployment?.defaultAddress - const isL2SafeMasterCopy = masterCopy === safeL2Deployment?.defaultAddress + isL1SafeMasterCopy = masterCopy === safeL1Deployment?.networkAddresses[chainId] + const isL2SafeMasterCopy = masterCopy === safeL2Deployment?.networkAddresses[chainId] // Unknown deployment, which we do not want to support if (!isL1SafeMasterCopy && !isL2SafeMasterCopy) { diff --git a/src/services/security/modules/DelegateCallModule/index.ts b/src/services/security/modules/DelegateCallModule/index.ts index 489f5a5ab9..e9704a3a17 100644 --- a/src/services/security/modules/DelegateCallModule/index.ts +++ b/src/services/security/modules/DelegateCallModule/index.ts @@ -30,7 +30,7 @@ export class DelegateCallModule implements SecurityModule<DelegateCallModuleRequ // We need not check for nested delegate calls as we only use MultiSendCallOnly in the UI const multiSendDeployment = getMultiSendCallOnlyDeployment({ network: chainId, version: safeVersion ?? undefined }) - return multiSendDeployment?.defaultAddress !== safeTransaction.data.to + return multiSendDeployment?.networkAddresses[chainId] !== safeTransaction.data.to } async scanTransaction(request: DelegateCallModuleRequest): Promise<SecurityResponse<DelegateCallModuleResponse>> { From 4afb12f11ffd566f2a31544ddbf97ba8e966354d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= <6764315+germartinez@users.noreply.github.com> Date: Fri, 21 Jul 2023 18:46:26 +0200 Subject: [PATCH 367/422] Update links pointing to the Safe documentation (#2297) --- src/components/safe-apps/AddCustomAppModal/index.tsx | 2 +- src/components/settings/SafeModules/index.tsx | 2 +- src/config/constants.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/safe-apps/AddCustomAppModal/index.tsx b/src/components/safe-apps/AddCustomAppModal/index.tsx index 0f1b8dcc2d..c32fce32cf 100644 --- a/src/components/safe-apps/AddCustomAppModal/index.tsx +++ b/src/components/safe-apps/AddCustomAppModal/index.tsx @@ -45,7 +45,7 @@ type CustomAppFormData = { safeApp: SafeAppData } -const HELP_LINK = 'https://docs.safe.global/build/sdks/safe-apps' +const HELP_LINK = 'https://docs.safe.global/safe-core-aa-sdk/safe-apps/get-started' const APP_ALREADY_IN_THE_LIST_ERROR = 'This Safe App is already in the list' const MANIFEST_ERROR = "The app doesn't support Safe App functionality" const INVALID_URL_ERROR = 'The url is invalid' diff --git a/src/components/settings/SafeModules/index.tsx b/src/components/settings/SafeModules/index.tsx index 9c1dca7c56..aeb9b99025 100644 --- a/src/components/settings/SafeModules/index.tsx +++ b/src/components/settings/SafeModules/index.tsx @@ -65,7 +65,7 @@ const SafeModules = () => { <Typography> Modules allow you to customize the access-control logic of your Safe Account. Modules are potentially risky, so make sure to only use modules from trusted sources. Learn more about modules{' '} - <ExternalLink href="https://docs.safe.global/contracts/modules-1">here</ExternalLink> + <ExternalLink href="https://docs.safe.global/safe-core-protocol/plugins">here</ExternalLink> </Typography> {safeModules.length === 0 ? ( <NoModules /> diff --git a/src/config/constants.ts b/src/config/constants.ts index e1217ea980..285673028c 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -37,7 +37,7 @@ export const SAFE_TOKEN_ADDRESSES: { [chainId: string]: string } = { export const SAFE_APPS_INFURA_TOKEN = process.env.NEXT_PUBLIC_SAFE_APPS_INFURA_TOKEN || INFURA_TOKEN export const SAFE_APPS_THIRD_PARTY_COOKIES_CHECK_URL = 'https://third-party-cookies-check.gnosis-safe.com' export const SAFE_APPS_DEMO_SAFE_MAINNET = 'eth:0xfF501B324DC6d78dC9F983f140B9211c3EdB4dc7' -export const SAFE_APPS_SDK_DOCS_URL = 'https://docs.safe.global/learn/safe-tools/sdks/safe-apps' +export const SAFE_APPS_SDK_DOCS_URL = 'https://docs.safe.global/safe-core-aa-sdk/safe-apps' // Google Tag Manager export const GOOGLE_TAG_MANAGER_ID = process.env.NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID || '' From fbd7b52147f3c61bb720e31e77034b372f903691 Mon Sep 17 00:00:00 2001 From: Manuel Gellfart <manu@safe.global> Date: Tue, 25 Jul 2023 14:33:54 +0200 Subject: [PATCH 368/422] fix: show error for reverted txs (#2302) --- src/components/tx-flow/flows/SuccessScreen/index.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/tx-flow/flows/SuccessScreen/index.tsx b/src/components/tx-flow/flows/SuccessScreen/index.tsx index f3d1fadf5a..550b7d0f90 100644 --- a/src/components/tx-flow/flows/SuccessScreen/index.tsx +++ b/src/components/tx-flow/flows/SuccessScreen/index.tsx @@ -29,11 +29,13 @@ export const SuccessScreen = ({ txId }: { txId: string }) => { }, [txHash]) useEffect(() => { - const unsubscribe = txSubscribe(TxEvent.FAILED, (detail) => { - if (detail.txId === txId) setError(detail.error) - }) + const unsubFns: Array<() => void> = ([TxEvent.FAILED, TxEvent.REVERTED] as const).map((event) => + txSubscribe(event, (detail) => { + if (detail.txId === txId) setError(detail.error) + }), + ) - return unsubscribe + return () => unsubFns.forEach((unsubscribe) => unsubscribe()) }, [txId]) const homeLink: UrlObject = { From bc8a9ba685c47e1377a5c47b45f2dea74b4a06f0 Mon Sep 17 00:00:00 2001 From: Manuel Gellfart <manu@safe.global> Date: Wed, 26 Jul 2023 20:59:26 +0200 Subject: [PATCH 369/422] fix: show failed simulations correctly (#2308) --- src/components/tx/security/tenderly/index.tsx | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/components/tx/security/tenderly/index.tsx b/src/components/tx/security/tenderly/index.tsx index daa15a79b7..4f1487205e 100644 --- a/src/components/tx/security/tenderly/index.tsx +++ b/src/components/tx/security/tenderly/index.tsx @@ -35,7 +35,7 @@ const TxSimulationBlock = ({ transactions, disabled, gasLimit }: TxSimulationPro const { safeTx } = useContext(SafeTxContext) const { simulation: { simulateTransaction, resetSimulation }, - status: { isError, isSuccess, isCallTraceError, isLoading }, + status: { isFinished, isError, isSuccess, isCallTraceError, isLoading }, } = useContext(TxInfoContext) const handleSimulation = async () => { @@ -99,16 +99,18 @@ const TxSimulationBlock = ({ transactions, disabled, gasLimit }: TxSimulationPro color: ({ palette }) => palette.text.secondary, }} /> - ) : isError || isCallTraceError ? ( - <Typography variant="body2" color="error.main" className={sharedCss.result}> - <SvgIcon component={CloseIcon} inheritViewBox fontSize="small" sx={{ verticalAlign: 'middle', mr: 1 }} /> - Error - </Typography> - ) : isSuccess ? ( - <Typography variant="body2" color="success.main" className={sharedCss.result}> - <SvgIcon component={CheckIcon} inheritViewBox fontSize="small" sx={{ verticalAlign: 'middle', mr: 1 }} /> - Success - </Typography> + ) : isFinished ? ( + !isSuccess || isError || isCallTraceError ? ( + <Typography variant="body2" color="error.main" className={sharedCss.result}> + <SvgIcon component={CloseIcon} inheritViewBox fontSize="small" sx={{ verticalAlign: 'middle', mr: 1 }} /> + Error + </Typography> + ) : ( + <Typography variant="body2" color="success.main" className={sharedCss.result}> + <SvgIcon component={CheckIcon} inheritViewBox fontSize="small" sx={{ verticalAlign: 'middle', mr: 1 }} /> + Success + </Typography> + ) ) : ( <Button variant="outlined" From 841230d24cf375c9e4612c9f90f6066b149be08e Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Wed, 26 Jul 2023 21:02:41 +0200 Subject: [PATCH 370/422] fix: centralise flow + reduce success screen width (#2309) --- .../common/TxModalDialog/styles.module.css | 5 ++ .../tx-flow/common/TxLayout/index.tsx | 48 ++++++++++--------- .../tx-flow/common/TxLayout/styles.module.css | 9 +++- .../tx-flow/common/TxStatusWidget/index.tsx | 4 +- .../common/TxStatusWidget/styles.module.css | 13 +++-- src/components/tx-flow/flows/NewTx/index.tsx | 2 +- .../tx-flow/flows/SuccessScreen/index.tsx | 3 +- 7 files changed, 49 insertions(+), 35 deletions(-) diff --git a/src/components/common/TxModalDialog/styles.module.css b/src/components/common/TxModalDialog/styles.module.css index 30ad5e0157..cc5941f166 100644 --- a/src/components/common/TxModalDialog/styles.module.css +++ b/src/components/common/TxModalDialog/styles.module.css @@ -38,6 +38,7 @@ .close { color: var(--color-border-main); padding: var(--space-1); + background-color: var(--color-border-light); } .paper { @@ -76,6 +77,10 @@ background-color: var(--color-background-paper); } + .close { + background-color: unset; + } + .close svg { font-size: 1.5rem; } diff --git a/src/components/tx-flow/common/TxLayout/index.tsx b/src/components/tx-flow/common/TxLayout/index.tsx index 652f633055..733ad21b77 100644 --- a/src/components/tx-flow/common/TxLayout/index.tsx +++ b/src/components/tx-flow/common/TxLayout/index.tsx @@ -92,28 +92,29 @@ const TxLayout = ({ <SafeTxProvider> <TxInfoProvider> <TxSecurityProvider> - <Container className={css.container}> - <Grid container alignItems="center" justifyContent="center"> - <Grid item container xs={12}> - <Grid item xs={12} md={7} className={css.titleWrapper}> - <Typography variant="h3" component="div" fontWeight="700" className={css.title}> - {title} - </Typography> - - <ChainIndicator inline /> - </Grid> - <IconButton - className={css.statusButton} - aria-label="Transaction status" - size="large" - onClick={toggleStatus} - > - <SafeLogo width={16} height={16} /> - </IconButton> - </Grid> - - <Grid item container xs={12} gap={3}> + <> + {/* Header status button */} + <IconButton + className={css.statusButton} + aria-label="Transaction status" + size="large" + onClick={toggleStatus} + > + <SafeLogo width={16} height={16} /> + </IconButton> + + <Container className={css.container}> + <Grid container gap={3} justifyContent="center"> + {/* Main content */} <Grid item xs={12} md={7}> + <div className={css.titleWrapper}> + <Typography variant="h3" component="div" fontWeight="700" className={css.title}> + {title} + </Typography> + + <ChainIndicator inline /> + </div> + <Paper className={css.header}> <Box className={css.progressBar}> <ProgressBar value={progress} /> @@ -133,6 +134,7 @@ const TxLayout = ({ </div> </Grid> + {/* Sidebar */} <Grid item xs={12} md={4} className={classnames(css.widget, { [css.active]: statusVisible })}> {statusVisible && ( <TxStatusWidget @@ -151,8 +153,8 @@ const TxLayout = ({ </Box> </Grid> </Grid> - </Grid> - </Container> + </Container> + </> </TxSecurityProvider> </TxInfoProvider> </SafeTxProvider> diff --git a/src/components/tx-flow/common/TxLayout/styles.module.css b/src/components/tx-flow/common/TxLayout/styles.module.css index 504c07542d..5ff2454e6a 100644 --- a/src/components/tx-flow/common/TxLayout/styles.module.css +++ b/src/components/tx-flow/common/TxLayout/styles.module.css @@ -11,7 +11,8 @@ display: flex; justify-content: space-between; align-items: center; - padding: var(--space-3); + /* Remove height of progress bar */ + padding: calc(var(--space-3) - 6px) var(--space-3) var(--space-3); border-bottom: 1px solid var(--color-border-light); } @@ -103,6 +104,11 @@ margin-bottom: var(--space-2); } +.widget { + /* Height of transaction type title */ + margin-top: 46px; +} + @media (max-width: 899.95px) { .widget { position: absolute; @@ -111,6 +117,7 @@ width: 100%; height: 100%; z-index: -1; + margin-top: unset; } .widget.active { diff --git a/src/components/tx-flow/common/TxStatusWidget/index.tsx b/src/components/tx-flow/common/TxStatusWidget/index.tsx index a702265558..d3fce261e0 100644 --- a/src/components/tx-flow/common/TxStatusWidget/index.tsx +++ b/src/components/tx-flow/common/TxStatusWidget/index.tsx @@ -47,8 +47,8 @@ const TxStatusWidget = ({ return ( <Paper> <div className={css.header}> - <SafeLogo width={32} height={32} className={css.logo} /> - <Typography variant="h6" fontWeight="700" className={css.title}> + <Typography fontWeight="700" display="flex" alignItems="center" gap={1}> + <SafeLogo width={16} height={16} className={css.logo} /> Transaction status </Typography> <IconButton className={css.close} aria-label="close" onClick={handleClose} size="small"> diff --git a/src/components/tx-flow/common/TxStatusWidget/styles.module.css b/src/components/tx-flow/common/TxStatusWidget/styles.module.css index 80817f9cd0..3408f2bace 100644 --- a/src/components/tx-flow/common/TxStatusWidget/styles.module.css +++ b/src/components/tx-flow/common/TxStatusWidget/styles.module.css @@ -1,13 +1,12 @@ .header { - padding: var(--space-3); + padding: var(--space-4) var(--space-3); display: flex; flex-direction: column; - align-items: center; gap: var(--space-1); } .content { - padding: var(--space-3); + padding: var(--space-2); } .status { @@ -83,11 +82,11 @@ margin-left: 16px; } - .title { - font-size: 16px; - } - .close { display: flex; } + + .content { + padding: var(--space-3); + } } diff --git a/src/components/tx-flow/flows/NewTx/index.tsx b/src/components/tx-flow/flows/NewTx/index.tsx index 55e85333ef..ab0c615eb0 100644 --- a/src/components/tx-flow/flows/NewTx/index.tsx +++ b/src/components/tx-flow/flows/NewTx/index.tsx @@ -23,7 +23,7 @@ const NewTxMenu = () => { return ( <Container className={css.container}> - <Grid container> + <Grid container justifyContent="center"> {/* Alignment of `TxLayout` */} <Grid item xs={12} md={11} display="flex" flexDirection="column"> <ChainIndicator inline className={css.chain} /> diff --git a/src/components/tx-flow/flows/SuccessScreen/index.tsx b/src/components/tx-flow/flows/SuccessScreen/index.tsx index 550b7d0f90..641a0b51d1 100644 --- a/src/components/tx-flow/flows/SuccessScreen/index.tsx +++ b/src/components/tx-flow/flows/SuccessScreen/index.tsx @@ -51,8 +51,9 @@ export const SuccessScreen = ({ txId }: { txId: string }) => { disableGutters sx={{ textAlign: 'center', + maxWidth: `${900 - 75}px`, // md={11} }} - maxWidth="md" + maxWidth={false} > <div className={css.row}> <StatusMessage status={status} error={error} /> From 61eb8d264274dd3a1b3f763ad5d645220ffca8d6 Mon Sep 17 00:00:00 2001 From: Daniel <32246390+danielpartida@users.noreply.github.com> Date: Wed, 26 Jul 2023 22:02:44 +0200 Subject: [PATCH 371/422] Add Plausible Analytics script (#2307) --- src/components/common/MetaTags/index.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/common/MetaTags/index.tsx b/src/components/common/MetaTags/index.tsx index a53c3f37c0..837cf83bfb 100644 --- a/src/components/common/MetaTags/index.tsx +++ b/src/components/common/MetaTags/index.tsx @@ -43,6 +43,9 @@ const MetaTags = ({ prefetchUrl }: { prefetchUrl: string }) => ( <link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png" /> <link rel="icon" type="image/png" sizes="16x16" href="/favicons/favicon-16x16.png" /> <link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#000" /> + + {/* Plausible Analytics */} + <script defer data-domain="app.safe.global" src="https://plausible.io/js/script.js"></script> </> ) From 5aba188af275c38fb8621bd4a65ee6a548fb23bd Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Thu, 27 Jul 2023 09:33:13 +0200 Subject: [PATCH 372/422] Fix: load plausible analytics only on prod and official domain + add it to CSP (#2311) --- src/components/common/MetaTags/index.tsx | 6 ++++-- src/config/securityHeaders.ts | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/common/MetaTags/index.tsx b/src/components/common/MetaTags/index.tsx index 837cf83bfb..89a0d122a1 100644 --- a/src/components/common/MetaTags/index.tsx +++ b/src/components/common/MetaTags/index.tsx @@ -1,4 +1,4 @@ -import { IS_PRODUCTION } from '@/config/constants' +import { IS_PRODUCTION, IS_OFFICIAL_HOST } from '@/config/constants' import { ContentSecurityPolicy, StrictTransportSecurity } from '@/config/securityHeaders' import { lightPalette, darkPalette } from '@safe-global/safe-react-components' @@ -45,7 +45,9 @@ const MetaTags = ({ prefetchUrl }: { prefetchUrl: string }) => ( <link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#000" /> {/* Plausible Analytics */} - <script defer data-domain="app.safe.global" src="https://plausible.io/js/script.js"></script> + {IS_PRODUCTION && IS_OFFICIAL_HOST && ( + <script defer data-domain="app.safe.global" src="https://plausible.io/js/script.js"></script> + )} </> ) diff --git a/src/config/securityHeaders.ts b/src/config/securityHeaders.ts index 3da8be5bf0..0f9dd2c959 100644 --- a/src/config/securityHeaders.ts +++ b/src/config/securityHeaders.ts @@ -12,14 +12,14 @@ import { CYPRESS_MNEMONIC, IS_PRODUCTION } from '@/config/constants' export const ContentSecurityPolicy = ` default-src 'self'; connect-src 'self' *; - script-src 'self' https://www.google-analytics.com https://ssl.google-analytics.com 'unsafe-inline' https://*.getbeamer.com https://www.googletagmanager.com https://*.ingest.sentry.io https://sentry.io ${ + script-src 'self' https://www.google-analytics.com https://ssl.google-analytics.com 'unsafe-inline' https://*.getbeamer.com https://www.googletagmanager.com https://*.ingest.sentry.io https://sentry.io https://plausible.io ${ !IS_PRODUCTION || /* TODO: remove after moving cypress to görli and testing in staging again!! */ CYPRESS_MNEMONIC ? "'unsafe-eval'" : '' }; frame-src *; style-src 'self' 'unsafe-inline' https://*.getbeamer.com https://*.googleapis.com; - font-src 'self' data:; + font-src 'self' data:; worker-src 'self' blob:; img-src * data:; ` From 00c044f793498b25b60aaf5b07368a5d9d6ce991 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Thu, 27 Jul 2023 12:12:47 +0200 Subject: [PATCH 373/422] Fix: make tx modal higher than queue drawer (#2312) --- src/components/common/TxModalDialog/styles.module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/common/TxModalDialog/styles.module.css b/src/components/common/TxModalDialog/styles.module.css index cc5941f166..e017f00067 100644 --- a/src/components/common/TxModalDialog/styles.module.css +++ b/src/components/common/TxModalDialog/styles.module.css @@ -1,7 +1,7 @@ .dialog { top: 52px; left: 230px; - z-index: 3; + z-index: 1201; transition: left 225ms cubic-bezier(0, 0, 0.2, 1) 0ms; } From ff5f450e38af6113c2c3d577ab15a6de84f183ce Mon Sep 17 00:00:00 2001 From: katspaugh <katspaugh@gmail.com> Date: Thu, 27 Jul 2023 12:27:41 +0200 Subject: [PATCH 374/422] Fix: show onboard modal when connecting last wallet --- src/hooks/wallets/useOnboard.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index ef8fef73d8..d440c01c8c 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -188,7 +188,7 @@ export const useInitOnboard = () => { isWalletUnlocked(label).then((isUnlocked) => { isUnlocked && connectWallet(onboard, { - autoSelect: { label, disableModals: true }, + autoSelect: { label, disableModals: false }, }) }) }) From cd2e9acac70baf4d28adac4bae1cc42fa2a64a51 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Thu, 27 Jul 2023 16:28:35 +0200 Subject: [PATCH 375/422] Fix: minimize queue drawer when tx modal is opened (#2317) * Fix: minimize queue drawer when tx modal is opened * 1.15.1 --- package.json | 2 +- src/components/common/TxModalDialog/styles.module.css | 2 +- .../safe-apps/AppFrame/useTransactionQueueBarState.ts | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index edebd62a1e..4b7b4644c3 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/safe-global/safe-wallet-web", "license": "GPL-3.0", "type": "module", - "version": "1.15.0", + "version": "1.15.1", "scripts": { "dev": "next dev", "start": "next dev", diff --git a/src/components/common/TxModalDialog/styles.module.css b/src/components/common/TxModalDialog/styles.module.css index e017f00067..cc5941f166 100644 --- a/src/components/common/TxModalDialog/styles.module.css +++ b/src/components/common/TxModalDialog/styles.module.css @@ -1,7 +1,7 @@ .dialog { top: 52px; left: 230px; - z-index: 1201; + z-index: 3; transition: left 225ms cubic-bezier(0, 0, 0.2, 1) 0ms; } diff --git a/src/components/safe-apps/AppFrame/useTransactionQueueBarState.ts b/src/components/safe-apps/AppFrame/useTransactionQueueBarState.ts index bd2f003c9b..e24ab58e46 100644 --- a/src/components/safe-apps/AppFrame/useTransactionQueueBarState.ts +++ b/src/components/safe-apps/AppFrame/useTransactionQueueBarState.ts @@ -1,15 +1,21 @@ -import { useCallback, useState } from 'react' +import { useCallback, useContext, useEffect, useState } from 'react' import useTxQueue from '@/hooks/useTxQueue' +import { TxModalContext } from '@/components/tx-flow' const useTransactionQueueBarState = () => { const [expanded, setExpanded] = useState(false) const [dismissedByUser, setDismissedByUser] = useState(false) const { page = { results: [] } } = useTxQueue() + const { txFlow } = useContext(TxModalContext) const dismissQueueBar = useCallback((): void => { setDismissedByUser(true) }, []) + useEffect(() => { + if (txFlow) setExpanded(false) + }, [txFlow]) + return { expanded, dismissedByUser, From 4c46aabf916f8bc49b0fcaec09b9d06d1afd4926 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Fri, 28 Jul 2023 13:49:24 +0200 Subject: [PATCH 376/422] Fix: always keep the nonce of existing txs (#2323) --- src/components/tx-flow/SafeTxProvider.tsx | 8 ++++++-- .../tx-flow/flows/ConfirmTx/ConfirmProposedTx.tsx | 9 +++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/components/tx-flow/SafeTxProvider.tsx b/src/components/tx-flow/SafeTxProvider.tsx index a268244484..cdc263d815 100644 --- a/src/components/tx-flow/SafeTxProvider.tsx +++ b/src/components/tx-flow/SafeTxProvider.tsx @@ -3,6 +3,7 @@ import type { Dispatch, ReactNode, SetStateAction, ReactElement } from 'react' import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' import { createTx } from '@/services/tx/tx-sender' import { useRecommendedNonce, useSafeTxGas } from '../tx/SignOrExecuteForm/hooks' +import { Errors, logError } from '@/services/exceptions' export const SafeTxContext = createContext<{ safeTx?: SafeTransaction @@ -28,8 +29,6 @@ export const SafeTxContext = createContext<{ setSafeTxGas: () => {}, }) -// (err) => logError(Errors._103, err) - const SafeTxProvider = ({ children }: { children: ReactNode }): ReactElement => { const [safeTx, setSafeTx] = useState<SafeTransaction>() const [safeTxError, setSafeTxError] = useState<Error>() @@ -58,6 +57,11 @@ const SafeTxProvider = ({ children }: { children: ReactNode }): ReactElement => .catch(setSafeTxError) }, [isSigned, finalNonce, finalSafeTxGas, safeTx?.data]) + // Log errors + useEffect(() => { + safeTxError && logError(Errors._103, safeTxError) + }, [safeTxError]) + return ( <SafeTxContext.Provider value={{ diff --git a/src/components/tx-flow/flows/ConfirmTx/ConfirmProposedTx.tsx b/src/components/tx-flow/flows/ConfirmTx/ConfirmProposedTx.tsx index 557378f935..8ae5e64e11 100644 --- a/src/components/tx-flow/flows/ConfirmTx/ConfirmProposedTx.tsx +++ b/src/components/tx-flow/flows/ConfirmTx/ConfirmProposedTx.tsx @@ -4,7 +4,7 @@ import useSafeInfo from '@/hooks/useSafeInfo' import { useChainId } from '@/hooks/useChainId' import useWallet from '@/hooks/wallets/useWallet' import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' -import { isExecutable, isSignableBy } from '@/utils/transaction-guards' +import { isExecutable, isMultisigExecutionInfo, isSignableBy } from '@/utils/transaction-guards' import { Typography } from '@mui/material' import { createExistingTx } from '@/services/tx/tx-sender' import { SafeTxContext } from '../../SafeTxProvider' @@ -21,12 +21,17 @@ const ConfirmProposedTx = ({ txSummary }: ConfirmProposedTxProps): ReactElement const wallet = useWallet() const { safe, safeAddress } = useSafeInfo() const chainId = useChainId() - const { setSafeTx, setSafeTxError } = useContext(SafeTxContext) + const { setSafeTx, setSafeTxError, setNonce } = useContext(SafeTxContext) const txId = txSummary.id + const txNonce = isMultisigExecutionInfo(txSummary.executionInfo) ? txSummary.executionInfo.nonce : undefined const canExecute = isExecutable(txSummary, wallet?.address || '', safe) const canSign = isSignableBy(txSummary, wallet?.address || '') + useEffect(() => { + txNonce && setNonce(txNonce) + }, [setNonce, txNonce]) + useEffect(() => { createExistingTx(chainId, safeAddress, txId).then(setSafeTx).catch(setSafeTxError) }, [txId, safeAddress, chainId, setSafeTx, setSafeTxError]) From c455163c418d4eb05de9be2015fce12e290ae4d9 Mon Sep 17 00:00:00 2001 From: katspaugh <katspaugh@gmail.com> Date: Fri, 28 Jul 2023 13:49:50 +0200 Subject: [PATCH 377/422] 1.15.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4b7b4644c3..b59426b6b2 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/safe-global/safe-wallet-web", "license": "GPL-3.0", "type": "module", - "version": "1.15.1", + "version": "1.15.2", "scripts": { "dev": "next dev", "start": "next dev", From e1eadbcd0c8a72c9fb3c57fe5bebc008298df049 Mon Sep 17 00:00:00 2001 From: iamacook <aaron@safe.global> Date: Mon, 31 Jul 2023 09:34:37 +0100 Subject: [PATCH 378/422] feat: add "Transaction is executed" to success --- .../tx-flow/flows/SuccessScreen/StatusStepper.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx b/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx index 936fe3e6fe..5852deda79 100644 --- a/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx +++ b/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx @@ -49,6 +49,13 @@ const StatusStepper = ({ status, txHash }: { status: PendingStatus; txHash?: str </Typography> </StatusStep> </Step> + <Step> + <StatusStep isLoading={!isSuccess} safeAddress={safeAddress}> + <Typography variant="body2" fontWeight="700"> + Transaction is executed + </Typography> + </StatusStep> + </Step> </Stepper> ) } From dac1fea7ae5eb6aea5e35a903fb9942b632f916e Mon Sep 17 00:00:00 2001 From: iamacook <aaron@safe.global> Date: Mon, 31 Jul 2023 09:36:18 +0100 Subject: [PATCH 379/422] Revert "feat: add "Transaction is executed" to success" This reverts commit e1eadbcd0c8a72c9fb3c57fe5bebc008298df049. --- .../tx-flow/flows/SuccessScreen/StatusStepper.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx b/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx index 5852deda79..936fe3e6fe 100644 --- a/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx +++ b/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx @@ -49,13 +49,6 @@ const StatusStepper = ({ status, txHash }: { status: PendingStatus; txHash?: str </Typography> </StatusStep> </Step> - <Step> - <StatusStep isLoading={!isSuccess} safeAddress={safeAddress}> - <Typography variant="body2" fontWeight="700"> - Transaction is executed - </Typography> - </StatusStep> - </Step> </Stepper> ) } From d86bacd74a59530a8ec1214ca2cd17a7f883c2bf Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Mon, 31 Jul 2023 12:35:48 +0200 Subject: [PATCH 380/422] Fix: mobile pairing check (#2327) * Fix: mobile pairing check * Fix tests --- src/services/pairing/__tests__/utils.test.ts | 11 +++++++---- src/services/pairing/utils.ts | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/services/pairing/__tests__/utils.test.ts b/src/services/pairing/__tests__/utils.test.ts index 251e6f987f..04b7cd426a 100644 --- a/src/services/pairing/__tests__/utils.test.ts +++ b/src/services/pairing/__tests__/utils.test.ts @@ -27,15 +27,18 @@ describe('Pairing utils', () => { describe('isPairingSupported', () => { it('should return true if the wallet is enabled', () => { - const result = isPairingSupported(['walletConnect']) + const disabledWallets = ['walletConnect'] + const result = isPairingSupported(disabledWallets) expect(result).toBe(true) }) it('should return false if the wallet is disabled', () => { - const result1 = isPairingSupported([]) - expect(result1).toBe(false) + const disabledWallets1: string[] = [] + const result1 = isPairingSupported(disabledWallets1) + expect(result1).toBe(true) - const result2 = isPairingSupported(['safeMobile']) + const disabledWallets2 = ['safeMobile'] + const result2 = isPairingSupported(disabledWallets2) expect(result2).toBe(false) }) }) diff --git a/src/services/pairing/utils.ts b/src/services/pairing/utils.ts index 1f559e1809..9cec8eb27e 100644 --- a/src/services/pairing/utils.ts +++ b/src/services/pairing/utils.ts @@ -30,7 +30,7 @@ export const killPairingSession = (connector: InstanceType<typeof WalletConnect> } export const isPairingSupported = (disabledWallets?: string[]) => { - return !!disabledWallets?.length && !disabledWallets.includes(CGW_NAMES[WALLET_KEYS.PAIRING] as string) + return disabledWallets && !disabledWallets.includes(CGW_NAMES[WALLET_KEYS.PAIRING] as string) } export const _isPairingSessionExpired = (session: IWalletConnectSession): boolean => { From c0317359b419426d32b3ca348adbd60d4c7bde3a Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Mon, 31 Jul 2023 12:14:45 +0100 Subject: [PATCH 381/422] feat: add "Transaction is executed" to stepper (#2328) --- .../tx-flow/flows/SuccessScreen/StatusStepper.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx b/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx index 936fe3e6fe..5852deda79 100644 --- a/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx +++ b/src/components/tx-flow/flows/SuccessScreen/StatusStepper.tsx @@ -49,6 +49,13 @@ const StatusStepper = ({ status, txHash }: { status: PendingStatus; txHash?: str </Typography> </StatusStep> </Step> + <Step> + <StatusStep isLoading={!isSuccess} safeAddress={safeAddress}> + <Typography variant="body2" fontWeight="700"> + Transaction is executed + </Typography> + </StatusStep> + </Step> </Stepper> ) } From 793cd980039fe5dda1e19a1598eba143579ef5a4 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Mon, 31 Jul 2023 15:54:53 +0100 Subject: [PATCH 382/422] fix: replacement nonce dropdown style (#2318) * fix: replacement nonce dropdown style * fix: tweak style * fix: reduce padding --- .../tx-flow/common/TxNonce/index.tsx | 50 +++++++++++++++---- .../tx-flow/common/TxNonce/styles.module.css | 22 ++++++++ 2 files changed, 61 insertions(+), 11 deletions(-) diff --git a/src/components/tx-flow/common/TxNonce/index.tsx b/src/components/tx-flow/common/TxNonce/index.tsx index 378afc43c5..c472641793 100644 --- a/src/components/tx-flow/common/TxNonce/index.tsx +++ b/src/components/tx-flow/common/TxNonce/index.tsx @@ -11,6 +11,8 @@ import { type MenuItemProps, MenuItem, Typography, + ListSubheader, + type ListSubheaderProps, } from '@mui/material' import { Controller, useForm } from 'react-hook-form' @@ -28,10 +30,25 @@ import { isRejectionTx } from '@/utils/transactions' import css from './styles.module.css' import classNames from 'classnames' -const CustomPopper = function (props: PopperProps) { - return <Popper {...props} sx={{ width: '300px !important' }} placement="bottom-start" /> +const CustomPopper = function ({ + // Don't set width of Popper to that of the field + style: _, + className, + ...props +}: PopperProps) { + return <Popper {...props} className={classNames(className, css.popper)} placement="bottom-start" /> } +const NonceFormHeader = memo(function NonceFormSubheader({ children, ...props }: ListSubheaderProps) { + return ( + <ListSubheader {...props} disableSticky> + <Typography variant="caption" fontWeight={700} color="text.secondary"> + {children} + </Typography> + </ListSubheader> + ) +}) + const NonceFormOption = memo(function NonceFormOption({ nonce, menuItemProps, @@ -43,13 +60,21 @@ const NonceFormOption = memo(function NonceFormOption({ const transactions = useQueuedTxByNonce(Number(nonce)) const label = useMemo(() => { - const [{ transaction }] = getLatestTransactions(transactions) + const latestTransactions = getLatestTransactions(transactions) + + if (latestTransactions.length === 0) { + return + } + + const [{ transaction }] = latestTransactions return getTransactionType(transaction, addressBook).text }, [addressBook, transactions]) return ( <MenuItem {...menuItemProps}> - {nonce} ({label} transaction) + <Typography variant="body2"> + <b>{nonce}</b> - {`${label || 'New'} transaction`} + </Typography> </MenuItem> ) }) @@ -113,7 +138,7 @@ const TxNonceForm = ({ nonce, recommendedNonce }: { nonce: string; recommendedNo render={({ field, fieldState }) => { if (readOnly) { return ( - <Typography fontWeight={700} ml={-1}> + <Typography variant="body2" fontWeight={700} ml={-1}> {nonce} </Typography> ) @@ -137,12 +162,15 @@ const TxNonceForm = ({ nonce, recommendedNonce }: { nonce: string; recommendedNo options={[recommendedNonce, ...previousNonces]} getOptionLabel={(option) => option.toString()} renderOption={(props, option) => { - return option === recommendedNonce ? ( - <MenuItem key={option} {...props}> - {option} (recommended nonce) - </MenuItem> - ) : ( - <NonceFormOption key={option} menuItemProps={props} nonce={option} /> + const isRecommendedNonce = option === recommendedNonce + const isInitialPreviousNonce = option === previousNonces[0] + + return ( + <> + {isRecommendedNonce && <NonceFormHeader>Recommended nonce</NonceFormHeader>} + {isInitialPreviousNonce && <NonceFormHeader sx={{ pt: 3 }}>Already in queue</NonceFormHeader>} + <NonceFormOption key={option} menuItemProps={props} nonce={option} /> + </> ) }} disableClearable diff --git a/src/components/tx-flow/common/TxNonce/styles.module.css b/src/components/tx-flow/common/TxNonce/styles.module.css index 614c607033..ff263b0630 100644 --- a/src/components/tx-flow/common/TxNonce/styles.module.css +++ b/src/components/tx-flow/common/TxNonce/styles.module.css @@ -1,3 +1,25 @@ +.popper :global .MuiAutocomplete-paper { + margin-top: calc(var(--space-1) / 2); + padding-top: var(--space-1); + padding-bottom: var(--space-1); + border: 1px solid var(--color-border-light); +} + +.popper :global .MuiAutocomplete-listbox { + max-height: unset; +} + +.popper :global .MuiListSubheader-root { + line-height: 22px; + margin-bottom: var(--space-1); +} + +.popper :global .MuiAutocomplete-option, +.popper :global .MuiListSubheader-root { + padding-left: var(--space-3); + padding-right: var(--space-3); +} + .input :global .MuiOutlinedInput-root { padding: 0; } From 1a4810368fb562129b4451da95f7c04c1ac6bb83 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Tue, 1 Aug 2023 08:23:47 +0100 Subject: [PATCH 383/422] fix: don't close flow in Safe Apps (#2333) * fix: don't close flow in Safe Apps * fix: dependencies --- src/components/safe-apps/AppFrame/index.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/safe-apps/AppFrame/index.tsx b/src/components/safe-apps/AppFrame/index.tsx index a16eba2f65..aecfec4d6d 100644 --- a/src/components/safe-apps/AppFrame/index.tsx +++ b/src/components/safe-apps/AppFrame/index.tsx @@ -260,23 +260,21 @@ const AppFrame = ({ appUrl, allowedFeaturesList }: AppFrameProps): ReactElement if (safeAppRequestId && currentRequestId === safeAppRequestId) { trackSafeAppEvent(SAFE_APPS_EVENTS.PROPOSE_TRANSACTION, appName) communicator?.send({ safeTxHash }, safeAppRequestId) - setTxFlow(undefined) } }) return unsubscribe - }, [appName, chainId, communicator, currentRequestId, setTxFlow]) + }, [appName, chainId, communicator, currentRequestId]) useEffect(() => { const unsubscribe = safeMsgSubscribe(SafeMsgEvent.SIGNATURE_PREPARED, ({ messageHash, requestId, signature }) => { if (requestId && currentRequestId === requestId) { communicator?.send({ messageHash, signature }, requestId) - setTxFlow(undefined) } }) return unsubscribe - }, [communicator, currentRequestId, setTxFlow]) + }, [communicator, currentRequestId]) if (!safeLoaded) { return <div /> From 65d266306f5eab76f06e9c366a94407ee50b2954 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Tue, 1 Aug 2023 08:52:00 +0100 Subject: [PATCH 384/422] feat: add Plausible Analytics to privacy policy (#2336) --- src/components/privacy/index.tsx | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/components/privacy/index.tsx b/src/components/privacy/index.tsx index be84d6655f..2bf012cb63 100644 --- a/src/components/privacy/index.tsx +++ b/src/components/privacy/index.tsx @@ -6,7 +6,7 @@ const SafePrivacyPolicy = () => { return ( <div> <h1>Privacy Policy</h1> - <p>Last updated on July 2023.</p> + <p>Last updated on August 2023.</p> <p> Your privacy is important to us. It is our policy to respect your privacy and comply with any applicable law and regulation regarding any personal information we may collect about you, including across our website,{' '} @@ -686,7 +686,7 @@ const SafePrivacyPolicy = () => { </Link>{' '} to create a signer wallet/an owner account by using the user's Gmail account or Apple ID information. </p> - <h4>MoonPay</h4> + <h4>5.14. MoonPay</h4> <p> We use{' '} <Link href="https://www.moonpay.com/" passHref> @@ -697,6 +697,24 @@ const SafePrivacyPolicy = () => { to offer on-ramp and off-ramp services. For that purpose personal data is required for KYC/AML or other financial regulatory requirements. This data is encrypted by MoonPay. </p> + <h4>5.15. Plausible Analytics</h4> + <p> + We use{' '} + <Link href="https://plausible.io/" passHref> + <MUILink target="_blank" rel="noreferrer"> + Plausible Analytics + </MUILink> + </Link>{' '} + to track overall trends in the usage of our website in a privacy-friendly manner. Plausible Analytics collects + only aggregated information, which does not allow us to identify any visitor to our website. For further + details, please refer to the{' '} + <Link href="https://plausible.io/data-policy" passHref> + <MUILink target="_blank" rel="noreferrer"> + Plausible Analytics Data Policy + </MUILink> + </Link> + . + </p> <h3 id="6">6. Sharing Your Personal Data</h3> <p> We may pass your information to our Business Partners, administration centers, third party service providers, From 9fd937a028352064ee6782f4b6977da1c13ed55d Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Tue, 1 Aug 2023 11:19:44 +0100 Subject: [PATCH 385/422] fix: execute icon colour in dark mode (#2338) --- src/components/tx/SignOrExecuteForm/styles.module.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/tx/SignOrExecuteForm/styles.module.css b/src/components/tx/SignOrExecuteForm/styles.module.css index 15974e55a6..b04c0a44ec 100644 --- a/src/components/tx/SignOrExecuteForm/styles.module.css +++ b/src/components/tx/SignOrExecuteForm/styles.module.css @@ -31,6 +31,14 @@ color: var(--color-secondary-dark); } +[data-theme='dark'] .execute { + background-color: var(--color-success-background); +} + +[data-theme='dark'] .execute svg { + color: var(--color-success-dark); +} + .params { margin-bottom: var(--space-2); } From e78930acc5e80ab4a8da857aa9275d721cd93dc2 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Tue, 1 Aug 2023 15:35:58 +0200 Subject: [PATCH 386/422] fix: Reopen QR modal in safe creation (#2294) * fix: Reopen QR modal in safe creation * fix: Use RHF isValidating instead of setting own state --- src/components/common/AddressInput/index.tsx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/components/common/AddressInput/index.tsx b/src/components/common/AddressInput/index.tsx index 82ba6d2d2b..8e691edafb 100644 --- a/src/components/common/AddressInput/index.tsx +++ b/src/components/common/AddressInput/index.tsx @@ -1,5 +1,5 @@ import type { ReactElement } from 'react' -import { useEffect, useCallback, useRef, useMemo, useState } from 'react' +import { useEffect, useCallback, useRef, useMemo } from 'react' import { InputAdornment, TextField, @@ -47,14 +47,14 @@ const AddressInput = ({ register, setValue, control, - formState: { errors }, + formState: { errors, isValidating }, trigger, } = useFormContext() + const currentChain = useCurrentChain() const rawValueRef = useRef<string>('') const watchedValue = useWatch({ name, control }) const currentShortName = currentChain?.shortName || '' - const [isValidating, setIsValidating] = useState<boolean>(false) // Fetch an ENS resolution for the current address const isDomainLookupEnabled = !!currentChain && hasFeature(currentChain, FEATURES.DOMAIN_LOOKUP) @@ -155,11 +155,9 @@ const AddressInput = ({ validate: async () => { const value = rawValueRef.current + if (value) { - setIsValidating(true) - const result = validatePrefixed(value) || (await validate?.(parsePrefixedAddress(value).address)) - setIsValidating(false) - return result + return validatePrefixed(value) || (await validate?.(parsePrefixedAddress(value).address)) } }, From 26581664043cac77f40d201e8a596869e2eb8900 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Wed, 2 Aug 2023 08:21:19 +0100 Subject: [PATCH 387/422] feat: Safe App info button (#1726) * feat: Safe App info button * fix: return type * fix: mark apps agnostic of chain * Revert "fix: mark apps agnostic of chain" This reverts commit 35e7917d26b87f09e13a710f1d73da8efe26d54f. --- .../SafeAppsDashboardSection.tsx | 1 + .../safe-apps/SafeAppActionButtons/index.tsx | 17 ++ .../safe-apps/SafeAppCard/index.tsx | 22 ++- .../safe-apps/SafeAppList/index.tsx | 1 + .../safe-apps/SafeAppPreviewDrawer/index.tsx | 18 +- src/hooks/safe-apps/useOpenedSafeApps.ts | 28 +++ src/store/__tests__/safeAppsSlice.test.ts | 178 ++++++++++++++++++ src/store/safeAppsSlice.ts | 42 ++++- 8 files changed, 294 insertions(+), 13 deletions(-) create mode 100644 src/hooks/safe-apps/useOpenedSafeApps.ts create mode 100644 src/store/__tests__/safeAppsSlice.test.ts diff --git a/src/components/dashboard/SafeAppsDashboardSection/SafeAppsDashboardSection.tsx b/src/components/dashboard/SafeAppsDashboardSection/SafeAppsDashboardSection.tsx index 2faf63c285..eb45258ca2 100644 --- a/src/components/dashboard/SafeAppsDashboardSection/SafeAppsDashboardSection.tsx +++ b/src/components/dashboard/SafeAppsDashboardSection/SafeAppsDashboardSection.tsx @@ -31,6 +31,7 @@ const SafeAppsDashboardSection = () => { onBookmarkSafeApp={togglePin} isBookmarked={pinnedSafeAppIds.has(rankedSafeApp.id)} onClickSafeApp={() => openPreviewDrawer(rankedSafeApp)} + openPreviewDrawer={openPreviewDrawer} /> </Grid> ))} diff --git a/src/components/safe-apps/SafeAppActionButtons/index.tsx b/src/components/safe-apps/SafeAppActionButtons/index.tsx index d695f5f4cc..73a7935ca6 100644 --- a/src/components/safe-apps/SafeAppActionButtons/index.tsx +++ b/src/components/safe-apps/SafeAppActionButtons/index.tsx @@ -11,12 +11,14 @@ import ShareIcon from '@/public/images/common/share.svg' import BookmarkIcon from '@/public/images/apps/bookmark.svg' import BookmarkedIcon from '@/public/images/apps/bookmarked.svg' import DeleteIcon from '@/public/images/common/delete.svg' +import InfoIcon from '@/public/images/notifications/info.svg' type SafeAppActionButtonsProps = { safeApp: SafeAppData isBookmarked?: boolean onBookmarkSafeApp?: (safeAppId: number) => void removeCustomApp?: (safeApp: SafeAppData) => void + openPreviewDrawer?: (safeApp: SafeAppData) => void } const SafeAppActionButtons = ({ @@ -24,6 +26,7 @@ const SafeAppActionButtons = ({ isBookmarked, onBookmarkSafeApp, removeCustomApp, + openPreviewDrawer, }: SafeAppActionButtonsProps) => { const isCustomApp = safeApp.id < 1 const shareSafeAppUrl = useShareSafeAppUrl(safeApp.url) @@ -35,6 +38,20 @@ const SafeAppActionButtons = ({ return ( <Box display="flex" gap={1}> + {/* Open the preview drawer */} + {openPreviewDrawer && ( + <IconButton + size="small" + onClick={(event) => { + event.preventDefault() + event.stopPropagation() + openPreviewDrawer(safeApp) + }} + > + <SvgIcon component={InfoIcon} inheritViewBox color="border" fontSize="small" /> + </IconButton> + )} + {/* Copy share Safe App url button */} <CopyButton initialToolTipText={`Copy share URL for ${safeApp.name}`} diff --git a/src/components/safe-apps/SafeAppCard/index.tsx b/src/components/safe-apps/SafeAppCard/index.tsx index 77b67530a4..74ce3eed78 100644 --- a/src/components/safe-apps/SafeAppCard/index.tsx +++ b/src/components/safe-apps/SafeAppCard/index.tsx @@ -19,6 +19,7 @@ import SafeAppTags from '@/components/safe-apps/SafeAppTags' import { isOptimizedForBatchTransactions } from '@/components/safe-apps/utils' import { AppRoutes } from '@/config/routes' import BatchIcon from '@/public/images/apps/batch-icon.svg' +import { useOpenedSafeApps } from '@/hooks/safe-apps/useOpenedSafeApps' import css from './styles.module.css' export type SafeAppsViewMode = 'list-view' | 'grid-view' @@ -33,6 +34,7 @@ type SafeAppCardProps = { isBookmarked?: boolean onBookmarkSafeApp?: (safeAppId: number) => void removeCustomApp?: (safeApp: SafeAppData) => void + openPreviewDrawer?: (safeApp: SafeAppData) => void } const SafeAppCard = ({ @@ -42,6 +44,7 @@ const SafeAppCard = ({ isBookmarked, onBookmarkSafeApp, removeCustomApp, + openPreviewDrawer, }: SafeAppCardProps) => { const router = useRouter() @@ -58,6 +61,7 @@ const SafeAppCard = ({ onBookmarkSafeApp={onBookmarkSafeApp} removeCustomApp={removeCustomApp} onClickSafeApp={onClickSafeApp} + openPreviewDrawer={openPreviewDrawer} /> ) } @@ -71,6 +75,7 @@ const SafeAppCard = ({ onBookmarkSafeApp={onBookmarkSafeApp} removeCustomApp={removeCustomApp} onClickSafeApp={onClickSafeApp} + openPreviewDrawer={openPreviewDrawer} /> ) } @@ -93,6 +98,7 @@ type SafeAppCardViewProps = { isBookmarked?: boolean onBookmarkSafeApp?: (safeAppId: number) => void removeCustomApp?: (safeApp: SafeAppData) => void + openPreviewDrawer?: (safeApp: SafeAppData) => void } const SafeAppCardGridView = ({ @@ -102,9 +108,10 @@ const SafeAppCardGridView = ({ isBookmarked, onBookmarkSafeApp, removeCustomApp, + openPreviewDrawer, }: SafeAppCardViewProps) => { return ( - <SafeAppCardContainer safeAppUrl={safeAppUrl} onClickSafeApp={onClickSafeApp} height={'100%'}> + <SafeAppCardContainer safeApp={safeApp} safeAppUrl={safeAppUrl} onClickSafeApp={onClickSafeApp} height={'100%'}> {/* Safe App Header */} <CardHeader className={css.safeAppHeader} @@ -127,6 +134,7 @@ const SafeAppCardGridView = ({ isBookmarked={isBookmarked} onBookmarkSafeApp={onBookmarkSafeApp} removeCustomApp={removeCustomApp} + openPreviewDrawer={openPreviewDrawer} /> </> } @@ -157,9 +165,10 @@ const SafeAppCardListView = ({ isBookmarked, onBookmarkSafeApp, removeCustomApp, + openPreviewDrawer, }: SafeAppCardViewProps) => { return ( - <SafeAppCardContainer safeAppUrl={safeAppUrl} onClickSafeApp={onClickSafeApp}> + <SafeAppCardContainer safeApp={safeApp} safeAppUrl={safeAppUrl} onClickSafeApp={onClickSafeApp}> <CardContent sx={{ pb: '16px !important' }}> <Box display="flex" flexDirection="row" alignItems="center" gap={2}> <div className={css.safeAppIconContainer}> @@ -184,6 +193,7 @@ const SafeAppCardListView = ({ isBookmarked={isBookmarked} onBookmarkSafeApp={onBookmarkSafeApp} removeCustomApp={removeCustomApp} + openPreviewDrawer={openPreviewDrawer} /> </CardActions> </Box> @@ -194,6 +204,7 @@ const SafeAppCardListView = ({ type SafeAppCardContainerProps = { onClickSafeApp?: () => void + safeApp?: SafeAppData safeAppUrl: string children: ReactNode height?: string @@ -202,15 +213,18 @@ type SafeAppCardContainerProps = { export const SafeAppCardContainer = ({ children, + safeApp, safeAppUrl, onClickSafeApp, height, className, }: SafeAppCardContainerProps) => { + const { openedSafeAppIds } = useOpenedSafeApps() + const handleClickSafeApp = (event: SyntheticEvent) => { - if (onClickSafeApp) { + if (safeApp && !openedSafeAppIds.includes(safeApp.id)) { event.preventDefault() - onClickSafeApp() + onClickSafeApp?.() } } diff --git a/src/components/safe-apps/SafeAppList/index.tsx b/src/components/safe-apps/SafeAppList/index.tsx index 7210818862..bd3fef8275 100644 --- a/src/components/safe-apps/SafeAppList/index.tsx +++ b/src/components/safe-apps/SafeAppList/index.tsx @@ -106,6 +106,7 @@ const SafeAppList = ({ onBookmarkSafeApp={onBookmarkSafeApp} removeCustomApp={removeCustomApp} onClickSafeApp={handleSafeAppClick(safeApp)} + openPreviewDrawer={openPreviewDrawer} /> </li> ))} diff --git a/src/components/safe-apps/SafeAppPreviewDrawer/index.tsx b/src/components/safe-apps/SafeAppPreviewDrawer/index.tsx index de67676f3c..3c118aee04 100644 --- a/src/components/safe-apps/SafeAppPreviewDrawer/index.tsx +++ b/src/components/safe-apps/SafeAppPreviewDrawer/index.tsx @@ -16,6 +16,7 @@ import SafeAppActionButtons from '@/components/safe-apps/SafeAppActionButtons' import SafeAppTags from '@/components/safe-apps/SafeAppTags' import SafeAppSocialLinksCard from '@/components/safe-apps/SafeAppSocialLinksCard' import CloseIcon from '@/public/images/common/close.svg' +import { useOpenedSafeApps } from '@/hooks/safe-apps/useOpenedSafeApps' import css from './styles.module.css' type SafeAppPreviewDrawerProps = { @@ -27,9 +28,16 @@ type SafeAppPreviewDrawerProps = { } const SafeAppPreviewDrawer = ({ isOpen, safeApp, isBookmarked, onClose, onBookmark }: SafeAppPreviewDrawerProps) => { + const { markSafeAppOpened } = useOpenedSafeApps() const router = useRouter() const safeAppUrl = getSafeAppUrl(router, safeApp?.url || '') + const onOpenSafe = () => { + if (safeApp) { + markSafeAppOpened(safeApp.id) + } + } + return ( <Drawer anchor="right" open={isOpen} onClose={onClose}> <Box className={css.drawerContainer}> @@ -82,7 +90,15 @@ const SafeAppPreviewDrawer = ({ isOpen, safeApp, isBookmarked, onClose, onBookma {/* Open Safe App button */} <Link href={safeAppUrl} passHref> - <Button fullWidth variant="contained" color="primary" component={'a'} href={safeApp?.url} sx={{ mt: 3 }}> + <Button + fullWidth + variant="contained" + color="primary" + component="a" + href={safeApp?.url} + sx={{ mt: 3 }} + onClick={onOpenSafe} + > Open Safe App </Button> </Link> diff --git a/src/hooks/safe-apps/useOpenedSafeApps.ts b/src/hooks/safe-apps/useOpenedSafeApps.ts new file mode 100644 index 0000000000..153b2044db --- /dev/null +++ b/src/hooks/safe-apps/useOpenedSafeApps.ts @@ -0,0 +1,28 @@ +import { useCallback } from 'react' +import type { SafeAppData } from '@safe-global/safe-gateway-typescript-sdk' + +import useChainId from '@/hooks/useChainId' +import { useAppDispatch, useAppSelector } from '@/store' +import { selectOpened, markOpened } from '@/store/safeAppsSlice' + +type ReturnType = { + openedSafeAppIds: Array<SafeAppData['id']> + markSafeAppOpened: (id: SafeAppData['id']) => void +} + +// Return the ids of Safe Apps previously opened by the user +export const useOpenedSafeApps = (): ReturnType => { + const chainId = useChainId() + + const dispatch = useAppDispatch() + const openedSafeAppIds = useAppSelector((state) => selectOpened(state, chainId)) + + const markSafeAppOpened = useCallback( + (id: SafeAppData['id']) => { + dispatch(markOpened({ id, chainId })) + }, + [dispatch, chainId], + ) + + return { openedSafeAppIds, markSafeAppOpened } +} diff --git a/src/store/__tests__/safeAppsSlice.test.ts b/src/store/__tests__/safeAppsSlice.test.ts new file mode 100644 index 0000000000..e7ce94984f --- /dev/null +++ b/src/store/__tests__/safeAppsSlice.test.ts @@ -0,0 +1,178 @@ +import { markOpened, safeAppsSlice, setPinned } from '../safeAppsSlice' +import type { SafeAppsState } from '../safeAppsSlice' + +describe('safeAppsSlice', () => { + const safeAppId1 = 1 + const safeAppId2 = 2 + const safeAppId3 = 3 + + describe('pinned', () => { + it('sets pinned apps', () => { + // Empty state + const initialState1: SafeAppsState = {} + const state1 = safeAppsSlice.reducer( + initialState1, + setPinned({ + chainId: '1', + pinned: [safeAppId1], + }), + ) + expect(state1).toStrictEqual({ + ['1']: { + pinned: [safeAppId1], + opened: [], + }, + }) + + // State if only pinned existed + const initialState2: SafeAppsState = { + // @ts-ignore + '5': { + pinned: [safeAppId1, safeAppId2], + }, + } + const state2 = safeAppsSlice.reducer( + initialState2, + setPinned({ + chainId: '5', + pinned: [safeAppId3], + }), + ) + expect(state2).toStrictEqual({ + ['5']: { + pinned: [safeAppId3], + }, + }) + + // State if only opened existed + const initialState3: SafeAppsState = { + // @ts-ignore + '100': { + opened: [safeAppId1, safeAppId2], + }, + } + const state3 = safeAppsSlice.reducer( + initialState3, + setPinned({ + chainId: '100', + pinned: [safeAppId1, safeAppId2, safeAppId3], + }), + ) + expect(state3).toStrictEqual({ + ['100']: { + pinned: [safeAppId1, safeAppId2, safeAppId3], + opened: [safeAppId1, safeAppId2], + }, + }) + }) + + it('should not pin duplicates', () => { + // Existing state + const initialState: SafeAppsState = { + // @ts-ignore + '5': { + pinned: [safeAppId1, safeAppId2], + opened: [], + }, + } + const state = safeAppsSlice.reducer( + initialState, + setPinned({ + chainId: '5', + pinned: [safeAppId1, safeAppId2], + }), + ) + expect(state).toStrictEqual({ + ['5']: { + pinned: [safeAppId1, safeAppId2], + opened: [], + }, + }) + }) + }) + + describe('opened', () => { + it('marks an app open', () => { + // Empty state + const initialState1: SafeAppsState = {} + const state1 = safeAppsSlice.reducer( + initialState1, + markOpened({ + chainId: '1', + id: safeAppId1, + }), + ) + expect(state1).toStrictEqual({ + ['1']: { + pinned: [], + opened: [safeAppId1], + }, + }) + + // State if only pinned existed + const initialState2: SafeAppsState = { + // @ts-ignore + '5': { + pinned: [safeAppId1, safeAppId2], + }, + } + const state2 = safeAppsSlice.reducer( + initialState2, + markOpened({ + chainId: '5', + id: safeAppId2, + }), + ) + expect(state2).toStrictEqual({ + ['5']: { + pinned: [safeAppId1, safeAppId2], + opened: [safeAppId2], + }, + }) + + // State if only opened existed + const initialState3: SafeAppsState = { + // @ts-ignore + '100': { + opened: [safeAppId1, safeAppId2], + }, + } + const state3 = safeAppsSlice.reducer( + initialState3, + markOpened({ + chainId: '100', + id: safeAppId3, + }), + ) + expect(state3).toStrictEqual({ + ['100']: { + opened: [safeAppId1, safeAppId2, safeAppId3], + }, + }) + }) + + it('should not mark duplicates open', () => { + // Existing state + const initialState: SafeAppsState = { + // @ts-ignore + '5': { + pinned: [safeAppId1, safeAppId2], + opened: [], + }, + } + const state = safeAppsSlice.reducer( + initialState, + markOpened({ + chainId: '5', + id: safeAppId2, + }), + ) + expect(state).toStrictEqual({ + ['5']: { + pinned: [safeAppId1, safeAppId2], + opened: [safeAppId2], + }, + }) + }) + }) +}) diff --git a/src/store/safeAppsSlice.ts b/src/store/safeAppsSlice.ts index a73cf7604c..689438c2a6 100644 --- a/src/store/safeAppsSlice.ts +++ b/src/store/safeAppsSlice.ts @@ -1,10 +1,12 @@ import type { PayloadAction } from '@reduxjs/toolkit' import { createSelector } from '@reduxjs/toolkit' import { createSlice } from '@reduxjs/toolkit' +import type { SafeAppData } from '@safe-global/safe-gateway-typescript-sdk' import type { RootState } from '@/store' type SafeAppsPerChain = { - pinned: number[] + pinned: Array<SafeAppData['id']> + opened: Array<SafeAppData['id']> } export type SafeAppsState = { @@ -19,26 +21,50 @@ export const safeAppsSlice = createSlice({ reducers: { setPinned: (state, { payload }: PayloadAction<{ chainId: string; pinned: SafeAppsPerChain['pinned'] }>) => { const { pinned, chainId } = payload - state[chainId] ??= { pinned: [] } + + // Initialise chain-specific state + state[chainId] ??= { pinned: [], opened: [] } + // If apps were opened before any were pinned, no pinned array exists + state[chainId].pinned ??= [] + state[chainId].pinned = pinned }, - setSafeApps: (state, { payload }: PayloadAction<SafeAppsState>) => { + markOpened: (state, { payload }: PayloadAction<{ chainId: string; id: SafeAppData['id'] }>) => { + const { id, chainId } = payload + + // Initialise chain-specific state + state[chainId] ??= { pinned: [], opened: [] } + // If apps were pinned before any were opened, no opened array exists + state[chainId].opened ??= [] + + if (!state[chainId].opened.includes(id)) { + state[chainId].opened.push(id) + } + }, + setSafeApps: (_, { payload }: PayloadAction<SafeAppsState>) => { // We must return as we are overwriting the entire state return payload }, }, }) -export const { setPinned } = safeAppsSlice.actions +export const { setPinned, markOpened } = safeAppsSlice.actions export const selectSafeApps = (state: RootState): SafeAppsState => { return state[safeAppsSlice.name] } -export const selectPinned = createSelector( +const selectSafeAppsPerChain = createSelector( [selectSafeApps, (_: RootState, chainId: string) => chainId], - (safeApps, chainId): SafeAppsPerChain['pinned'] => { - const perChain = safeApps[chainId] - return perChain?.pinned || [] + (safeApps, chainId) => { + return safeApps[chainId] }, ) + +export const selectPinned = createSelector([selectSafeAppsPerChain], (safeAppsPerChain) => { + return safeAppsPerChain?.pinned || [] +}) + +export const selectOpened = createSelector([selectSafeAppsPerChain], (safeAppsPerChain) => { + return safeAppsPerChain?.opened || [] +}) From 657da0fd57ada97b5fbd3592ae102bdb446efb89 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Wed, 2 Aug 2023 12:06:01 +0200 Subject: [PATCH 388/422] Fix: warn if tx was already signed by connected wallet (#2322) * Fix: warn if wallet already signed a tx * Adjust TxLayout margin * Replace dashboard link with modal close * fix: align transaction links (#2332) * Fix: mobile pairing check (#2327) * Fix: mobile pairing check * Fix tests * fix: align transaction links --------- Co-authored-by: katspaugh <381895+katspaugh@users.noreply.github.com> * Rm NewTxMenu margin * fix e2e create_tx * fix e2e nfts --------- Co-authored-by: Aaron Cook <aaron@safe.global> Co-authored-by: Franco Venica <francovenica@gmail.com> --- cypress/e2e/smoke/create_tx.cy.js | 4 +- cypress/e2e/smoke/nfts.cy.js | 2 +- .../tx-flow/common/TxLayout/index.tsx | 7 +--- .../tx-flow/common/TxLayout/styles.module.css | 2 +- .../tx-flow/flows/NewTx/styles.module.css | 4 -- .../tx-flow/flows/SuccessScreen/index.tsx | 40 +++++++++--------- .../tx/SignOrExecuteForm/ExecuteForm.tsx | 2 +- .../tx/SignOrExecuteForm/SignForm.tsx | 7 +++- .../tx/SignOrExecuteForm/hooks.test.ts | 41 ++++++++++++++++++- src/components/tx/SignOrExecuteForm/hooks.ts | 7 ++++ .../tx/security/SecurityWarnings.tsx | 11 +++++ src/hooks/useTxNotifications.ts | 20 ++++----- 12 files changed, 100 insertions(+), 47 deletions(-) create mode 100644 src/components/tx/security/SecurityWarnings.tsx diff --git a/cypress/e2e/smoke/create_tx.cy.js b/cypress/e2e/smoke/create_tx.cy.js index 49d2f9a66d..6845f84a60 100644 --- a/cypress/e2e/smoke/create_tx.cy.js +++ b/cypress/e2e/smoke/create_tx.cy.js @@ -69,7 +69,7 @@ describe('Queue a transaction on 1/N', () => { cy.contains('Estimated fee').should('exist') // Asserting the sponsored info is present - cy.contains('Execute').should('be.visible') + cy.contains('Execute').scrollIntoView().should('be.visible') cy.get('span').contains('Estimated fee').next().should('have.css', 'text-decoration-line', 'line-through') cy.contains('Transactions per hour') @@ -103,7 +103,7 @@ describe('Queue a transaction on 1/N', () => { .type(currentNonce + 10, { force: true }) .type('{enter}', { force: true }) - cy.contains('Submit').click() + cy.contains('Sign').click() }) it('should click the notification and see the transaction queued', () => { diff --git a/cypress/e2e/smoke/nfts.cy.js b/cypress/e2e/smoke/nfts.cy.js index 75686930a7..3a5d8e9d46 100644 --- a/cypress/e2e/smoke/nfts.cy.js +++ b/cypress/e2e/smoke/nfts.cy.js @@ -84,7 +84,7 @@ describe('Assets > NFTs', () => { cy.contains('1') cy.contains('2') cy.get('b:contains("safeTransferFrom")').should('have.length', 2) - cy.contains('button:not([disabled])', 'Submit') + cy.contains('button:not([disabled])', 'Execute') }) }) }) diff --git a/src/components/tx-flow/common/TxLayout/index.tsx b/src/components/tx-flow/common/TxLayout/index.tsx index 733ad21b77..4ef5154aa5 100644 --- a/src/components/tx-flow/common/TxLayout/index.tsx +++ b/src/components/tx-flow/common/TxLayout/index.tsx @@ -9,11 +9,10 @@ import { TxInfoProvider } from '@/components/tx-flow/TxInfoProvider' import TxNonce from '../TxNonce' import TxStatusWidget from '../TxStatusWidget' import css from './styles.module.css' -import { TxSimulationMessage } from '@/components/tx/security/tenderly' import SafeLogo from '@/public/images/logo-no-text.svg' -import { RedefineMessage } from '@/components/tx/security/redefine' import { TxSecurityProvider } from '@/components/tx/security/shared/TxSecurityContext' import ChainIndicator from '@/components/common/ChainIndicator' +import SecurityWarnings from '@/components/tx/security/SecurityWarnings' const TxLayoutHeader = ({ hideNonce, @@ -147,9 +146,7 @@ const TxLayout = ({ )} <Box className={css.sticky}> - <RedefineMessage /> - - <TxSimulationMessage /> + <SecurityWarnings /> </Box> </Grid> </Grid> diff --git a/src/components/tx-flow/common/TxLayout/styles.module.css b/src/components/tx-flow/common/TxLayout/styles.module.css index 5ff2454e6a..ef349f1bc1 100644 --- a/src/components/tx-flow/common/TxLayout/styles.module.css +++ b/src/components/tx-flow/common/TxLayout/styles.module.css @@ -1,5 +1,5 @@ .container { - margin-top: 42px; + margin-top: 10px; } .header { diff --git a/src/components/tx-flow/flows/NewTx/styles.module.css b/src/components/tx-flow/flows/NewTx/styles.module.css index b6fb3f8456..a8e29e5b8c 100644 --- a/src/components/tx-flow/flows/NewTx/styles.module.css +++ b/src/components/tx-flow/flows/NewTx/styles.module.css @@ -1,7 +1,3 @@ -.container { - margin-top: 50px; -} - .chain { align-self: flex-end; margin-bottom: var(--space-2); diff --git a/src/components/tx-flow/flows/SuccessScreen/index.tsx b/src/components/tx-flow/flows/SuccessScreen/index.tsx index 641a0b51d1..6aa0226c5e 100644 --- a/src/components/tx-flow/flows/SuccessScreen/index.tsx +++ b/src/components/tx-flow/flows/SuccessScreen/index.tsx @@ -1,26 +1,27 @@ -import { useRouter } from 'next/router' import StatusMessage from './StatusMessage' import StatusStepper from './StatusStepper' -import { AppRoutes } from '@/config/routes' import { Button, Container, Divider, Paper } from '@mui/material' import classnames from 'classnames' import Link from 'next/link' -import { type UrlObject } from 'url' import css from './styles.module.css' import { useAppSelector } from '@/store' import { selectPendingTxById } from '@/store/pendingTxsSlice' -import { useEffect, useState } from 'react' -import { getBlockExplorerLink } from '@/utils/chains' +import { useEffect, useState, useCallback, useContext } from 'react' +import { getTxLink } from '@/hooks/useTxNotifications' import { useCurrentChain } from '@/hooks/useChains' import { TxEvent, txSubscribe } from '@/services/tx/txEvents' +import useSafeInfo from '@/hooks/useSafeInfo' +import { TxModalContext } from '../..' export const SuccessScreen = ({ txId }: { txId: string }) => { const [localTxHash, setLocalTxHash] = useState<string>() const [error, setError] = useState<Error>() - const router = useRouter() + const { setTxFlow } = useContext(TxModalContext) const chain = useCurrentChain() const pendingTx = useAppSelector((state) => selectPendingTxById(state, txId)) + const { safeAddress } = useSafeInfo() const { txHash = '', status } = pendingTx || {} + const txLink = chain && getTxLink(txId, chain, safeAddress) useEffect(() => { if (!txHash) return @@ -38,12 +39,9 @@ export const SuccessScreen = ({ txId }: { txId: string }) => { return () => unsubFns.forEach((unsubscribe) => unsubscribe()) }, [txId]) - const homeLink: UrlObject = { - pathname: AppRoutes.home, - query: { safe: router.query.safe }, - } - - const txLink = chain && localTxHash ? getBlockExplorerLink(chain, localTxHash) : undefined + const onFinishClick = useCallback(() => { + setTxFlow(undefined) + }, [setTxFlow]) return ( <Container @@ -69,17 +67,19 @@ export const SuccessScreen = ({ txId }: { txId: string }) => { )} <Divider /> + <div className={classnames(css.row, css.buttons)}> - <Link href={homeLink} passHref> - <Button variant="outlined" size="small"> - Back to dashboard - </Button> - </Link> {txLink && ( - <Button href={txLink.href} target="_blank" rel="noreferrer" variant="outlined" size="small"> - View transaction - </Button> + <Link {...txLink} passHref target="_blank" rel="noreferrer"> + <Button variant="outlined" size="small"> + View transaction + </Button> + </Link> )} + + <Button variant="contained" size="small" onClick={onFinishClick}> + Finish + </Button> </div> </Container> ) diff --git a/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx b/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx index 51b48fa60d..e5acd6fab4 100644 --- a/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx +++ b/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx @@ -154,7 +154,7 @@ const ExecuteForm = ({ <CheckWallet allowNonOwner={onlyExecute}> {(isOk) => ( <Button variant="contained" type="submit" disabled={!isOk || submitDisabled}> - Submit + Execute </Button> )} </CheckWallet> diff --git a/src/components/tx/SignOrExecuteForm/SignForm.tsx b/src/components/tx/SignOrExecuteForm/SignForm.tsx index c3d39beb04..2f9c64eb7c 100644 --- a/src/components/tx/SignOrExecuteForm/SignForm.tsx +++ b/src/components/tx/SignOrExecuteForm/SignForm.tsx @@ -5,7 +5,7 @@ import ErrorMessage from '@/components/tx/ErrorMessage' import { logError, Errors } from '@/services/exceptions' import useIsSafeOwner from '@/hooks/useIsSafeOwner' import CheckWallet from '@/components/common/CheckWallet' -import { useTxActions } from './hooks' +import { useAlreadySigned, useTxActions } from './hooks' import type { SignOrExecuteProps } from '.' import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' import { TxModalContext } from '@/components/tx-flow' @@ -32,6 +32,7 @@ const SignForm = ({ const { signTx } = useTxActions() const { setTxFlow } = useContext(TxModalContext) const { needsRiskConfirmation, isRiskConfirmed, setIsRiskIgnored } = useContext(TxSecurityContext) + const hasSigned = useAlreadySigned(safeTx) // On modal submit const handleSubmit = async (e: SyntheticEvent) => { @@ -64,6 +65,8 @@ const SignForm = ({ return ( <form onSubmit={handleSubmit}> + {hasSigned && <ErrorMessage level="warning">You have already signed this transaction.</ErrorMessage>} + {cannotPropose ? ( <NonOwnerError /> ) : ( @@ -79,7 +82,7 @@ const SignForm = ({ <CheckWallet> {(isOk) => ( <Button variant="contained" type="submit" disabled={!isOk || submitDisabled}> - Submit + Sign </Button> )} </CheckWallet> diff --git a/src/components/tx/SignOrExecuteForm/hooks.test.ts b/src/components/tx/SignOrExecuteForm/hooks.test.ts index d40e5c1861..3cb72d20e8 100644 --- a/src/components/tx/SignOrExecuteForm/hooks.test.ts +++ b/src/components/tx/SignOrExecuteForm/hooks.test.ts @@ -10,7 +10,7 @@ import * as pending from '@/hooks/usePendingTxs' import * as txSender from '@/services/tx/tx-sender/dispatch' import * as onboardHooks from '@/hooks/wallets/useOnboard' import { type OnboardAPI } from '@web3-onboard/core' -import { useImmediatelyExecutable, useIsExecutionLoop, useTxActions, useValidateNonce } from './hooks' +import { useAlreadySigned, useImmediatelyExecutable, useIsExecutionLoop, useTxActions, useValidateNonce } from './hooks' const createSafeTx = (data = '0x'): SafeTransaction => { return { @@ -542,4 +542,43 @@ describe('SignOrExecute hooks', () => { expect(relaySpy).not.toHaveBeenCalled() }) }) + + describe('useAlreadySigned', () => { + it('should return true if wallet already signed a tx', () => { + // Wallet + jest.spyOn(wallet, 'default').mockReturnValue({ + chainId: '1', + label: 'MetaMask', + address: '0x1234567890000000000000000000000000000000', + } as unknown as ConnectedWallet) + + const tx = createSafeTx() + tx.addSignature({ + signer: '0x1234567890000000000000000000000000000000', + data: '0x0001', + staticPart: () => '', + dynamicPart: () => '', + }) + const { result } = renderHook(() => useAlreadySigned(tx)) + expect(result.current).toEqual(true) + }) + }) + it('should return false if wallet has not signed a tx yet', () => { + // Wallet + jest.spyOn(wallet, 'default').mockReturnValue({ + chainId: '1', + label: 'MetaMask', + address: '0x1234567890000000000000000000000000000000', + } as unknown as ConnectedWallet) + + const tx = createSafeTx() + tx.addSignature({ + signer: '0x00000000000000000000000000000000000000000', + data: '0x0001', + staticPart: () => '', + dynamicPart: () => '', + }) + const { result } = renderHook(() => useAlreadySigned(tx)) + expect(result.current).toEqual(false) + }) }) diff --git a/src/components/tx/SignOrExecuteForm/hooks.ts b/src/components/tx/SignOrExecuteForm/hooks.ts index 09a1d5bfc2..17492530a3 100644 --- a/src/components/tx/SignOrExecuteForm/hooks.ts +++ b/src/components/tx/SignOrExecuteForm/hooks.ts @@ -179,3 +179,10 @@ export const useSafeTxGas = (safeTx: SafeTransaction | undefined): number | unde return safeTxGas } + +export const useAlreadySigned = (safeTx: SafeTransaction | undefined): boolean => { + const wallet = useWallet() + const hasSigned = + safeTx && wallet && (safeTx.signatures.has(wallet.address.toLowerCase()) || safeTx.signatures.has(wallet.address)) + return Boolean(hasSigned) +} diff --git a/src/components/tx/security/SecurityWarnings.tsx b/src/components/tx/security/SecurityWarnings.tsx new file mode 100644 index 0000000000..f78c9fde22 --- /dev/null +++ b/src/components/tx/security/SecurityWarnings.tsx @@ -0,0 +1,11 @@ +import { RedefineMessage } from './redefine' +import { TxSimulationMessage } from './tenderly' + +const SecurityWarnings = () => ( + <> + <RedefineMessage /> + <TxSimulationMessage /> + </> +) + +export default SecurityWarnings diff --git a/src/hooks/useTxNotifications.ts b/src/hooks/useTxNotifications.ts index 20411402ed..cbe777b785 100644 --- a/src/hooks/useTxNotifications.ts +++ b/src/hooks/useTxNotifications.ts @@ -43,7 +43,11 @@ enum Variant { const successEvents = [TxEvent.PROPOSED, TxEvent.SIGNATURE_PROPOSED, TxEvent.ONCHAIN_SIGNATURE_SUCCESS, TxEvent.SUCCESS] -const getTxLink = (txId: string, chain: ChainInfo, safeAddress: string): { href: LinkProps['href']; title: string } => { +export const getTxLink = ( + txId: string, + chain: ChainInfo, + safeAddress: string, +): { href: LinkProps['href']; title: string } => { return { href: { pathname: AppRoutes.transactions.tx, @@ -53,14 +57,6 @@ const getTxLink = (txId: string, chain: ChainInfo, safeAddress: string): { href: } } -const getTxExplorerLink = (txHash: string, chain: ChainInfo): { href: LinkProps['href']; title: string } => { - const { href } = getExplorerLink(txHash, chain.blockExplorerUriTemplate) - return { - href, - title: 'View on explorer', - } -} - const useTxNotifications = (): void => { const dispatch = useAppDispatch() const chain = useCurrentChain() @@ -90,7 +86,11 @@ const useTxNotifications = (): void => { detailedMessage: isError ? detail.error.message : undefined, groupKey, variant: isError ? Variant.ERROR : isSuccess ? Variant.SUCCESS : Variant.INFO, - link: txId ? getTxLink(txId, chain, safeAddress) : txHash ? getTxExplorerLink(txHash, chain) : undefined, + link: txId + ? getTxLink(txId, chain, safeAddress) + : txHash + ? getExplorerLink(txHash, chain.blockExplorerUriTemplate) + : undefined, }), ) }), From 661bafd3481d0f6408b694415bc35cfa4b0c2822 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Wed, 2 Aug 2023 15:53:22 +0200 Subject: [PATCH 389/422] Feat: batch any tx (#2254) * Feat: batch any tx * Refactor: move DecodedTx logic to a hook; extract Approval editor * Expanded details * Notifications * Batch indicator on mobile * Tracking * Tracking: add counts and types * Fix useDecodeTx * Fix tooltip * Fix propose tests * Disable batching batches * Empty state * Disable batch button for multisends * Reordering * Empty batch image in dark mode * Update src/components/batch/BatchSidebar/EmptyBatch.tsx Co-authored-by: Aaron Cook <aaron@safe.global> * Update src/components/batch/BatchSidebar/EmptyBatch.tsx Co-authored-by: Aaron Cook <aaron@safe.global> * Use ids in the store, PR comments * Disable accordion when dragging * Rm unnecessary casting * Update src/components/batch/BatchIndicator/BatchTooltip.tsx Co-authored-by: Aaron Cook <aaron@safe.global> * Await txDetails; disallow batching delegate calls; other PR comments * Add signatures in createMockSafeTx * Avoid re-fetching txDetails * Disallow batching rejection txs * Close sidebar when txflow is opened * Fix e2e test * Fix tracking * Hide batching on mobile --------- Co-authored-by: Aaron Cook <aaron@safe.global> --- cypress/e2e/smoke/create_tx.cy.js | 4 +- package.json | 1 + public/images/common/batch.svg | 4 + public/images/common/drag.svg | 8 + public/images/common/empty-batch.svg | 8 + public/images/common/success.svg | 4 + .../batch/BatchIndicator/BatchTooltip.tsx | 61 ++++++ src/components/batch/BatchIndicator/index.tsx | 24 +++ .../batch/BatchSidebar/BatchTxItem.tsx | 110 ++++++++++ .../batch/BatchSidebar/BatchTxList.tsx | 43 ++++ .../batch/BatchSidebar/EmptyBatch.tsx | 51 +++++ src/components/batch/BatchSidebar/index.tsx | 101 +++++++++ .../batch/BatchSidebar/styles.module.css | 93 +++++++++ .../common/ConnectWallet/AccountCenter.tsx | 8 +- src/components/common/Header/index.tsx | 14 +- .../common/Header/styles.module.css | 4 - src/components/common/PageLayout/index.tsx | 6 +- src/components/common/WalletInfo/index.tsx | 6 +- .../common/WalletInfo/styles.module.css | 6 +- .../DecodedData/SingleTxDecoded/index.tsx | 2 +- .../tx-flow/flows/ConfirmBatch/index.tsx | 58 ++++++ src/components/tx-flow/flows/NewTx/index.tsx | 2 +- .../tx-flow/flows/RejectTx/RejectTx.tsx | 2 +- src/components/tx/DecodedTx/index.test.tsx | 192 +++++++++--------- src/components/tx/DecodedTx/index.tsx | 56 ++--- src/components/tx/ExecuteCheckbox/index.tsx | 41 ++-- .../tx/SignOrExecuteForm/BatchButton.tsx | 34 ++++ .../tx/SignOrExecuteForm/ExecuteForm.tsx | 2 +- .../tx/SignOrExecuteForm/SignForm.tsx | 45 ++-- src/components/tx/SignOrExecuteForm/hooks.ts | 28 ++- src/components/tx/SignOrExecuteForm/index.tsx | 33 ++- src/hooks/useDecodeTx.ts | 24 +++ src/hooks/useDraftBatch.ts | 69 +++++++ src/services/analytics/events/batching.ts | 44 ++++ src/services/analytics/events/index.ts | 1 + .../tx/tx-sender/__tests__/ts-sender.test.ts | 29 ++- src/services/tx/tx-sender/dispatch.ts | 12 +- src/services/tx/tx-sender/sdk.ts | 6 +- src/services/tx/txEvents.ts | 2 + src/store/batchSlice.ts | 85 ++++++++ src/store/index.ts | 3 + src/tests/transactions.ts | 12 +- yarn.lock | 21 ++ 43 files changed, 1143 insertions(+), 216 deletions(-) create mode 100644 public/images/common/batch.svg create mode 100644 public/images/common/drag.svg create mode 100644 public/images/common/empty-batch.svg create mode 100644 public/images/common/success.svg create mode 100644 src/components/batch/BatchIndicator/BatchTooltip.tsx create mode 100644 src/components/batch/BatchIndicator/index.tsx create mode 100644 src/components/batch/BatchSidebar/BatchTxItem.tsx create mode 100644 src/components/batch/BatchSidebar/BatchTxList.tsx create mode 100644 src/components/batch/BatchSidebar/EmptyBatch.tsx create mode 100644 src/components/batch/BatchSidebar/index.tsx create mode 100644 src/components/batch/BatchSidebar/styles.module.css create mode 100644 src/components/tx-flow/flows/ConfirmBatch/index.tsx create mode 100644 src/components/tx/SignOrExecuteForm/BatchButton.tsx create mode 100644 src/hooks/useDecodeTx.ts create mode 100644 src/hooks/useDraftBatch.ts create mode 100644 src/services/analytics/events/batching.ts create mode 100644 src/store/batchSlice.ts diff --git a/cypress/e2e/smoke/create_tx.cy.js b/cypress/e2e/smoke/create_tx.cy.js index 6845f84a60..74b13e352d 100644 --- a/cypress/e2e/smoke/create_tx.cy.js +++ b/cypress/e2e/smoke/create_tx.cy.js @@ -59,6 +59,8 @@ describe('Queue a transaction on 1/N', () => { it('should create a queued transaction', () => { cy.get('button[type="submit"]').should('not.be.disabled') + cy.wait(1000) + cy.contains('Native token transfer').should('be.visible') // Changes nonce to next one @@ -96,7 +98,7 @@ describe('Queue a transaction on 1/N', () => { cy.get('@Paramsform').submit() // Asserts the execute checkbox is uncheckable - cy.contains('No, only').click() + cy.contains('No, later').click() cy.get('input[name="nonce"]') .clear({ force: true }) diff --git a/package.json b/package.json index b59426b6b2..7a35aecc98 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ "ethereum-blockies-base64": "^1.0.2", "ethers": "5.7.2", "exponential-backoff": "^3.1.0", + "framer-motion": "^10.13.1", "fuse.js": "^6.6.2", "js-cookie": "^3.0.1", "lodash": "^4.17.21", diff --git a/public/images/common/batch.svg b/public/images/common/batch.svg new file mode 100644 index 0000000000..d9cec03c74 --- /dev/null +++ b/public/images/common/batch.svg @@ -0,0 +1,4 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path fill-rule="evenodd" clip-rule="evenodd" d="M7.71542 1.06718C7.89457 0.977606 8.10543 0.977606 8.28458 1.06718L14.6481 4.249C14.8637 4.3568 14.9999 4.57714 14.9999 4.81818C14.9999 5.05922 14.8637 5.27957 14.6481 5.38736L8.28458 8.56918C8.10543 8.65876 7.89457 8.65876 7.71542 8.56918L1.35191 5.38736C1.13632 5.27957 1.00014 5.05922 1.00014 4.81818C1.00014 4.57714 1.13632 4.3568 1.35191 4.249L7.71542 1.06718ZM3.05941 4.81818L8 7.28852L12.9406 4.81818L8 2.34784L3.05941 4.81818ZM1.06732 7.71541C1.22449 7.40106 1.60673 7.27364 1.92108 7.43082L8 10.4703L14.0789 7.43082C14.3933 7.27364 14.7755 7.40106 14.9327 7.71541C15.0899 8.02976 14.9624 8.41201 14.6481 8.56918L8.28458 11.751C8.10543 11.8406 7.89457 11.8406 7.71542 11.751L1.35191 8.56918C1.03756 8.41201 0.910149 8.02976 1.06732 7.71541ZM1.06732 10.8972C1.22449 10.5829 1.60673 10.4555 1.92108 10.6126L8 13.6522L14.0789 10.6126C14.3933 10.4555 14.7755 10.5829 14.9327 10.8972C15.0899 11.2116 14.9624 11.5938 14.6481 11.751L8.28458 14.9328C8.10543 15.0224 7.89457 15.0224 7.71542 14.9328L1.35191 11.751C1.03756 11.5938 0.910149 11.2116 1.06732 10.8972Z" + fill="currentColor" stroke="currentColor" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round"/> +</svg> diff --git a/public/images/common/drag.svg b/public/images/common/drag.svg new file mode 100644 index 0000000000..b691d45328 --- /dev/null +++ b/public/images/common/drag.svg @@ -0,0 +1,8 @@ +<svg width="18" height="16" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M5.65918 7.99935C5.65918 7.26297 6.25863 6.66602 6.99809 6.66602C7.73756 6.66602 8.33701 7.26297 8.33701 7.99935C8.33701 8.73573 7.73756 9.33268 6.99809 9.33268C6.25863 9.33268 5.65918 8.73573 5.65918 7.99935Z" fill="#636669"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M9.67578 7.99935C9.67578 7.26297 10.2752 6.66602 11.0147 6.66602C11.7542 6.66602 12.3536 7.26297 12.3536 7.99935C12.3536 8.73573 11.7542 9.33268 11.0147 9.33268C10.2752 9.33268 9.67578 8.73573 9.67578 7.99935Z" fill="#636669"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M5.65918 3.33333C5.65918 2.59695 6.25863 2 6.99809 2C7.73756 2 8.33701 2.59695 8.33701 3.33333C8.33701 4.06971 7.73756 4.66667 6.99809 4.66667C6.25863 4.66667 5.65918 4.06971 5.65918 3.33333Z" fill="#636669"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M9.67578 3.33333C9.67578 2.59695 10.2752 2 11.0147 2C11.7542 2 12.3536 2.59695 12.3536 3.33333C12.3536 4.06971 11.7542 4.66667 11.0147 4.66667C10.2752 4.66667 9.67578 4.06971 9.67578 3.33333Z" fill="#636669"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M5.65918 12.6673C5.65918 11.9309 6.25863 11.334 6.99809 11.334C7.73756 11.334 8.33701 11.9309 8.33701 12.6673C8.33701 13.4037 7.73756 14.0007 6.99809 14.0007C6.25863 14.0007 5.65918 13.4037 5.65918 12.6673Z" fill="#636669"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M9.67578 12.6673C9.67578 11.9309 10.2752 11.334 11.0147 11.334C11.7542 11.334 12.3536 11.9309 12.3536 12.6673C12.3536 13.4037 11.7542 14.0007 11.0147 14.0007C10.2752 14.0007 9.67578 13.4037 9.67578 12.6673Z" fill="#636669"/> +</svg> diff --git a/public/images/common/empty-batch.svg b/public/images/common/empty-batch.svg new file mode 100644 index 0000000000..10d10f75ad --- /dev/null +++ b/public/images/common/empty-batch.svg @@ -0,0 +1,8 @@ +<svg width="142" height="111" viewBox="0 0 142 111" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M74 6C101.614 6 124 28.3859 124 56C124 83.613 101.614 106 74 106C46.387 106 24 83.613 24 56C24 28.3859 46.387 6 74 6Z" class="illustration-background-fill" /> +<path d="M50.0011 84C48.9622 84 48.0509 84.6835 47.7586 85.6774L47.5861 86.2682C46.083 91.3267 45.0585 92.2123 39.6914 93.7551C38.6934 94.0392 38 94.9553 38 96C38 97.0414 38.6896 97.9524 39.6833 98.2426L40.2734 98.4148C45.3263 99.9159 46.2122 100.941 47.7551 106.31C48.0491 107.317 48.9639 107.999 50.0011 107.999C51.04 107.999 51.9598 107.311 52.2463 106.305L52.5026 105.435C53.9575 100.639 55.0434 99.7575 60.3093 98.245C61.3141 97.9537 62 97.0392 62 96C62 94.9575 61.3103 94.0379 60.3011 93.7527L59.4318 93.4965C54.6401 92.0429 53.7587 90.9566 52.2449 85.6893C51.958 84.6889 51.0416 84 50.0011 84Z" /> +<path fill-rule="evenodd" clip-rule="evenodd" d="M107 12C107 6.47715 102.523 2 97 2C91.4772 2 87 6.47715 87 12C87 17.5228 91.4772 22 97 22C102.523 22 107 17.5228 107 12ZM91 12C91 8.68629 93.6863 6 97 6C100.314 6 103 8.68629 103 12C103 15.3137 100.314 18 97 18C93.6863 18 91 15.3137 91 12Z" /> +<path d="M89.8847 105.939C88.8304 105.939 87.9666 105.124 87.8902 104.089L87.8847 103.939L87.8855 41.8295L72.4137 57.298C71.6737 58.0379 70.4982 58.0768 69.7124 57.4147L69.5852 57.2979C68.8453 56.5579 68.8065 55.3824 69.4685 54.5967L69.5854 54.4695L88.4714 35.5855C89.2113 34.8456 90.3868 34.8067 91.1725 35.4687L91.2997 35.5855L110.184 54.4695C110.965 55.2506 110.965 56.5169 110.184 57.298C109.444 58.0379 108.268 58.0769 107.483 57.4148L107.355 57.298L91.8855 41.8295L91.8847 103.939C91.8847 105.044 90.9893 105.939 89.8847 105.939Z" class="illustration-light-fill" /> +<path fill-rule="evenodd" clip-rule="evenodd" d="M29.7397 5.29752C30.5331 4.90083 31.4669 4.90083 32.2603 5.29752L60.4416 19.3884C61.3963 19.8658 61.9994 20.8416 61.9994 21.9091C61.9994 22.9765 61.3963 23.9524 60.4416 24.4298L32.2603 38.5207C31.4669 38.9174 30.5331 38.9174 29.7397 38.5207L1.55844 24.4298C0.603703 23.9524 0.000617308 22.9765 0.000617308 21.9091C0.000617308 20.8416 0.603703 19.8658 1.55844 19.3884L29.7397 5.29752ZM9.12026 21.9091L31 32.8492L52.8797 21.9091L31 10.969L9.12026 21.9091ZM0.298135 34.7397C0.994182 33.3476 2.68695 32.7833 4.07905 33.4793L31 46.9401L57.921 33.4793C59.313 32.7833 61.0058 33.3476 61.7019 34.7397C62.3979 36.1318 61.8337 37.8246 60.4416 38.5207L32.2603 52.6116C31.4669 53.0083 30.5331 53.0083 29.7397 52.6116L1.55844 38.5207C0.166345 37.8246 -0.397912 36.1318 0.298135 34.7397ZM0.298135 48.8306C0.994182 47.4385 2.68695 46.8742 4.07905 47.5703L31 61.031L57.921 47.5703C59.313 46.8742 61.0058 47.4385 61.7019 48.8306C62.3979 50.2227 61.8337 51.9155 60.4416 52.6116L32.2603 66.7025C31.4669 67.0992 30.5331 67.0992 29.7397 66.7025L1.55844 52.6116C0.166345 51.9155 -0.397912 50.2227 0.298135 48.8306Z" /> +<path d="M120.885 40C121.939 40 122.803 40.8159 122.879 41.8507L122.885 42L122.884 104.11L138.356 88.6414C139.096 87.9015 140.271 87.8626 141.057 88.5247L141.184 88.6416C141.924 89.3815 141.963 90.557 141.301 91.3428L141.184 91.47L122.298 110.354C121.558 111.094 120.383 111.133 119.597 110.471L119.47 110.354L100.586 91.4699C99.8047 90.6889 99.8047 89.4225 100.586 88.6415C101.326 87.9015 102.501 87.8626 103.287 88.5247L103.414 88.6415L118.884 104.11L118.885 42C118.885 40.8954 119.78 40 120.885 40Z" class="illustration-light-fill" /> +</svg> diff --git a/public/images/common/success.svg b/public/images/common/success.svg new file mode 100644 index 0000000000..0b80b5313a --- /dev/null +++ b/public/images/common/success.svg @@ -0,0 +1,4 @@ +<svg width="53" height="53" viewBox="0 0 53 53" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M52.8797 26.5006C52.8797 11.9605 41.0403 0.121094 26.5002 0.121094C11.96 0.121094 0.120605 11.9605 0.120605 26.5006C0.120605 41.0408 11.96 52.8802 26.5002 52.8802C41.0403 52.8802 52.8797 41.0408 52.8797 26.5006ZM2.77061 26.5006C2.77061 13.424 13.4235 2.77109 26.5002 2.77109C39.5768 2.77109 50.2297 13.424 50.2297 26.5006C50.2297 39.5773 39.5768 50.2302 26.5002 50.2302C13.4235 50.2302 2.77061 39.5773 2.77061 26.5006Z" /> +<path d="M39.5119 18.8438L41.4337 20.6683L24.0532 38.9752L11.5664 25.8226L13.4883 23.998L24.0532 35.1264L39.5119 18.8438Z" /> +</svg> diff --git a/src/components/batch/BatchIndicator/BatchTooltip.tsx b/src/components/batch/BatchIndicator/BatchTooltip.tsx new file mode 100644 index 0000000000..ebd71ddc74 --- /dev/null +++ b/src/components/batch/BatchIndicator/BatchTooltip.tsx @@ -0,0 +1,61 @@ +import { type ReactElement, useEffect, useState } from 'react' +import { Box, SvgIcon } from '@mui/material' +import Tooltip, { type TooltipProps, tooltipClasses } from '@mui/material/Tooltip' +import { styled } from '@mui/material/styles' +import SuccessIcon from '@/public/images/common/success.svg' +import { TxEvent, txSubscribe } from '@/services/tx/txEvents' + +const StyledTooltip = styled(({ className, ...props }: TooltipProps) => ( + <Tooltip {...props} classes={{ popper: className }} /> +))(({ theme }) => ({ + [`& .${tooltipClasses.tooltip}`]: { + backgroundColor: theme.palette.background.paper, + color: theme.palette.text.primary, + fontSize: theme.typography.pxToRem(16), + fontWeight: 700, + border: `1px solid ${theme.palette.border.light}`, + marginTop: theme.spacing(2) + ' !important', + }, + [`& .${tooltipClasses.arrow}`]: { + color: theme.palette.background.paper, + }, + [`& .${tooltipClasses.arrow}:before`]: { + border: `1px solid ${theme.palette.border.light}`, + }, +})) + +const BatchTooltip = ({ children }: { children: ReactElement }) => { + const [showTooltip, setShowTooltip] = useState<boolean>(false) + + // Click outside to close the tooltip + useEffect(() => { + const handleClickOutside = () => setShowTooltip(false) + document.addEventListener('click', handleClickOutside) + return () => document.removeEventListener('click', handleClickOutside) + }, []) + + // Show tooltip when tx is added to batch + useEffect(() => { + return txSubscribe(TxEvent.BATCH_ADD, () => setShowTooltip(true)) + }, []) + + return ( + <StyledTooltip + open={showTooltip} + onClose={() => setShowTooltip(false)} + arrow + title={ + <Box display="flex" flexDirection="column" alignItems="center" p={2} gap={2}> + <Box fontSize="53px"> + <SvgIcon component={SuccessIcon} inheritViewBox fontSize="inherit" /> + </Box> + Transaction is added to batch + </Box> + } + > + <div>{children}</div> + </StyledTooltip> + ) +} + +export default BatchTooltip diff --git a/src/components/batch/BatchIndicator/index.tsx b/src/components/batch/BatchIndicator/index.tsx new file mode 100644 index 0000000000..6c79ba6788 --- /dev/null +++ b/src/components/batch/BatchIndicator/index.tsx @@ -0,0 +1,24 @@ +import { Badge, ButtonBase, SvgIcon } from '@mui/material' +import BatchIcon from '@/public/images/common/batch.svg' +import { useDraftBatch } from '@/hooks/useDraftBatch' +import Track from '@/components/common/Track' +import { BATCH_EVENTS } from '@/services/analytics' +import BatchTooltip from './BatchTooltip' + +const BatchIndicator = ({ onClick }: { onClick?: () => void }) => { + const { length } = useDraftBatch() + + return ( + <BatchTooltip> + <Track {...BATCH_EVENTS.BATCH_SIDEBAR_OPEN} label={length}> + <ButtonBase onClick={onClick} sx={{ p: 0.5 }}> + <Badge variant="standard" color="secondary" badgeContent={length}> + <SvgIcon component={BatchIcon} inheritViewBox fontSize="small" /> + </Badge> + </ButtonBase> + </Track> + </BatchTooltip> + ) +} + +export default BatchIndicator diff --git a/src/components/batch/BatchSidebar/BatchTxItem.tsx b/src/components/batch/BatchSidebar/BatchTxItem.tsx new file mode 100644 index 0000000000..8572fe7d86 --- /dev/null +++ b/src/components/batch/BatchSidebar/BatchTxItem.tsx @@ -0,0 +1,110 @@ +import { type SyntheticEvent, useMemo, useCallback } from 'react' +import { Accordion, AccordionDetails, AccordionSummary, Box, ButtonBase, SvgIcon } from '@mui/material' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import css from './styles.module.css' +import { type DraftBatchItem } from '@/store/batchSlice' +import TxType from '@/components/transactions/TxType' +import TxInfo from '@/components/transactions/TxInfo' +import DeleteIcon from '@/public/images/common/delete.svg' +import DragIcon from '@/public/images/common/drag.svg' +import TxData from '@/components/transactions/TxDetails/TxData' +import { MethodDetails } from '@/components/transactions/TxDetails/TxData/DecodedData/MethodDetails' +import { TxDataRow } from '@/components/transactions/TxDetails/Summary/TxDataRow' +import { dateString } from '@/utils/formatters' +import { BATCH_EVENTS, trackEvent } from '@/services/analytics' + +type BatchTxItemProps = DraftBatchItem & { + id: string + count: number + onDelete?: (id: string) => void + draggable?: boolean + dragging?: boolean +} + +const BatchTxItem = ({ + id, + count, + timestamp, + txDetails, + onDelete, + dragging = false, + draggable = false, +}: BatchTxItemProps) => { + const txSummary = useMemo( + () => ({ + timestamp, + id: txDetails.txId, + txInfo: txDetails.txInfo, + txStatus: txDetails.txStatus, + safeAppInfo: txDetails.safeAppInfo, + }), + [timestamp, txDetails], + ) + + const handleDelete = useCallback( + (e: SyntheticEvent) => { + e.stopPropagation() + if (confirm('Are you sure you want to delete this transaction?')) { + onDelete?.(id) + trackEvent(BATCH_EVENTS.BATCH_DELETE_TX) + } + }, + [onDelete, id], + ) + + const handleExpand = () => { + trackEvent(BATCH_EVENTS.BATCH_EXPAND_TX) + } + + return ( + <Box display="flex" gap={2}> + <div className={css.number}>{count}</div> + + <Accordion elevation={0} sx={{ flex: 1 }} onChange={handleExpand}> + <AccordionSummary expandIcon={<ExpandMoreIcon />} disabled={dragging} className={css.accordion}> + <Box flex={1} display="flex" alignItems="center" gap={2} py={0.4}> + {draggable && ( + <SvgIcon + component={DragIcon} + inheritViewBox + fontSize="small" + className={css.dragHandle} + onClick={(e: MouseEvent) => e.stopPropagation()} + /> + )} + + <TxType tx={txSummary} /> + + <Box flex={1}> + <TxInfo info={txDetails.txInfo} /> + </Box> + + {onDelete && ( + <> + <Box className={css.separator} /> + + <ButtonBase onClick={handleDelete} sx={{ p: 0.5 }}> + <SvgIcon component={DeleteIcon} inheritViewBox fontSize="small" /> + </ButtonBase> + + <Box className={css.separator} mr={2} /> + </> + )} + </Box> + </AccordionSummary> + + <AccordionDetails> + <div className={css.details}> + <TxData txDetails={txDetails} /> + + <TxDataRow title="Created:">{timestamp ? dateString(timestamp) : null}</TxDataRow> + + {txDetails.txData?.dataDecoded && <MethodDetails data={txDetails.txData.dataDecoded} />} + </div> + </AccordionDetails> + </Accordion> + </Box> + ) +} + +export default BatchTxItem diff --git a/src/components/batch/BatchSidebar/BatchTxList.tsx b/src/components/batch/BatchSidebar/BatchTxList.tsx new file mode 100644 index 0000000000..55fc1fa3dc --- /dev/null +++ b/src/components/batch/BatchSidebar/BatchTxList.tsx @@ -0,0 +1,43 @@ +import { Reorder } from 'framer-motion' +import type { DraftBatchItem } from '@/store/batchSlice' +import BatchTxItem from './BatchTxItem' +import { useState } from 'react' + +const BatchTxList = ({ txItems, onDelete }: { txItems: DraftBatchItem[]; onDelete?: (id: string) => void }) => { + return ( + <> + {txItems.map((item, index) => ( + <BatchTxItem key={item.id} count={index + 1} {...item} onDelete={onDelete} /> + ))} + </> + ) +} + +export const BatchReorder = ({ + txItems, + onDelete, + onReorder, +}: { + txItems: DraftBatchItem[] + onDelete?: (id: string) => void + onReorder: (items: DraftBatchItem[]) => void +}) => { + const [dragging, setDragging] = useState(false) + + return ( + <Reorder.Group axis="y" values={txItems} onReorder={onReorder}> + {txItems.map((item, index) => ( + <Reorder.Item + key={item.id} + value={item} + onDragStart={() => setDragging(true)} + onDragEnd={() => setDragging(false)} + > + <BatchTxItem count={index + 1} {...item} onDelete={onDelete} draggable dragging={dragging} /> + </Reorder.Item> + ))} + </Reorder.Group> + ) +} + +export default BatchTxList diff --git a/src/components/batch/BatchSidebar/EmptyBatch.tsx b/src/components/batch/BatchSidebar/EmptyBatch.tsx new file mode 100644 index 0000000000..ae65fcf4dd --- /dev/null +++ b/src/components/batch/BatchSidebar/EmptyBatch.tsx @@ -0,0 +1,51 @@ +import { type ReactNode } from 'react' +import EmptyBatchIcon from '@/public/images/common/empty-batch.svg' +import InfoIcon from '@/public/images/notifications/info.svg' +import AssetsIcon from '@/public/images/sidebar/assets.svg' +import AppsIcon from '@/public/images/apps/apps-icon.svg' +import SettingsIcon from '@/public/images/sidebar/settings.svg' +import { Box, SvgIcon, Typography } from '@mui/material' + +const EmptyBatch = ({ children }: { children: ReactNode }) => ( + <Box display="flex" flexWrap="wrap" justifyContent="center" textAlign="center" mt={3} px={4}> + <SvgIcon component={EmptyBatchIcon} inheritViewBox sx={{ fontSize: 110 }} /> + + <Typography variant="h4" fontWeight={700}> + Add an initial transaction to the batch + </Typography> + + <Typography variant="body2" mt={2} mb={4} px={8} sx={{ textWrap: 'balance' }}> + Save gas and signatures by adding multiple Safe transactions to a single batch transaction. You can reorder and + delete individual transactions in a batch. + </Typography> + + {children} + + <Typography variant="body2" color="border.main" mt={8}> + <Box mb={1}> + <SvgIcon component={InfoIcon} inheritViewBox /> + </Box> + + <b>What type of transactions can you add to the batch?</b> + + <Box display="flex" mt={3} gap={6}> + <div> + <SvgIcon component={AssetsIcon} inheritViewBox /> + <div>Token and NFT transfers</div> + </div> + + <div> + <SvgIcon component={AppsIcon} inheritViewBox /> + <div>Safe App transactions</div> + </div> + + <div> + <SvgIcon component={SettingsIcon} inheritViewBox /> + <div>Safe Account settings</div> + </div> + </Box> + </Typography> + </Box> +) + +export default EmptyBatch diff --git a/src/components/batch/BatchSidebar/index.tsx b/src/components/batch/BatchSidebar/index.tsx new file mode 100644 index 0000000000..19aaf48363 --- /dev/null +++ b/src/components/batch/BatchSidebar/index.tsx @@ -0,0 +1,101 @@ +import { type SyntheticEvent, useEffect } from 'react' +import { useCallback, useContext } from 'react' +import { Button, Divider, Drawer, IconButton, SvgIcon, Typography } from '@mui/material' +import CloseIcon from '@mui/icons-material/Close' +import { useDraftBatch, useUpdateBatch } from '@/hooks/useDraftBatch' +import css from './styles.module.css' +import NewTxMenu from '@/components/tx-flow/flows/NewTx' +import { TxModalContext } from '@/components/tx-flow' +import ConfirmBatchFlow from '@/components/tx-flow/flows/ConfirmBatch' +import Track from '@/components/common/Track' +import { BATCH_EVENTS } from '@/services/analytics' +import { BatchReorder } from './BatchTxList' + +import PlusIcon from '@/public/images/common/plus.svg' +import EmptyBatch from './EmptyBatch' + +const BatchSidebar = ({ isOpen, onToggle }: { isOpen: boolean; onToggle: (open: boolean) => void }) => { + const { txFlow, setTxFlow } = useContext(TxModalContext) + const batchTxs = useDraftBatch() + const [, deleteTx, onReorder] = useUpdateBatch() + + const closeSidebar = useCallback(() => { + onToggle(false) + }, [onToggle]) + + const clearBatch = useCallback(() => { + batchTxs.forEach((item) => deleteTx(item.txDetails.txId)) + }, [deleteTx, batchTxs]) + + const onAddClick = useCallback( + (e: SyntheticEvent) => { + e.preventDefault() + setTxFlow(<NewTxMenu />, undefined, false) + }, + [setTxFlow], + ) + + const onConfirmClick = useCallback( + async (e: SyntheticEvent) => { + e.preventDefault() + if (!batchTxs.length) return + closeSidebar() + setTxFlow(<ConfirmBatchFlow onSubmit={clearBatch} />, undefined, false) + }, + [setTxFlow, batchTxs, closeSidebar, clearBatch], + ) + + // Close sidebar when txFlow modal is opened + useEffect(() => { + if (txFlow) closeSidebar() + }, [txFlow, closeSidebar]) + + return ( + <Drawer variant="temporary" anchor="right" open={isOpen} onClose={closeSidebar}> + <aside className={css.aside}> + <Typography variant="h4" fontWeight={700} mb={1}> + Batched transactions + </Typography> + + <Divider /> + + {batchTxs.length ? ( + <> + <div className={css.txs}> + <BatchReorder txItems={batchTxs} onDelete={deleteTx} onReorder={onReorder} /> + </div> + + <Track {...BATCH_EVENTS.BATCH_NEW_TX}> + <Button onClick={onAddClick}> + <SvgIcon component={PlusIcon} inheritViewBox fontSize="small" sx={{ mr: 1 }} /> + Add new transaction + </Button> + </Track> + + <Divider /> + + <Track {...BATCH_EVENTS.BATCH_CONFIRM} label={batchTxs.length}> + <Button variant="contained" onClick={onConfirmClick} disabled={!batchTxs.length}> + Confirm batch + </Button> + </Track> + </> + ) : ( + <EmptyBatch> + <Track {...BATCH_EVENTS.BATCH_NEW_TX}> + <Button onClick={onAddClick} variant="contained"> + New transaction + </Button> + </Track> + </EmptyBatch> + )} + + <IconButton className={css.close} aria-label="close" onClick={closeSidebar} size="small"> + <CloseIcon fontSize="medium" /> + </IconButton> + </aside> + </Drawer> + ) +} + +export default BatchSidebar diff --git a/src/components/batch/BatchSidebar/styles.module.css b/src/components/batch/BatchSidebar/styles.module.css new file mode 100644 index 0000000000..ef9e77a584 --- /dev/null +++ b/src/components/batch/BatchSidebar/styles.module.css @@ -0,0 +1,93 @@ +.aside { + margin-top: var(--header-height); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: relative; + width: 700px; + max-width: 100vw; + padding-bottom: var(--space-3); +} + +.aside h4 { + width: 100%; + padding: var(--space-3) var(--space-3) 0; + margin: 0; +} + +.aside hr { + width: 100%; + margin: var(--space-3) 0; +} + +.txs ul { + padding: 0 var(--space-3) var(--space-3); + display: flex; + flex-direction: column; + gap: var(--space-1); + list-style: none; +} + +.txs li { + margin: 0; + padding: 0; +} + +.separator { + border-left: 1px solid var(--color-border-light); + height: calc(100% + 31px); +} + +.txs svg { + color: var(--color-border-main); + transition: color 0.1s ease-in; + transform: scale(1.2); +} + +.txs button:hover svg { + color: var(--color-primary); +} + +.number { + background-color: var(--color-border-light); + border-radius: 100%; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + margin-top: var(--space-2); +} + +.close { + position: absolute; + right: var(--space-2); + top: var(--space-2); + z-index: 1; + padding: var(--space-1); + color: var(--color-border-main); +} + +.details { + display: flex; + flex-direction: column; + gap: var(--space-3); + padding: var(--space-2); + margin: calc(-1 * var(--space-2)); + border-top: 1px solid var(--color-secondary-light); +} + +.dragHandle { + cursor: grab; +} + +.dragHandle:active { + cursor: grabbing; +} + +.accordion { + opacity: 1 !important; +} diff --git a/src/components/common/ConnectWallet/AccountCenter.tsx b/src/components/common/ConnectWallet/AccountCenter.tsx index bed31ded59..f9b7c98317 100644 --- a/src/components/common/ConnectWallet/AccountCenter.tsx +++ b/src/components/common/ConnectWallet/AccountCenter.tsx @@ -108,13 +108,7 @@ const AccountCenter = ({ wallet }: { wallet: ConnectedWallet }) => { <ChainSwitcher fullWidth /> - <Button - variant="contained" - size="small" - onClick={handleSwitchWallet} - fullWidth - sx={{ display: ['none', 'block'] }} - > + <Button variant="contained" size="small" onClick={handleSwitchWallet} fullWidth> Switch wallet </Button> diff --git a/src/components/common/Header/index.tsx b/src/components/common/Header/index.tsx index d66f8c49f3..c2695ab811 100644 --- a/src/components/common/Header/index.tsx +++ b/src/components/common/Header/index.tsx @@ -14,12 +14,14 @@ import useChainId from '@/hooks/useChainId' import SafeLogo from '@/public/images/logo.svg' import Link from 'next/link' import useSafeAddress from '@/hooks/useSafeAddress' +import BatchIndicator from '@/components/batch/BatchIndicator' type HeaderProps = { onMenuToggle?: Dispatch<SetStateAction<boolean>> + onBatchToggle?: Dispatch<SetStateAction<boolean>> } -const Header = ({ onMenuToggle }: HeaderProps): ReactElement => { +const Header = ({ onMenuToggle, onBatchToggle }: HeaderProps): ReactElement => { const chainId = useChainId() const safeAddress = useSafeAddress() const showSafeToken = safeAddress && !!getSafeTokenAddress(chainId) @@ -36,6 +38,12 @@ const Header = ({ onMenuToggle }: HeaderProps): ReactElement => { } } + const handleBatchToggle = () => { + if (onBatchToggle) { + onBatchToggle((isOpen) => !isOpen) + } + } + return ( <Paper className={css.container}> <div className={classnames(css.element, css.menuButton, !onMenuToggle ? css.hideSidebarMobile : null)}> @@ -59,6 +67,10 @@ const Header = ({ onMenuToggle }: HeaderProps): ReactElement => { )} <div className={classnames(css.element, css.hideMobile)}> + <BatchIndicator onClick={handleBatchToggle} /> + </div> + + <div className={css.element}> <NotificationCenter /> </div> diff --git a/src/components/common/Header/styles.module.css b/src/components/common/Header/styles.module.css index 7a439a57df..f7a4b0a601 100644 --- a/src/components/common/Header/styles.module.css +++ b/src/components/common/Header/styles.module.css @@ -62,10 +62,6 @@ } @media (max-width: 599.95px) { - .element { - padding: 0 var(--space-1); - } - .menuButton { padding-left: var(--space-2); } diff --git a/src/components/common/PageLayout/index.tsx b/src/components/common/PageLayout/index.tsx index a7e25b6531..223800c653 100644 --- a/src/components/common/PageLayout/index.tsx +++ b/src/components/common/PageLayout/index.tsx @@ -10,6 +10,7 @@ import { AppRoutes } from '@/config/routes' import useDebounce from '@/hooks/useDebounce' import { useRouter } from 'next/router' import { TxModalContext } from '@/components/tx-flow' +import BatchSidebar from '@/components/batch/BatchSidebar' const isNoSidebarRoute = (pathname: string): boolean => { return [ @@ -30,6 +31,7 @@ const PageLayout = ({ pathname, children }: { pathname: string; children: ReactE const router = useRouter() const [noSidebar, setNoSidebar] = useState<boolean>(isNoSidebarRoute(pathname)) const [isSidebarOpen, setSidebarOpen] = useState<boolean>(true) + const [isBatchOpen, setBatchOpen] = useState<boolean>(false) const hideSidebar = noSidebar || !isSidebarOpen const { setFullWidth } = useContext(TxModalContext) let isAnimated = useDebounce(!noSidebar, 300) @@ -47,7 +49,7 @@ const PageLayout = ({ pathname, children }: { pathname: string; children: ReactE return ( <> <header className={css.header}> - <Header onMenuToggle={noSidebar ? undefined : setSidebarOpen} /> + <Header onMenuToggle={noSidebar ? undefined : setSidebarOpen} onBatchToggle={setBatchOpen} /> </header> {!noSidebar && <SideDrawer isOpen={isSidebarOpen} onToggle={setSidebarOpen} />} @@ -62,6 +64,8 @@ const PageLayout = ({ pathname, children }: { pathname: string; children: ReactE <SafeLoadingError>{children}</SafeLoadingError> </div> + <BatchSidebar isOpen={isBatchOpen} onToggle={setBatchOpen} /> + <Footer /> </div> </> diff --git a/src/components/common/WalletInfo/index.tsx b/src/components/common/WalletInfo/index.tsx index 3754d95a9a..8cbd0c8f2a 100644 --- a/src/components/common/WalletInfo/index.tsx +++ b/src/components/common/WalletInfo/index.tsx @@ -23,10 +23,12 @@ const WalletInfo = ({ wallet }: { wallet: ConnectedWallet }): ReactElement => { <WalletIcon provider={wallet.label} icon={wallet.icon} /> </Suspense> </Box> - <Box> - <Typography variant="caption" component="div" className={css.walletDetails}> + + <Box className={css.walletDetails}> + <Typography variant="caption" component="div" className={css.walletName}> {wallet.label} @ {walletChain?.chainName || UNKNOWN_CHAIN_NAME} </Typography> + <Typography variant="caption" fontWeight="bold" component="div"> {wallet.ens ? ( <div>{wallet.ens}</div> diff --git a/src/components/common/WalletInfo/styles.module.css b/src/components/common/WalletInfo/styles.module.css index 6bc2e53d07..2c6432f1b3 100644 --- a/src/components/common/WalletInfo/styles.module.css +++ b/src/components/common/WalletInfo/styles.module.css @@ -20,8 +20,12 @@ font-size: 12px; } - .imageContainer, .walletDetails { display: none; } + + .imageContainer img { + width: 22px; + height: auto; + } } diff --git a/src/components/transactions/TxDetails/TxData/DecodedData/SingleTxDecoded/index.tsx b/src/components/transactions/TxDetails/TxData/DecodedData/SingleTxDecoded/index.tsx index 9be4c4d329..f8e730bd5c 100644 --- a/src/components/transactions/TxDetails/TxData/DecodedData/SingleTxDecoded/index.tsx +++ b/src/components/transactions/TxDetails/TxData/DecodedData/SingleTxDecoded/index.tsx @@ -61,7 +61,7 @@ export const SingleTxDecoded = ({ <CodeIcon color="border" fontSize="small" /> <Typography>{actionTitle}</Typography> <Typography ml="8px"> - <b>{method}</b> + <b>{method || 'native transfer'}</b> </Typography> </div> </AccordionSummary> diff --git a/src/components/tx-flow/flows/ConfirmBatch/index.tsx b/src/components/tx-flow/flows/ConfirmBatch/index.tsx new file mode 100644 index 0000000000..27e53d211f --- /dev/null +++ b/src/components/tx-flow/flows/ConfirmBatch/index.tsx @@ -0,0 +1,58 @@ +import { type ReactElement, useContext, useEffect } from 'react' +import { type TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' +import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' +import { createMultiSendCallOnlyTx } from '@/services/tx/tx-sender' +import { SafeTxContext } from '../../SafeTxProvider' +import type { MetaTransactionData } from '@safe-global/safe-core-sdk-types' +import { OperationType } from '@safe-global/safe-core-sdk-types' +import TxLayout from '../../common/TxLayout' +import BatchIcon from '@/public/images/common/batch.svg' +import { useDraftBatch } from '@/hooks/useDraftBatch' +import BatchTxList from '@/components/batch/BatchSidebar/BatchTxList' + +type ConfirmBatchProps = { + onSubmit: () => void +} + +const getData = (txDetails: TransactionDetails): MetaTransactionData => { + return { + to: txDetails.txData?.to.value ?? '', + value: txDetails.txData?.value ?? '0', + data: txDetails.txData?.hexData ?? '0x', + operation: OperationType.Call, // only calls can be batched + } +} + +const ConfirmBatch = ({ onSubmit }: ConfirmBatchProps): ReactElement => { + const { setSafeTx, setSafeTxError } = useContext(SafeTxContext) + const batchTxs = useDraftBatch() + + useEffect(() => { + const calls = batchTxs.map((tx) => getData(tx.txDetails)) + createMultiSendCallOnlyTx(calls).then(setSafeTx).catch(setSafeTxError) + }, [batchTxs, setSafeTx, setSafeTxError]) + + return ( + <SignOrExecuteForm onSubmit={onSubmit} isBatch> + <BatchTxList txItems={batchTxs} /> + </SignOrExecuteForm> + ) +} + +const ConfirmBatchFlow = (props: ConfirmBatchProps) => { + const { length } = useDraftBatch() + + return ( + <TxLayout + title="Confirm batch" + subtitle={`This batch contains ${length} transaction${length > 1 ? 's' : ''}`} + icon={BatchIcon} + step={0} + isBatch + > + <ConfirmBatch {...props} /> + </TxLayout> + ) +} + +export default ConfirmBatchFlow diff --git a/src/components/tx-flow/flows/NewTx/index.tsx b/src/components/tx-flow/flows/NewTx/index.tsx index ab0c615eb0..25aa344c93 100644 --- a/src/components/tx-flow/flows/NewTx/index.tsx +++ b/src/components/tx-flow/flows/NewTx/index.tsx @@ -44,7 +44,7 @@ const NewTxMenu = () => { <Grid item xs={12} md={5} className={css.pane} gap={2}> <Typography variant="h4" className={css.type}> - <SvgIcon component={AssetsIcon} inheritViewBox /> + <SvgIcon component={AssetsIcon} inheritViewBox color="secondary" /> Assets </Typography> diff --git a/src/components/tx-flow/flows/RejectTx/RejectTx.tsx b/src/components/tx-flow/flows/RejectTx/RejectTx.tsx index cc1a765294..91db5ae55f 100644 --- a/src/components/tx-flow/flows/RejectTx/RejectTx.tsx +++ b/src/components/tx-flow/flows/RejectTx/RejectTx.tsx @@ -19,7 +19,7 @@ const RejectTx = ({ txNonce }: RejectTxProps): ReactElement => { }, [txNonce, setNonce, setSafeTx, setSafeTxError]) return ( - <SignOrExecuteForm onSubmit={() => {}}> + <SignOrExecuteForm onSubmit={() => {}} isBatchable={false}> <Typography mb={2}> To reject the transaction, a separate rejection transaction will be created to replace the original one. </Typography> diff --git a/src/components/tx/DecodedTx/index.test.tsx b/src/components/tx/DecodedTx/index.test.tsx index 983f8c4b73..d0d796688f 100644 --- a/src/components/tx/DecodedTx/index.test.tsx +++ b/src/components/tx/DecodedTx/index.test.tsx @@ -1,6 +1,5 @@ import { fireEvent, render } from '@/tests/test-utils' import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' -import * as gatewayMethods from '@safe-global/safe-gateway-typescript-sdk' import DecodedTx from '.' import { waitFor } from '@testing-library/react' @@ -24,6 +23,21 @@ describe('DecodedTx', () => { }, } as SafeTransaction } + decodedData={{ + method: 'Native token transfer', + parameters: [ + { + name: 'to', + type: 'address', + value: '0x3430d04E42a722c5Ae52C5Bffbf1F230C2677600', + }, + { + name: 'value', + type: 'uint256', + value: '1000000', + }, + ], + }} />, ) @@ -37,24 +51,6 @@ describe('DecodedTx', () => { }) it('should render an ERC20 transfer', async () => { - jest.spyOn(gatewayMethods, 'getDecodedData').mockReturnValue( - Promise.resolve({ - method: 'transfer', - parameters: [ - { - name: 'to', - type: 'address', - value: '0x474e5Ded6b5D078163BFB8F6dBa355C3aA5478C8', - }, - { - name: 'value', - type: 'uint256', - value: '16745726664999765048', - }, - ], - }), - ) - const result = render( <DecodedTx tx={ @@ -73,6 +69,21 @@ describe('DecodedTx', () => { }, } as SafeTransaction } + decodedData={{ + method: 'transfer', + parameters: [ + { + name: 'to', + type: 'address', + value: '0x474e5Ded6b5D078163BFB8F6dBa355C3aA5478C8', + }, + { + name: 'value', + type: 'uint256', + value: '16745726664999765048', + }, + ], + }} />, ) @@ -88,73 +99,6 @@ describe('DecodedTx', () => { }) it('should render a multisend transaction', async () => { - jest.spyOn(gatewayMethods, 'getDecodedData').mockReturnValue( - Promise.resolve({ - method: 'multiSend', - parameters: [ - { - name: 'transactions', - type: 'bytes', - value: '0x0057f1887a8bf19b14fc0df', - valueDecoded: [ - { - operation: 0, - to: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', - value: '0', - data: '0x42842e0e0000000000000000000', - dataDecoded: { - method: 'safeTransferFrom', - parameters: [ - { - name: 'from', - type: 'address', - value: '0xA77DE01e157f9f57C7c4A326eeE9C4874D0598b6', - }, - { - name: 'to', - type: 'address', - value: '0x474e5Ded6b5D078163BFB8F6dBa355C3aA5478C8', - }, - { - name: 'tokenId', - type: 'uint256', - value: '52964617156216674852059480948658573966398315289847646343083345905048987083870', - }, - ], - }, - }, - { - operation: 0, - to: '0xD014e20A75437a4bd0FbB40498FF94e6F337c3e9', - value: '0', - data: '0x42842e0e000000000000000000000000a77de', - dataDecoded: { - method: 'safeTransferFrom', - parameters: [ - { - name: 'from', - type: 'address', - value: '0xA77DE01e157f9f57C7c4A326eeE9C4874D0598b6', - }, - { - name: 'to', - type: 'address', - value: '0x474e5Ded6b5D078163BFB8F6dBa355C3aA5478C8', - }, - { - name: 'tokenId', - type: 'uint256', - value: '412', - }, - ], - }, - }, - ], - }, - ], - }), - ) - const result = render( <DecodedTx tx={ @@ -173,6 +117,70 @@ describe('DecodedTx', () => { }, } as SafeTransaction } + decodedData={{ + method: 'multiSend', + parameters: [ + { + name: 'transactions', + type: 'bytes', + value: '0x0057f1887a8bf19b14fc0df', + valueDecoded: [ + { + operation: 0, + to: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', + value: '0', + data: '0x42842e0e0000000000000000000', + dataDecoded: { + method: 'safeTransferFrom', + parameters: [ + { + name: 'from', + type: 'address', + value: '0xA77DE01e157f9f57C7c4A326eeE9C4874D0598b6', + }, + { + name: 'to', + type: 'address', + value: '0x474e5Ded6b5D078163BFB8F6dBa355C3aA5478C8', + }, + { + name: 'tokenId', + type: 'uint256', + value: '52964617156216674852059480948658573966398315289847646343083345905048987083870', + }, + ], + }, + }, + { + operation: 0, + to: '0xD014e20A75437a4bd0FbB40498FF94e6F337c3e9', + value: '0', + data: '0x42842e0e000000000000000000000000a77de', + dataDecoded: { + method: 'safeTransferFrom', + parameters: [ + { + name: 'from', + type: 'address', + value: '0xA77DE01e157f9f57C7c4A326eeE9C4874D0598b6', + }, + { + name: 'to', + type: 'address', + value: '0x474e5Ded6b5D078163BFB8F6dBa355C3aA5478C8', + }, + { + name: 'tokenId', + type: 'uint256', + value: '412', + }, + ], + }, + }, + ], + }, + ], + }} />, ) @@ -185,14 +193,6 @@ describe('DecodedTx', () => { }) it('should render a function call without parameters', async () => { - // Wrapped token deposit function - jest.spyOn(gatewayMethods, 'getDecodedData').mockReturnValue( - Promise.resolve({ - method: 'deposit', - parameters: [], - }), - ) - const result = render( <DecodedTx tx={ @@ -211,6 +211,10 @@ describe('DecodedTx', () => { }, } as SafeTransaction } + decodedData={{ + method: 'deposit', + parameters: [], + }} />, ) diff --git a/src/components/tx/DecodedTx/index.tsx b/src/components/tx/DecodedTx/index.tsx index 8939a26f53..18bc06e664 100644 --- a/src/components/tx/DecodedTx/index.tsx +++ b/src/components/tx/DecodedTx/index.tsx @@ -1,4 +1,4 @@ -import { type SyntheticEvent, type ReactElement, useMemo, memo } from 'react' +import { type SyntheticEvent, type ReactElement, memo } from 'react' import { Accordion, AccordionDetails, @@ -10,23 +10,14 @@ import { Typography, } from '@mui/material' import { OperationType, type SafeTransaction } from '@safe-global/safe-core-sdk-types' -import { - type DecodedDataResponse, - getDecodedData, - getTransactionDetails, - type TransactionDetails, - Operation, -} from '@safe-global/safe-gateway-typescript-sdk' +import type { DecodedDataResponse } from '@safe-global/safe-gateway-typescript-sdk' +import { getTransactionDetails, type TransactionDetails, Operation } from '@safe-global/safe-gateway-typescript-sdk' import useChainId from '@/hooks/useChainId' import useAsync from '@/hooks/useAsync' import { MethodDetails } from '@/components/transactions/TxDetails/TxData/DecodedData/MethodDetails' import ErrorMessage from '../ErrorMessage' import Summary, { PartialSummary } from '@/components/transactions/TxDetails/Summary' import { trackEvent, MODALS_EVENTS } from '@/services/analytics' -import { isEmptyHexData } from '@/utils/hex' -import ApprovalEditor from '@/components/tx/ApprovalEditor' -import { ErrorBoundary } from '@sentry/react' -import { getNativeTransferData } from '@/services/tx/tokenTransferParams' import Multisend from '@/components/transactions/TxDetails/TxData/DecodedData/Multisend' import InfoIcon from '@/public/images/notifications/info.svg' import ExternalLink from '@/components/common/ExternalLink' @@ -37,49 +28,38 @@ import accordionCss from '@/styles/accordion.module.css' type DecodedTxProps = { tx?: SafeTransaction txId?: string + showMultisend?: boolean + decodedData?: DecodedDataResponse + decodedDataError?: Error + decodedDataLoading?: boolean } -const DecodedTx = ({ tx, txId }: DecodedTxProps): ReactElement | null => { +const DecodedTx = ({ + tx, + txId, + showMultisend = true, + decodedData, + decodedDataError, + decodedDataLoading = false, +}: DecodedTxProps): ReactElement | null => { const chainId = useChainId() - const encodedData = tx?.data.data - const isEmptyData = !!encodedData && isEmptyHexData(encodedData) - const isRejection = isEmptyData && tx?.data.value === '0' - const nativeTransfer = isEmptyData && !isRejection ? getNativeTransferData(tx?.data) : undefined - - const [decodedData = nativeTransfer, decodedDataError, decodedDataLoading] = useAsync<DecodedDataResponse>(() => { - if (!encodedData || isEmptyData) return - return getDecodedData(chainId, encodedData) - }, [chainId, encodedData, isEmptyData]) const isMultisend = !!decodedData?.parameters?.[0]?.valueDecoded const [txDetails, txDetailsError, txDetailsLoading] = useAsync<TransactionDetails>(() => { if (!txId) return return getTransactionDetails(chainId, txId) - }, []) - - const approvalEditorTx = useMemo(() => { - if (!decodedData || !txDetails?.txData) { - return undefined - } - return { ...decodedData, to: txDetails?.txData?.to.value } - }, [decodedData, txDetails?.txData]) + }, [chainId, txId]) const onChangeExpand = (_: SyntheticEvent, expanded: boolean) => { trackEvent({ ...MODALS_EVENTS.TX_DETAILS, label: expanded ? 'Open' : 'Close' }) } - if (isRejection || !tx) return null + if (!decodedData) return null return ( <div> - {approvalEditorTx && ( - <ErrorBoundary fallback={<div>Error parsing data</div>}> - <ApprovalEditor safeTransaction={tx} /> - </ErrorBoundary> - )} - - {isMultisend && ( + {isMultisend && showMultisend && ( <Box my={2}> <Multisend txData={{ diff --git a/src/components/tx/ExecuteCheckbox/index.tsx b/src/components/tx/ExecuteCheckbox/index.tsx index b8b59250e2..43e1ad6720 100644 --- a/src/components/tx/ExecuteCheckbox/index.tsx +++ b/src/components/tx/ExecuteCheckbox/index.tsx @@ -1,5 +1,5 @@ import type { ChangeEvent, ReactElement } from 'react' -import { FormControlLabel, RadioGroup, Radio } from '@mui/material' +import { FormControlLabel, RadioGroup, Radio, Typography } from '@mui/material' import { trackEvent, MODALS_EVENTS } from '@/services/analytics' import { useAppDispatch, useAppSelector } from '@/store' import { selectSettings, setTransactionExecution } from '@/store/settingsSlice' @@ -18,28 +18,23 @@ const ExecuteCheckbox = ({ onChange }: { onChange: (checked: boolean) => void }) } return ( - <RadioGroup row value={String(settings.transactionExecution)} onChange={handleChange} className={css.group}> - <FormControlLabel - value="true" - label={ - <> - Yes, <b>execute</b> - </> - } - control={<Radio />} - className={css.radio} - /> - <FormControlLabel - value="false" - label={ - <> - No, only <b>sign</b> - </> - } - control={<Radio />} - className={css.radio} - /> - </RadioGroup> + <> + <Typography>Would you like to execute the transaction immediately?</Typography> + + <RadioGroup row value={String(settings.transactionExecution)} onChange={handleChange} className={css.group}> + <FormControlLabel + value="true" + label={ + <> + Yes, <b>execute</b> + </> + } + control={<Radio />} + className={css.radio} + /> + <FormControlLabel value="false" label={<>No, later</>} control={<Radio />} className={css.radio} /> + </RadioGroup> + </> ) } diff --git a/src/components/tx/SignOrExecuteForm/BatchButton.tsx b/src/components/tx/SignOrExecuteForm/BatchButton.tsx new file mode 100644 index 0000000000..2c867e20c5 --- /dev/null +++ b/src/components/tx/SignOrExecuteForm/BatchButton.tsx @@ -0,0 +1,34 @@ +import { type SyntheticEvent } from 'react' +import { Box, Button, SvgIcon, Tooltip } from '@mui/material' +import PlusIcon from '@/public/images/common/plus.svg' +import Track from '@/components/common/Track' +import { BATCH_EVENTS } from '@/services/analytics' + +const BatchButton = ({ + onClick, + disabled, + tooltip, +}: { + onClick: (e: SyntheticEvent) => void + disabled?: boolean + tooltip?: string +}) => ( + <> + <Tooltip title={tooltip} placement="top"> + <span> + <Track {...BATCH_EVENTS.BATCH_APPEND}> + <Button variant="outlined" onClick={onClick} disabled={disabled} sx={{ display: ['none', 'block'] }}> + <SvgIcon component={PlusIcon} inheritViewBox fontSize="small" sx={{ mr: 1 }} /> + Add to batch + </Button> + </Track> + </span> + </Tooltip> + <Box display={['none', 'flex']} flexDirection="column" justifyContent="center" color="border.main"> + {' '} + or + </Box> + </> +) + +export default BatchButton diff --git a/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx b/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx index e5acd6fab4..e6129308c9 100644 --- a/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx +++ b/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx @@ -50,7 +50,7 @@ const ExecuteForm = ({ const { needsRiskConfirmation, isRiskConfirmed, setIsRiskIgnored } = useContext(TxSecurityContext) // Check that the transaction is executable - const isCreation = !txId + const isCreation = safeTx?.signatures.size === 0 const isNewExecutableTx = useImmediatelyExecutable() && isCreation const isExecutionLoop = useIsExecutionLoop() diff --git a/src/components/tx/SignOrExecuteForm/SignForm.tsx b/src/components/tx/SignOrExecuteForm/SignForm.tsx index 2f9c64eb7c..252ac4344d 100644 --- a/src/components/tx/SignOrExecuteForm/SignForm.tsx +++ b/src/components/tx/SignOrExecuteForm/SignForm.tsx @@ -1,5 +1,5 @@ import { type ReactElement, type SyntheticEvent, useContext, useState } from 'react' -import { Button, CardActions, Divider } from '@mui/material' +import { Box, Button, CardActions, Divider } from '@mui/material' import ErrorMessage from '@/components/tx/ErrorMessage' import { logError, Errors } from '@/services/exceptions' @@ -13,6 +13,7 @@ import { asError } from '@/services/exceptions/utils' import commonCss from '@/components/tx-flow/common/styles.module.css' import { TxSecurityContext } from '../security/shared/TxSecurityContext' import NonOwnerError from '@/components/tx/SignOrExecuteForm/NonOwnerError' +import BatchButton from './BatchButton' const SignForm = ({ safeTx, @@ -20,6 +21,8 @@ const SignForm = ({ onSubmit, disableSubmit = false, origin, + isBatch, + isBatchable, }: SignOrExecuteProps & { safeTx?: SafeTransaction }): ReactElement => { @@ -29,13 +32,14 @@ const SignForm = ({ // Hooks const isOwner = useIsSafeOwner() - const { signTx } = useTxActions() + const { signTx, addToBatch } = useTxActions() const { setTxFlow } = useContext(TxModalContext) const { needsRiskConfirmation, isRiskConfirmed, setIsRiskIgnored } = useContext(TxSecurityContext) const hasSigned = useAlreadySigned(safeTx) + const isCreation = !txId // On modal submit - const handleSubmit = async (e: SyntheticEvent) => { + const handleSubmit = async (e: SyntheticEvent, isAddingToBatch = false) => { e.preventDefault() if (needsRiskConfirmation && !isRiskConfirmed) { @@ -43,12 +47,13 @@ const SignForm = ({ return } + if (!safeTx) return + setIsSubmittable(false) setSubmitError(undefined) try { - await signTx(safeTx, txId, origin) - setTxFlow(undefined) + await (isAddingToBatch ? addToBatch(safeTx, origin) : signTx(safeTx, txId, origin)) } catch (_err) { const err = asError(_err) logError(Errors._804, err) @@ -57,9 +62,14 @@ const SignForm = ({ return } + setTxFlow(undefined) onSubmit() } + const onBatchClick = (e: SyntheticEvent) => { + handleSubmit(e, true) + } + const cannotPropose = !isOwner const submitDisabled = !safeTx || !isSubmittable || disableSubmit || cannotPropose @@ -78,14 +88,25 @@ const SignForm = ({ <Divider className={commonCss.nestedDivider} sx={{ pt: 3 }} /> <CardActions> - {/* Submit button */} - <CheckWallet> - {(isOk) => ( - <Button variant="contained" type="submit" disabled={!isOk || submitDisabled}> - Sign - </Button> + <Box display="flex" gap={2}> + {/* Batch button */} + {isCreation && !isBatch && ( + <BatchButton + onClick={onBatchClick} + disabled={submitDisabled || !isBatchable} + tooltip={!isBatchable ? `Cannot batch this type of transaction` : undefined} + /> )} - </CheckWallet> + + {/* Submit button */} + <CheckWallet> + {(isOk) => ( + <Button variant="contained" type="submit" disabled={!isOk || submitDisabled}> + Sign + </Button> + )} + </CheckWallet> + </Box> </CardActions> </form> ) diff --git a/src/components/tx/SignOrExecuteForm/hooks.ts b/src/components/tx/SignOrExecuteForm/hooks.ts index 17492530a3..abf090c1a6 100644 --- a/src/components/tx/SignOrExecuteForm/hooks.ts +++ b/src/components/tx/SignOrExecuteForm/hooks.ts @@ -17,8 +17,10 @@ import type { ConnectedWallet } from '@/services/onboard' import type { OnboardAPI } from '@web3-onboard/core' import { getSafeTxGas, getRecommendedNonce } from '@/services/tx/tx-sender/recommendedNonce' import useAsync from '@/hooks/useAsync' +import { useUpdateBatch } from '@/hooks/useDraftBatch' type TxActions = { + addToBatch: (safeTx?: SafeTransaction, origin?: string) => Promise<string> signTx: (safeTx?: SafeTransaction, txId?: string, origin?: string) => Promise<string> executeTx: ( txOptions: TransactionOptions, @@ -43,13 +45,14 @@ export const useTxActions = (): TxActions => { const { safe } = useSafeInfo() const onboard = useOnboard() const wallet = useWallet() + const [addTxToBatch] = useUpdateBatch() return useMemo<TxActions>(() => { const safeAddress = safe.address.value const { chainId, version } = safe const proposeTx = async (sender: string, safeTx: SafeTransaction, txId?: string, origin?: string) => { - const tx = await dispatchTxProposal({ + return dispatchTxProposal({ chainId, safeAddress, sender, @@ -57,6 +60,14 @@ export const useTxActions = (): TxActions => { txId, origin, }) + } + + const addToBatch: TxActions['addToBatch'] = async (safeTx, origin) => { + assertTx(safeTx) + assertWallet(wallet) + + const tx = await proposeTx(wallet.address, safeTx, undefined, origin) + await addTxToBatch(tx) return tx.txId } @@ -82,14 +93,15 @@ export const useTxActions = (): TxActions => { // If the first signature is a smart contract wallet, we have to propose w/o signatures // Otherwise the backend won't pick up the tx // The signature will be added once the on-chain signature is indexed - const id = txId || (await proposeTx(wallet.address, safeTx, txId, origin)) + const id = txId || (await proposeTx(wallet.address, safeTx, txId, origin)).txId await dispatchOnChainSigning(safeTx, id, onboard, chainId) return id } // Otherwise, sign off-chain const signedTx = await dispatchTxSigning(safeTx, version, onboard, chainId, txId) - return await proposeTx(wallet.address, signedTx, txId, origin) + const tx = await proposeTx(wallet.address, signedTx, txId, origin) + return tx.txId } const executeTx: TxActions['executeTx'] = async (txOptions, safeTx, txId, origin, isRelayed) => { @@ -100,12 +112,14 @@ export const useTxActions = (): TxActions => { // Relayed transactions must be fully signed, so request a final signature if needed if (isRelayed && safeTx.signatures.size < safe.threshold) { safeTx = await signRelayedTx(safeTx) - txId = await proposeTx(wallet.address, safeTx, txId, origin) + const tx = await proposeTx(wallet.address, safeTx, txId, origin) + txId = tx.txId } // Propose the tx if there's no id yet ("immediate execution") if (!txId) { - txId = await proposeTx(wallet.address, safeTx, txId, origin) + const tx = await proposeTx(wallet.address, safeTx, txId, origin) + txId = tx.txId } // Relay or execute the tx via connected wallet @@ -118,8 +132,8 @@ export const useTxActions = (): TxActions => { return txId } - return { signTx, executeTx } - }, [safe, onboard, wallet]) + return { addToBatch, signTx, executeTx } + }, [safe, onboard, wallet, addTxToBatch]) } export const useValidateNonce = (safeTx: SafeTransaction | undefined): boolean => { diff --git a/src/components/tx/SignOrExecuteForm/index.tsx b/src/components/tx/SignOrExecuteForm/index.tsx index 37d224920f..5a73afbf49 100644 --- a/src/components/tx/SignOrExecuteForm/index.tsx +++ b/src/components/tx/SignOrExecuteForm/index.tsx @@ -15,13 +15,19 @@ import { selectSettings } from '@/store/settingsSlice' import { RedefineBalanceChanges } from '../security/redefine/RedefineBalanceChange' import UnknownContractError from './UnknownContractError' import RiskConfirmationError from './RiskConfirmationError' +import useDecodeTx from '@/hooks/useDecodeTx' +import { ErrorBoundary } from '@sentry/react' +import ApprovalEditor from '../ApprovalEditor' +import { isDelegateCall } from '@/services/tx/tx-sender/sdk' export type SignOrExecuteProps = { txId?: string - onSubmit: () => void // Should go to the success screen onSubmit + onSubmit: () => void children?: ReactNode isExecutable?: boolean isRejection?: boolean + isBatch?: boolean + isBatchable?: boolean onlyExecute?: boolean disableSubmit?: boolean origin?: string @@ -30,10 +36,12 @@ export type SignOrExecuteProps = { const SignOrExecuteForm = (props: SignOrExecuteProps): ReactElement => { const { transactionExecution } = useAppSelector(selectSettings) const [shouldExecute, setShouldExecute] = useState<boolean>(transactionExecution) - const isCreation = !props.txId - const isNewExecutableTx = useImmediatelyExecutable() && isCreation const { safeTx, safeTxError } = useContext(SafeTxContext) + const isCreation = safeTx?.signatures.size === 0 + const isNewExecutableTx = useImmediatelyExecutable() && isCreation const isCorrectNonce = useValidateNonce(safeTx) + const [decodedData, decodedDataError, decodedDataLoading] = useDecodeTx(safeTx) + const isBatchable = props.isBatchable !== false && safeTx && !isDelegateCall(safeTx) // If checkbox is checked and the transaction is executable, execute it, otherwise sign it const canExecute = isCorrectNonce && (props.isExecutable || isNewExecutableTx) @@ -44,7 +52,18 @@ const SignOrExecuteForm = (props: SignOrExecuteProps): ReactElement => { <TxCard> {props.children} - <DecodedTx tx={safeTx} txId={props.txId} /> + <ErrorBoundary fallback={<div>Error parsing data</div>}> + <ApprovalEditor safeTransaction={safeTx} /> + </ErrorBoundary> + + <DecodedTx + tx={safeTx} + txId={props.txId} + decodedData={decodedData} + decodedDataError={decodedDataError} + decodedDataLoading={decodedDataLoading} + showMultisend={!props.isBatch} + /> <RedefineBalanceChanges /> </TxCard> @@ -73,7 +92,11 @@ const SignOrExecuteForm = (props: SignOrExecuteProps): ReactElement => { <RiskConfirmationError /> - {willExecute ? <ExecuteForm {...props} safeTx={safeTx} /> : <SignForm {...props} safeTx={safeTx} />} + {willExecute ? ( + <ExecuteForm {...props} safeTx={safeTx} /> + ) : ( + <SignForm {...props} safeTx={safeTx} isBatchable={isBatchable} /> + )} </TxCard> </> ) diff --git a/src/hooks/useDecodeTx.ts b/src/hooks/useDecodeTx.ts new file mode 100644 index 0000000000..d7be985024 --- /dev/null +++ b/src/hooks/useDecodeTx.ts @@ -0,0 +1,24 @@ +import { type SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { type DecodedDataResponse, getDecodedData } from '@safe-global/safe-gateway-typescript-sdk' +import { getNativeTransferData } from '@/services/tx/tokenTransferParams' +import { isEmptyHexData } from '@/utils/hex' +import type { AsyncResult } from './useAsync' +import useAsync from './useAsync' +import useChainId from './useChainId' + +const useDecodeTx = (tx?: SafeTransaction): AsyncResult<DecodedDataResponse> => { + const chainId = useChainId() + const encodedData = tx?.data.data + const isEmptyData = !!encodedData && isEmptyHexData(encodedData) + const isRejection = isEmptyData && tx?.data.value === '0' + const nativeTransfer = isEmptyData && !isRejection ? getNativeTransferData(tx?.data) : undefined + + const [data = nativeTransfer, error, loading] = useAsync<DecodedDataResponse>(() => { + if (!encodedData || isEmptyData) return + return getDecodedData(chainId, encodedData) + }, [chainId, encodedData, isEmptyData]) + + return [data, error, loading] +} + +export default useDecodeTx diff --git a/src/hooks/useDraftBatch.ts b/src/hooks/useDraftBatch.ts new file mode 100644 index 0000000000..eb9bb1c4af --- /dev/null +++ b/src/hooks/useDraftBatch.ts @@ -0,0 +1,69 @@ +import { useCallback } from 'react' +import { useAppDispatch, useAppSelector } from '@/store' +import useChainId from './useChainId' +import useSafeAddress from './useSafeAddress' +import type { DraftBatchItem } from '@/store/batchSlice' +import { selectBatchBySafe, addTx, removeTx, setBatch } from '@/store/batchSlice' +import { type TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' +import { BATCH_EVENTS, trackEvent } from '@/services/analytics' +import { txDispatch, TxEvent } from '@/services/tx/txEvents' + +export const useUpdateBatch = () => { + const chainId = useChainId() + const safeAddress = useSafeAddress() + const dispatch = useAppDispatch() + + const onAdd = useCallback( + async (txDetails: TransactionDetails): Promise<void> => { + dispatch( + addTx({ + chainId, + safeAddress, + txDetails, + }), + ) + + txDispatch(TxEvent.BATCH_ADD, { txId: txDetails.txId }) + + trackEvent({ ...BATCH_EVENTS.BATCH_TX_APPENDED, label: txDetails.txInfo.type }) + }, + [dispatch, chainId, safeAddress], + ) + + const onDelete = useCallback( + (id: string) => { + dispatch( + removeTx({ + chainId, + safeAddress, + id, + }), + ) + }, + [dispatch, chainId, safeAddress], + ) + + const onSet = useCallback( + (items: DraftBatchItem[]) => { + dispatch( + setBatch({ + chainId, + safeAddress, + items, + }), + ) + + trackEvent({ ...BATCH_EVENTS.BATCH_REORDER }) + }, + [dispatch, chainId, safeAddress], + ) + + return [onAdd, onDelete, onSet] as const +} + +export const useDraftBatch = (): DraftBatchItem[] => { + const chainId = useChainId() + const safeAddress = useSafeAddress() + const batch = useAppSelector((state) => selectBatchBySafe(state, chainId, safeAddress)) + return batch +} diff --git a/src/services/analytics/events/batching.ts b/src/services/analytics/events/batching.ts new file mode 100644 index 0000000000..91c42ebe90 --- /dev/null +++ b/src/services/analytics/events/batching.ts @@ -0,0 +1,44 @@ +export const category = 'batching' + +export const BATCH_EVENTS = { + // Click on the batch button in header + BATCH_SIDEBAR_OPEN: { + action: 'Batch sidebar open', + category, + }, + // On "Add to batch" click + BATCH_APPEND: { + action: 'Add to batch', + category, + }, + // When a tx is successfully appended to the batch + BATCH_TX_APPENDED: { + action: 'Tx added to batch', + category, + }, + // On reorder of batch items + BATCH_REORDER: { + action: 'Batch reorder', + category, + }, + // When batch item details are expanded + BATCH_EXPAND_TX: { + action: 'Expand batched tx', + category, + }, + // When batch item is removed + BATCH_DELETE_TX: { + action: 'Delete batched tx', + category, + }, + // "Add new transaction" in the batch sidebar + BATCH_NEW_TX: { + action: 'Add new tx to batch', + category, + }, + // Confirm batch in the batch sidebar + BATCH_CONFIRM: { + action: 'Confirm batch', + category, + }, +} diff --git a/src/services/analytics/events/index.ts b/src/services/analytics/events/index.ts index 37f3e51eaf..7edb89c9e3 100644 --- a/src/services/analytics/events/index.ts +++ b/src/services/analytics/events/index.ts @@ -8,3 +8,4 @@ export * from './safeApps' export * from './settings' export * from './txList' export * from './wallet' +export * from './batching' diff --git a/src/services/tx/tx-sender/__tests__/ts-sender.test.ts b/src/services/tx/tx-sender/__tests__/ts-sender.test.ts index 23965f53a6..e12c1fa26c 100644 --- a/src/services/tx/tx-sender/__tests__/ts-sender.test.ts +++ b/src/services/tx/tx-sender/__tests__/ts-sender.test.ts @@ -1,15 +1,15 @@ import { setSafeSDK } from '@/hooks/coreSDK/safeCoreSDK' import type Safe from '@safe-global/safe-core-sdk' -import { type TransactionResult } from '@safe-global/safe-core-sdk-types' +import type { TransactionResult } from '@safe-global/safe-core-sdk-types' import { type TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' import { getTransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' import extractTxInfo from '../../extractTxInfo' import proposeTx from '../../proposeTransaction' import * as txEvents from '../../txEvents' import { + createTx, createExistingTx, createRejectTx, - createTx, dispatchTxExecution, dispatchTxProposal, dispatchTxSigning, @@ -30,6 +30,8 @@ const setupFetchStub = (data: any) => (_url: string) => { } import type { EIP1193Provider, OnboardAPI, WalletState, AppState } from '@web3-onboard/core' import { hexZeroPad } from 'ethers/lib/utils' +import { generatePreValidatedSignature } from '@safe-global/safe-core-sdk/dist/src/utils/signatures' +import { createMockSafeTransaction } from '@/tests/transactions' // Mock getTransactionDetails jest.mock('@safe-global/safe-gateway-typescript-sdk', () => ({ @@ -197,7 +199,7 @@ describe('txSender', () => { }) describe('dispatchTxProposal', () => { - it('should dispatch a tx proposal', async () => { + it('should NOT dispatch a tx proposal if tx is unsigned', async () => { const tx = await createTx({ to: '0x123', value: '1', @@ -209,15 +211,30 @@ describe('txSender', () => { expect(proposeTx).toHaveBeenCalledWith('4', '0x123', '0x456', tx, '0x1234567890', undefined) expect(proposedTx).toEqual({ txId: '123' }) + expect(txEvents.txDispatch).not.toHaveBeenCalled() + }) + + it('should dispatch a PROPOSED event if tx is signed and has no id', async () => { + const tx = createMockSafeTransaction({ + to: '0x123', + data: '0x0', + }) + tx.addSignature(generatePreValidatedSignature('0x1234567890123456789012345678901234567890')) + + const proposedTx = await dispatchTxProposal({ chainId: '4', safeAddress: '0x123', sender: '0x456', safeTx: tx }) + + expect(proposeTx).toHaveBeenCalledWith('4', '0x123', '0x456', tx, '0x1234567890', undefined) + expect(proposedTx).toEqual({ txId: '123' }) + expect(txEvents.txDispatch).toHaveBeenCalledWith('PROPOSED', { txId: '123' }) }) - it('should dispatch a tx proposal with a signature', async () => { - const tx = await createTx({ + it('should dispatch a SIGNATURE_PROPOSED event if tx has signatures and an id', async () => { + const tx = createMockSafeTransaction({ to: '0x123', - value: '1', data: '0x0', }) + tx.addSignature(generatePreValidatedSignature('0x1234567890123456789012345678901234567890')) const proposedTx = await dispatchTxProposal({ chainId: '4', diff --git a/src/services/tx/tx-sender/dispatch.ts b/src/services/tx/tx-sender/dispatch.ts index 85cdb18014..42e709d6cc 100644 --- a/src/services/tx/tx-sender/dispatch.ts +++ b/src/services/tx/tx-sender/dispatch.ts @@ -57,10 +57,14 @@ export const dispatchTxProposal = async ({ throw error } - txDispatch(txId ? TxEvent.SIGNATURE_PROPOSED : TxEvent.PROPOSED, { - txId: proposedTx.txId, - signerAddress: txId ? sender : undefined, - }) + // Dispatch a success event only if the tx is signed + // Unsigned txs are proposed only temporarily and won't appear in the queue + if (safeTx.signatures.size > 0) { + txDispatch(txId ? TxEvent.SIGNATURE_PROPOSED : TxEvent.PROPOSED, { + txId: proposedTx.txId, + signerAddress: txId ? sender : undefined, + }) + } return proposedTx } diff --git a/src/services/tx/tx-sender/sdk.ts b/src/services/tx/tx-sender/sdk.ts index 331e28e8a6..ff615cfced 100644 --- a/src/services/tx/tx-sender/sdk.ts +++ b/src/services/tx/tx-sender/sdk.ts @@ -3,7 +3,7 @@ import type Safe from '@safe-global/safe-core-sdk' import EthersAdapter from '@safe-global/safe-ethers-lib' import { ethers } from 'ethers' import { isWalletRejection, isHardwareWallet } from '@/utils/wallets' -import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' +import { OperationType, type SafeTransaction } from '@safe-global/safe-core-sdk-types' import type { SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' import { SAFE_FEATURES } from '@safe-global/safe-core-sdk-utils' import { hasSafeFeature } from '@/utils/safe-versions' @@ -156,3 +156,7 @@ export const tryOffChainTxSigning = async ( // Won't be reached, but TS otherwise complains throw new Error('No supported signing methods') } + +export const isDelegateCall = (safeTx: SafeTransaction): boolean => { + return safeTx.data.operation === OperationType.DelegateCall +} diff --git a/src/services/tx/txEvents.ts b/src/services/tx/txEvents.ts index 8d8cf6f599..0adc2102de 100644 --- a/src/services/tx/txEvents.ts +++ b/src/services/tx/txEvents.ts @@ -20,6 +20,7 @@ export enum TxEvent { FAILED = 'FAILED', SUCCESS = 'SUCCESS', SAFE_APPS_REQUEST = 'SAFE_APPS_REQUEST', + BATCH_ADD = 'BATCH_ADD', } type Id = { txId: string; groupKey?: string } | { txId?: string; groupKey: string } @@ -43,6 +44,7 @@ interface TxEvents { [TxEvent.FAILED]: Id & { error: Error } [TxEvent.SUCCESS]: Id [TxEvent.SAFE_APPS_REQUEST]: { safeAppRequestId: RequestId; safeTxHash: string } + [TxEvent.BATCH_ADD]: Id } const txEventBus = new EventBus<TxEvents>() diff --git a/src/store/batchSlice.ts b/src/store/batchSlice.ts new file mode 100644 index 0000000000..fc93d682f6 --- /dev/null +++ b/src/store/batchSlice.ts @@ -0,0 +1,85 @@ +import { createSelector, createSlice, type PayloadAction } from '@reduxjs/toolkit' +import type { TransactionDetails } from '@safe-global/safe-gateway-typescript-sdk' +import type { RootState } from '.' + +export type DraftBatchItem = { + id: string + timestamp: number + txDetails: TransactionDetails +} + +type BatchTxsState = { + [chainId: string]: { + [safeAddress: string]: DraftBatchItem[] + } +} + +const initialState: BatchTxsState = {} + +export const batchSlice = createSlice({ + name: 'batch', + initialState, + reducers: { + // Set a batch (used for reordering) + setBatch: ( + state, + action: PayloadAction<{ + chainId: string + safeAddress: string + items: DraftBatchItem[] + }>, + ) => { + const { chainId, safeAddress, items } = action.payload + state[chainId] = state[chainId] || {} + // @ts-expect-error + state[chainId][safeAddress] = items + }, + + // Add a tx to the batch + addTx: ( + state, + action: PayloadAction<{ + chainId: string + safeAddress: string + txDetails: TransactionDetails + }>, + ) => { + const { chainId, safeAddress, txDetails } = action.payload + state[chainId] = state[chainId] || {} + state[chainId][safeAddress] = state[chainId][safeAddress] || [] + state[chainId][safeAddress].push({ + id: Math.random().toString(36).slice(2), + timestamp: Date.now(), + txDetails, + }) + }, + + // Remove a tx to the batch by txId + removeTx: ( + state, + action: PayloadAction<{ + chainId: string + safeAddress: string + id: string + }>, + ) => { + const { chainId, safeAddress, id } = action.payload + state[chainId] = state[chainId] || {} + state[chainId][safeAddress] = state[chainId][safeAddress] || [] + state[chainId][safeAddress] = state[chainId][safeAddress].filter((item: DraftBatchItem) => item.id !== id) + }, + }, +}) + +export const { setBatch, addTx, removeTx } = batchSlice.actions + +const selectAllBatches = (state: RootState): BatchTxsState => { + return state[batchSlice.name] || {} +} + +export const selectBatchBySafe = createSelector( + [selectAllBatches, (_, chainId: string, safeAddress: string) => [chainId, safeAddress]], + (allBatches, [chainId, safeAddress]): DraftBatchItem[] => { + return allBatches[chainId]?.[safeAddress] || [] + }, +) diff --git a/src/store/index.ts b/src/store/index.ts index 016e3547c4..70a2b825f1 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -28,6 +28,7 @@ import { spendingLimitSlice } from './spendingLimitsSlice' import { safeAppsSlice } from './safeAppsSlice' import { safeMessagesListener, safeMessagesSlice } from './safeMessagesSlice' import { pendingSafeMessagesSlice } from './pendingSafeMessagesSlice' +import { batchSlice } from './batchSlice' const rootReducer = combineReducers({ [chainsSlice.name]: chainsSlice.reducer, @@ -47,6 +48,7 @@ const rootReducer = combineReducers({ [safeAppsSlice.name]: safeAppsSlice.reducer, [safeMessagesSlice.name]: safeMessagesSlice.reducer, [pendingSafeMessagesSlice.name]: pendingSafeMessagesSlice.reducer, + [batchSlice.name]: batchSlice.reducer, }) const persistedSlices: (keyof PreloadedState<RootState>)[] = [ @@ -58,6 +60,7 @@ const persistedSlices: (keyof PreloadedState<RootState>)[] = [ cookiesSlice.name, safeAppsSlice.name, pendingSafeMessagesSlice.name, + batchSlice.name, ] export const getPersistedState = () => { diff --git a/src/tests/transactions.ts b/src/tests/transactions.ts index 3bc0d1bb23..8e6d4cb196 100644 --- a/src/tests/transactions.ts +++ b/src/tests/transactions.ts @@ -1,6 +1,6 @@ import { ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' import { ethers } from 'ethers' -import { OperationType } from '@safe-global/safe-core-sdk-types' +import { OperationType, type SafeSignature } from '@safe-global/safe-core-sdk-types' import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' import { ERC20__factory, ERC721__factory, Multi_send__factory } from '@/types/contracts' @@ -73,6 +73,8 @@ export const createMockSafeTransaction = ({ data: string operation?: OperationType }): SafeTransaction => { + const signatures = new Map<string, SafeSignature>([]) + return { data: { to, @@ -86,12 +88,12 @@ export const createMockSafeTransaction = ({ safeTxGas: 0, value: '0x0', }, - signatures: new Map(), - addSignature: () => { - throw new Error('Function not implemented.') + signatures, + addSignature: (sig: SafeSignature) => { + signatures.set(sig.signer, sig) }, encodedSignatures: () => { - throw new Error('Function not implemented.') + return '0x' }, } } diff --git a/yarn.lock b/yarn.lock index 95a1f994e4..d968c0b219 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1194,6 +1194,13 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== +"@emotion/is-prop-valid@^0.8.2": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + "@emotion/is-prop-valid@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" @@ -1208,6 +1215,11 @@ dependencies: "@emotion/memoize" "^0.8.1" +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + "@emotion/memoize@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" @@ -8468,6 +8480,15 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== +framer-motion@^10.13.1: + version "10.13.1" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.13.1.tgz#f717c924ce9a8927264b41692a870d1366fe296c" + integrity sha512-uiKsaLEoySeln3eOPy8wUB3FkNtRRiVga5xJOkgs7C0sHVyvpJajXJFSoabt+emBojgnMQY0epnjl0ppoYPxkQ== + dependencies: + tslib "^2.4.0" + optionalDependencies: + "@emotion/is-prop-valid" "^0.8.2" + fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" From 1db9568bdd1df0f53fbd7d266849eb5187cfc54e Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Wed, 2 Aug 2023 21:31:59 +0200 Subject: [PATCH 390/422] Feat: show delegates (#2324) * Feat: show delegates * Fix: don't show delegates if array is empty * Add help tooltip --- package.json | 2 +- .../settings/DelegatesList/index.tsx | 81 +++++++++++++++++++ src/config/constants.ts | 1 + src/pages/settings/setup.tsx | 5 +- yarn.lock | 8 +- 5 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 src/components/settings/DelegatesList/index.tsx diff --git a/package.json b/package.json index 7a35aecc98..a782ecfee1 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@safe-global/safe-core-sdk-utils": "^1.7.4", "@safe-global/safe-deployments": "^1.25.0", "@safe-global/safe-ethers-lib": "^1.9.4", - "@safe-global/safe-gateway-typescript-sdk": "^3.7.3", + "@safe-global/safe-gateway-typescript-sdk": "^3.8.0", "@safe-global/safe-modules-deployments": "^1.0.0", "@safe-global/safe-react-components": "^2.0.5", "@sentry/react": "^7.28.1", diff --git a/src/components/settings/DelegatesList/index.tsx b/src/components/settings/DelegatesList/index.tsx new file mode 100644 index 0000000000..b9ee500e7d --- /dev/null +++ b/src/components/settings/DelegatesList/index.tsx @@ -0,0 +1,81 @@ +import { getDelegates } from '@safe-global/safe-gateway-typescript-sdk' +import useAsync from '@/hooks/useAsync' +import useSafeInfo from '@/hooks/useSafeInfo' +import { Box, Grid, Paper, SvgIcon, Tooltip, Typography } from '@mui/material' +import PrefixedEthHashInfo from '@/components/common/EthHashInfo' +import InfoIcon from '@/public/images/notifications/info.svg' +import ExternalLink from '@/components/common/ExternalLink' +import { HelpCenterArticle } from '@/config/constants' + +const useDelegates = () => { + const { + safe: { chainId }, + safeAddress, + } = useSafeInfo() + const [delegates] = useAsync(() => { + if (!chainId || !safeAddress) return + return getDelegates(chainId, { safe: safeAddress }) + }, [chainId, safeAddress]) + return delegates +} + +const DelegatesList = () => { + const delegates = useDelegates() + + if (!delegates?.results.length) return null + + return ( + <Paper sx={{ p: 4, mt: 2 }}> + <Box display="flex" flexDirection="column" gap={2}> + <Grid container spacing={3}> + <Grid item lg={4} xs={12}> + <Typography variant="h4" fontWeight={700}> + <Tooltip + placement="top" + title={ + <> + What are delegated accounts?{' '} + <ExternalLink href={HelpCenterArticle.DELEGATES}>Learn more</ExternalLink> + </> + } + > + <span> + Delegated accounts + <SvgIcon + component={InfoIcon} + inheritViewBox + fontSize="small" + color="border" + sx={{ verticalAlign: 'middle', ml: 0.5 }} + /> + </span> + </Tooltip> + </Typography> + </Grid> + + <Grid item xs> + <ul style={{ padding: 0, margin: 0 }}> + {delegates.results.map((item) => ( + <li + key={item.delegate} + style={{ listStyleType: 'none', marginBottom: '1em' }} + title={`Delegated by ${item.delegator}`} + > + <PrefixedEthHashInfo + address={item.delegate} + showCopyButton + hasExplorer + name={item.label || undefined} + shortAddress={false} + /> + </li> + ))} + </ul> + </Grid> + </Grid> + </Box> + </Paper> + ) +} + +export default DelegatesList diff --git a/src/config/constants.ts b/src/config/constants.ts index 285673028c..03d62be6d1 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -82,6 +82,7 @@ export const HelpCenterArticle = { SPENDING_LIMITS: `${HELP_CENTER_URL}/en/articles/40842-set-up-and-use-spending-limits`, TRANSACTION_GUARD: `${HELP_CENTER_URL}/en/articles/40809-what-is-a-transaction-guard`, UNEXPECTED_DELEGATE_CALL: `${HELP_CENTER_URL}/en/articles/40794-why-do-i-see-an-unexpected-delegate-call-warning-in-my-transaction`, + DELEGATES: `${HELP_CENTER_URL}/en/articles/40799-what-is-a-delegate-key`, } as const // Social diff --git a/src/pages/settings/setup.tsx b/src/pages/settings/setup.tsx index 5c341cc76f..a551c4a177 100644 --- a/src/pages/settings/setup.tsx +++ b/src/pages/settings/setup.tsx @@ -7,6 +7,7 @@ import { OwnerList } from '@/components/settings/owner/OwnerList' import { RequiredConfirmation } from '@/components/settings/RequiredConfirmations' import useSafeInfo from '@/hooks/useSafeInfo' import SettingsHeader from '@/components/settings/SettingsHeader' +import DelegatesList from '@/components/settings/DelegatesList' const Setup: NextPage = () => { const { safe, safeLoaded } = useSafeInfo() @@ -27,12 +28,12 @@ const Setup: NextPage = () => { <Grid container spacing={3}> <Grid item lg={4} xs={12}> <Typography variant="h4" fontWeight={700}> - Safe Account nonce <Tooltip placement="top" title="For security reasons, transactions made with a Safe Account need to be executed in order. The nonce shows you which transaction will be executed next. You can find the nonce for a transaction in the transaction details." > <span> + Safe Account nonce <SvgIcon component={InfoIcon} inheritViewBox @@ -61,6 +62,8 @@ const Setup: NextPage = () => { <RequiredConfirmation threshold={threshold} owners={ownerLength} /> </Paper> + + <DelegatesList /> </main> </> ) diff --git a/yarn.lock b/yarn.lock index d968c0b219..033773b8e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3261,10 +3261,10 @@ dependencies: cross-fetch "^3.1.5" -"@safe-global/safe-gateway-typescript-sdk@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.7.3.tgz#68ec7d82711e2d0f82ce2e577b1df67ba8da2bed" - integrity sha512-O6JCgXNZWG0Vv8FnOEjKfcbsP0WxGvoPJk5ufqUrsyBlHup16It6oaLnn+25nXFLBZOHI1bz8429JlqAc2t2hg== +"@safe-global/safe-gateway-typescript-sdk@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.8.0.tgz#6a71eeab0ecd447a585531ef87cf987da30b78a0" + integrity sha512-CiGWIHgIaOdICpDxp05Jw3OPslWTu8AnL0PhrCT1xZgIO86NlMMLzkGbeycJ4FHpTjA999O791Oxp4bZPIjgHA== dependencies: cross-fetch "^3.1.5" From e99b51135b50d690906e359c75f5e1fb31b64496 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Thu, 3 Aug 2023 10:08:56 +0200 Subject: [PATCH 391/422] fix: `useAsync` dependency arrays (#2291) * fix: `useAsync` dependency arrays * fix: lint * fix: missing dependency --- .eslintrc.json | 8 +++++++- src/components/transactions/SingleTx/index.tsx | 1 + src/components/transactions/TxDetails/index.tsx | 1 + .../tx/ApprovalEditor/hooks/useApprovalInfos.ts | 1 + src/components/tx/SignOrExecuteForm/hooks.ts | 1 + src/components/tx/security/redefine/useRedefine.ts | 3 ++- src/components/tx/security/useRecipientModule.ts | 2 +- src/hooks/loadables/useLoadBalances.ts | 1 + src/hooks/loadables/useLoadSafeInfo.ts | 1 + src/hooks/loadables/useLoadSafeMessages.ts | 1 + src/hooks/loadables/useLoadSpendingLimits.ts | 3 ++- src/hooks/loadables/useLoadTxHistory.ts | 1 + src/hooks/loadables/useLoadTxQueue.ts | 1 + src/hooks/useGasPrice.ts | 3 ++- src/hooks/useIsValidExecution.ts | 2 +- src/hooks/useRemainingRelays.ts | 2 ++ src/hooks/useWalletCanRelay.ts | 2 +- 17 files changed, 27 insertions(+), 7 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 310d9826c9..6e7d15b87a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,7 +4,13 @@ "@next/next/no-img-element": "off", "unused-imports/no-unused-imports-ts": "error", "@typescript-eslint/consistent-type-imports": "error", - "no-constant-condition": "warn" + "no-constant-condition": "warn", + "react-hooks/exhaustive-deps": [ + "warn", + { + "additionalHooks": "useAsync" + } + ] }, "ignorePatterns": ["node_modules/", ".next/", ".github/"], "plugins": ["unused-imports", "@typescript-eslint"] diff --git a/src/components/transactions/SingleTx/index.tsx b/src/components/transactions/SingleTx/index.tsx index f8e8d7fce4..07f9d33dad 100644 --- a/src/components/transactions/SingleTx/index.tsx +++ b/src/components/transactions/SingleTx/index.tsx @@ -52,6 +52,7 @@ const SingleTx = () => { return details }) }, + // eslint-disable-next-line react-hooks/exhaustive-deps [transactionId, safe.chainId, safe.txQueuedTag, safe.txHistoryTag, safeAddress], false, ) diff --git a/src/components/transactions/TxDetails/index.tsx b/src/components/transactions/TxDetails/index.tsx index 6878bcd1ca..8f57837278 100644 --- a/src/components/transactions/TxDetails/index.tsx +++ b/src/components/transactions/TxDetails/index.tsx @@ -129,6 +129,7 @@ const TxDetails = ({ async () => { return txDetails || getTransactionDetails(chainId, txSummary.id) }, + // eslint-disable-next-line react-hooks/exhaustive-deps [txDetails, chainId, txSummary.id, safe.txQueuedTag], false, ) diff --git a/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts b/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts index 664c2220ea..20ae67d8ed 100644 --- a/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts +++ b/src/components/tx/ApprovalEditor/hooks/useApprovalInfos.ts @@ -52,6 +52,7 @@ export const useApprovalInfos = ( }), ) }, + // eslint-disable-next-line react-hooks/exhaustive-deps [hasApprovalSignatures, balances.items.length], false, // Do not clear data on balance updates ) diff --git a/src/components/tx/SignOrExecuteForm/hooks.ts b/src/components/tx/SignOrExecuteForm/hooks.ts index abf090c1a6..c5b6f7ccbd 100644 --- a/src/components/tx/SignOrExecuteForm/hooks.ts +++ b/src/components/tx/SignOrExecuteForm/hooks.ts @@ -163,6 +163,7 @@ export const useRecommendedNonce = (): number | undefined => { return getRecommendedNonce(safe.chainId, safeAddress) }, + // eslint-disable-next-line react-hooks/exhaustive-deps [safeAddress, safe.chainId, safe.txQueuedTag], // update when tx queue changes false, // keep old recommended nonce while refreshing to avoid skeleton ) diff --git a/src/components/tx/security/redefine/useRedefine.ts b/src/components/tx/security/redefine/useRedefine.ts index 96a7621a7e..7ed4b7d39a 100644 --- a/src/components/tx/security/redefine/useRedefine.ts +++ b/src/components/tx/security/redefine/useRedefine.ts @@ -94,7 +94,8 @@ export const useRedefine = ( threshold: safe.threshold, }) }, - [safe.chainId, safe.threshold, safeAddress, safeTransaction, wallet?.address, retryCounter], + // eslint-disable-next-line react-hooks/exhaustive-deps + [safe.chainId, safe.threshold, safeAddress, safeTransaction, wallet?.address, retryCounter, isFeatureEnabled], false, ) diff --git a/src/components/tx/security/useRecipientModule.ts b/src/components/tx/security/useRecipientModule.ts index 6a0804034b..dbfd50d26c 100644 --- a/src/components/tx/security/useRecipientModule.ts +++ b/src/components/tx/security/useRecipientModule.ts @@ -35,5 +35,5 @@ export const useRecipientModule = (safeTransaction: SafeTransaction | undefined) knownAddresses, provider: web3ReadOnly, }) - }, [safeTransaction, web3ReadOnly, safeLoaded, safe.chainId, knownAddresses, web3ReadOnly]) + }, [safeTransaction, web3ReadOnly, safeLoaded, safe.chainId, knownAddresses]) } diff --git a/src/hooks/loadables/useLoadBalances.ts b/src/hooks/loadables/useLoadBalances.ts index 1a627c351b..a48c455146 100644 --- a/src/hooks/loadables/useLoadBalances.ts +++ b/src/hooks/loadables/useLoadBalances.ts @@ -38,6 +38,7 @@ export const useLoadBalances = (): AsyncResult<SafeBalanceResponse> => { trusted: isTrustedTokenList, }) }, + // eslint-disable-next-line react-hooks/exhaustive-deps [safeAddress, chainId, currency, isTrustedTokenList, pollCount], false, // don't clear data between polls ) diff --git a/src/hooks/loadables/useLoadSafeInfo.ts b/src/hooks/loadables/useLoadSafeInfo.ts index 8a7d7348a0..4a694444b1 100644 --- a/src/hooks/loadables/useLoadSafeInfo.ts +++ b/src/hooks/loadables/useLoadSafeInfo.ts @@ -18,6 +18,7 @@ export const useLoadSafeInfo = (): AsyncResult<SafeInfo> => { const [data, error, loading] = useAsync<SafeInfo>(() => { if (!chainId || !address) return return getSafeInfo(chainId, address) + // eslint-disable-next-line react-hooks/exhaustive-deps }, [chainId, address, pollCount]) // Reset the counter when safe address/chainId changes diff --git a/src/hooks/loadables/useLoadSafeMessages.ts b/src/hooks/loadables/useLoadSafeMessages.ts index d7460a5ebd..767bf5a0aa 100644 --- a/src/hooks/loadables/useLoadSafeMessages.ts +++ b/src/hooks/loadables/useLoadSafeMessages.ts @@ -27,6 +27,7 @@ export const useLoadSafeMessages = (): AsyncResult<SafeMessageListPage> => { } return getSafeMessages(safe.chainId, safeAddress) }, + // eslint-disable-next-line react-hooks/exhaustive-deps [ safeLoaded, safe.chainId, diff --git a/src/hooks/loadables/useLoadSpendingLimits.ts b/src/hooks/loadables/useLoadSpendingLimits.ts index 2727626d72..715cc21432 100644 --- a/src/hooks/loadables/useLoadSpendingLimits.ts +++ b/src/hooks/loadables/useLoadSpendingLimits.ts @@ -105,7 +105,8 @@ export const useLoadSpendingLimits = (): AsyncResult<SpendingLimitState[]> => { if (!provider || !safeLoaded || !safe.modules || !tokenInfoFromBalances) return return getSpendingLimits(provider, safe.modules, safeAddress, chainId, tokenInfoFromBalances) - }, [provider, safeLoaded, safe.modules?.length, safeAddress, chainId, safe.txHistoryTag, tokenInfoFromBalances]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [provider, safeLoaded, safe.modules, tokenInfoFromBalances, safeAddress, chainId, safe.txHistoryTag]) useEffect(() => { if (error) { diff --git a/src/hooks/loadables/useLoadTxHistory.ts b/src/hooks/loadables/useLoadTxHistory.ts index 90cb9dfc60..2d842c1f21 100644 --- a/src/hooks/loadables/useLoadTxHistory.ts +++ b/src/hooks/loadables/useLoadTxHistory.ts @@ -14,6 +14,7 @@ export const useLoadTxHistory = (): AsyncResult<TransactionListPage> => { if (!safeLoaded) return return getTransactionHistory(chainId, safeAddress) }, + // eslint-disable-next-line react-hooks/exhaustive-deps [safeLoaded, chainId, safeAddress, txHistoryTag], false, ) diff --git a/src/hooks/loadables/useLoadTxQueue.ts b/src/hooks/loadables/useLoadTxQueue.ts index 1b06ebd265..8cbaeacf66 100644 --- a/src/hooks/loadables/useLoadTxQueue.ts +++ b/src/hooks/loadables/useLoadTxQueue.ts @@ -18,6 +18,7 @@ export const useLoadTxQueue = (): AsyncResult<TransactionListPage> => { if (!safeLoaded) return return getTransactionQueue(chainId, safeAddress) }, + // eslint-disable-next-line react-hooks/exhaustive-deps [safeLoaded, chainId, safeAddress, reloadTag], false, ) diff --git a/src/hooks/useGasPrice.ts b/src/hooks/useGasPrice.ts index 4a7c3b91d1..0d5b3a4663 100644 --- a/src/hooks/useGasPrice.ts +++ b/src/hooks/useGasPrice.ts @@ -82,7 +82,8 @@ const useGasPrice = (): AsyncResult<{ maxPriorityFeePerGas: maxPrioFee, } }, - [gasPriceConfigs, provider, counter], + // eslint-disable-next-line react-hooks/exhaustive-deps + [gasPriceConfigs, provider, counter, isEIP1559], false, ) diff --git a/src/hooks/useIsValidExecution.ts b/src/hooks/useIsValidExecution.ts index c27bef3cc0..ab21620430 100644 --- a/src/hooks/useIsValidExecution.ts +++ b/src/hooks/useIsValidExecution.ts @@ -101,7 +101,7 @@ const useIsValidExecution = ( throw err } - }, [safeTx, wallet, gasLimit, safe, readOnlyProvider]) + }, [safeTx, wallet, gasLimit, safe, readOnlyProvider, isOwner]) return { isValidExecution, executionValidationError, isValidExecutionLoading } } diff --git a/src/hooks/useRemainingRelays.ts b/src/hooks/useRemainingRelays.ts index 27a5288502..7c301f82ef 100644 --- a/src/hooks/useRemainingRelays.ts +++ b/src/hooks/useRemainingRelays.ts @@ -14,6 +14,7 @@ export const useRelaysBySafe = () => { if (!safeAddress || !chain || !hasFeature(chain, FEATURES.RELAYING)) return return getRelays(chain.chainId, safeAddress) + // eslint-disable-next-line react-hooks/exhaustive-deps }, [chain, safeAddress, safe.txHistoryTag]) } @@ -32,5 +33,6 @@ export const useLeastRemainingRelays = (ownerAddresses: string[]) => { .catch(() => { return { remaining: 0, limit: MAX_HOUR_RELAYS } }) + // eslint-disable-next-line react-hooks/exhaustive-deps }, [chain, ownerAddresses, safe.txHistoryTag]) } diff --git a/src/hooks/useWalletCanRelay.ts b/src/hooks/useWalletCanRelay.ts index 9463e4e7a1..e7261e0226 100644 --- a/src/hooks/useWalletCanRelay.ts +++ b/src/hooks/useWalletCanRelay.ts @@ -23,7 +23,7 @@ const useWalletCanRelay = (tx: SafeTransaction | undefined) => { logError(Errors._106, err.message) return false }) - }, [hasEnoughSignatures, wallet]) + }, [hasEnoughSignatures, tx, wallet]) } export default useWalletCanRelay From 341091127538a2badf8464c57b7588a19af18f3f Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Fri, 4 Aug 2023 08:59:13 +0200 Subject: [PATCH 392/422] Feat: emoji identicons (#2305) * Feat: emoji identicons Add experimental toggle * Fix tests * Fix build * Adjust settings style * Disable emojis for small avatars * Extract static fn part * Fix z-index --- .gitignore | 1 + .../balances/AssetsTable/index.test.tsx | 4 ++ .../balances/HiddenTokenButton/index.test.tsx | 1 + .../batch/BatchSidebar/styles.module.css | 4 ++ .../common/ConnectWallet/AccountCenter.tsx | 6 +- .../common/ConnectWallet/styles.module.css | 4 ++ .../common/EthHashInfo/AddressEmoji.tsx | 57 +++++++++++++++++++ .../common/EthHashInfo/index.test.tsx | 2 +- src/components/common/EthHashInfo/index.tsx | 33 ++++++----- .../common/EthHashInfo/styles.module.css | 50 +++++----------- src/components/common/SafeIcon/index.tsx | 2 + .../common/SafeIcon/styles.module.css | 2 +- .../settings/EmojiPreview/index.tsx | 23 ++++++++ .../TxDetails/TxData/Transfer/index.tsx | 2 +- .../tx/SignOrExecuteForm/BatchButton.tsx | 2 +- src/pages/settings/appearance.tsx | 37 ++++++++++-- src/services/analytics/events/settings.ts | 4 ++ src/store/settingsSlice.ts | 6 ++ 18 files changed, 182 insertions(+), 58 deletions(-) create mode 100644 src/components/common/EthHashInfo/AddressEmoji.tsx create mode 100644 src/components/settings/EmojiPreview/index.tsx diff --git a/.gitignore b/.gitignore index 9166d3eeca..85fdc04a8a 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,4 @@ yalc.lock /public/sw.js.map /public/workbox-*.js /public/workbox-*.js.map +/public/fallback* \ No newline at end of file diff --git a/src/components/balances/AssetsTable/index.test.tsx b/src/components/balances/AssetsTable/index.test.tsx index 759db503d8..d22f7c1e9a 100644 --- a/src/components/balances/AssetsTable/index.test.tsx +++ b/src/components/balances/AssetsTable/index.test.tsx @@ -109,6 +109,7 @@ describe('AssetsTable', () => { onChainSigning: false, }, transactionExecution: true, + addressEmojis: false, }, }, }) @@ -215,6 +216,7 @@ describe('AssetsTable', () => { onChainSigning: false, }, transactionExecution: true, + addressEmojis: false, }, }, }) @@ -317,6 +319,7 @@ describe('AssetsTable', () => { onChainSigning: false, }, transactionExecution: true, + addressEmojis: false, }, }, }) @@ -416,6 +419,7 @@ describe('AssetsTable', () => { onChainSigning: false, }, transactionExecution: true, + addressEmojis: false, }, }, }) diff --git a/src/components/balances/HiddenTokenButton/index.test.tsx b/src/components/balances/HiddenTokenButton/index.test.tsx index 2df2e63fb0..b2a907e5be 100644 --- a/src/components/balances/HiddenTokenButton/index.test.tsx +++ b/src/components/balances/HiddenTokenButton/index.test.tsx @@ -87,6 +87,7 @@ describe('HiddenTokenToggle', () => { onChainSigning: false, }, transactionExecution: true, + addressEmojis: false, }, }, }) diff --git a/src/components/batch/BatchSidebar/styles.module.css b/src/components/batch/BatchSidebar/styles.module.css index ef9e77a584..1f8ba735f9 100644 --- a/src/components/batch/BatchSidebar/styles.module.css +++ b/src/components/batch/BatchSidebar/styles.module.css @@ -21,6 +21,10 @@ margin: var(--space-3) 0; } +.txs { + width: 100%; +} + .txs ul { padding: 0 var(--space-3) var(--space-3); display: flex; diff --git a/src/components/common/ConnectWallet/AccountCenter.tsx b/src/components/common/ConnectWallet/AccountCenter.tsx index f9b7c98317..5909748a2e 100644 --- a/src/components/common/ConnectWallet/AccountCenter.tsx +++ b/src/components/common/ConnectWallet/AccountCenter.tsx @@ -13,6 +13,7 @@ import ChainSwitcher from '../ChainSwitcher' import useAddressBook from '@/hooks/useAddressBook' import { type ConnectedWallet } from '@/hooks/wallets/useOnboard' import WalletInfo, { UNKNOWN_CHAIN_NAME } from '../WalletInfo' +import AddressEmoji from '../EthHashInfo/AddressEmoji' const AccountCenter = ({ wallet }: { wallet: ConnectedWallet }) => { const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null) @@ -78,7 +79,10 @@ const AccountCenter = ({ wallet }: { wallet: ConnectedWallet }) => { sx={{ marginTop: 1 }} > <Paper className={css.popoverContainer}> - <Identicon address={wallet.address} /> + <div className={css.identicon}> + <Identicon address={wallet.address} /> + <AddressEmoji address={wallet.address} /> + </div> <Typography variant="h5" className={css.addressName}> {addressBook[wallet.address] || wallet.ens} diff --git a/src/components/common/ConnectWallet/styles.module.css b/src/components/common/ConnectWallet/styles.module.css index d988b29eec..b4e8867b7a 100644 --- a/src/components/common/ConnectWallet/styles.module.css +++ b/src/components/common/ConnectWallet/styles.module.css @@ -54,6 +54,10 @@ gap: var(--space-2); } +.identicon { + position: relative; +} + @media (max-width: 599.95px) { .buttonContainer button { font-size: 12px; diff --git a/src/components/common/EthHashInfo/AddressEmoji.tsx b/src/components/common/EthHashInfo/AddressEmoji.tsx new file mode 100644 index 0000000000..831b9ab17e --- /dev/null +++ b/src/components/common/EthHashInfo/AddressEmoji.tsx @@ -0,0 +1,57 @@ +import { type ReactElement, memo } from 'react' +import { useAppSelector } from '@/store' +import { selectSettings } from '@/store/settingsSlice' +import css from './styles.module.css' + +// Define the Unicode ranges for animal, fruit, and vegetable emojis +const unicodeRanges = [ + [0x1f400, 0x1f43f], + [0x1f980, 0x1f994], + [0x1f345, 0x1f35f], + [0x1f950, 0x1f96b], +] + +// Calculate the total number of emojis +let totalEmojis = 0 +for (let range of unicodeRanges) { + totalEmojis += range[1] - range[0] + 1 +} + +function ethereumAddressToEmoji(address: string): string { + // Convert the Ethereum address from hexadecimal to decimal + const decimal = BigInt(address.slice(0, 6)) + + // Calculate the index by taking the modulo of the decimal by the number of emojis + let index = Number(decimal % BigInt(totalEmojis)) + + // Find the corresponding emoji + for (let range of unicodeRanges) { + if (index < range[1] - range[0] + 1) { + return String.fromCodePoint(range[0] + index) + } else { + index -= range[1] - range[0] + 1 + } + } + + return '' +} + +type EmojiProps = { + address: string + size?: number +} + +export const Emoji = memo(function Emoji({ address, size = 40 }: EmojiProps): ReactElement { + return ( + <div className={css.emojiWrapper} style={{ fontSize: `${size * 0.7}px`, width: `${size}px`, height: `${size}px` }}> + {ethereumAddressToEmoji(address)} + </div> + ) +}) + +const AddressEmoji = (props: EmojiProps): ReactElement | null => { + const { addressEmojis } = useAppSelector(selectSettings) + return addressEmojis ? <Emoji {...props} /> : null +} + +export default AddressEmoji diff --git a/src/components/common/EthHashInfo/index.test.tsx b/src/components/common/EthHashInfo/index.test.tsx index 17bfd5bc80..3364cc06a9 100644 --- a/src/components/common/EthHashInfo/index.test.tsx +++ b/src/components/common/EthHashInfo/index.test.tsx @@ -173,7 +173,7 @@ describe('EthHashInfo', () => { expect(container.querySelector('.icon')).toHaveAttribute( 'style', - `background-image: url(${makeBlockie(MOCK_SAFE_ADDRESS)}); width: 40px; height: 40px;`, + `background-image: url(${makeBlockie(MOCK_SAFE_ADDRESS)}); width: 44px; height: 44px;`, ) }) diff --git a/src/components/common/EthHashInfo/index.tsx b/src/components/common/EthHashInfo/index.tsx index 5361dd1baf..dcfd6ce100 100644 --- a/src/components/common/EthHashInfo/index.tsx +++ b/src/components/common/EthHashInfo/index.tsx @@ -5,13 +5,14 @@ import useChainId from '@/hooks/useChainId' import { useAppSelector } from '@/store' import { selectSettings } from '@/store/settingsSlice' import { selectChainById } from '@/store/chainsSlice' - -import { getBlockExplorerLink } from '../../../utils/chains' - +import { getBlockExplorerLink } from '@/utils/chains' import type { EthHashInfoProps } from '@safe-global/safe-react-components' +import css from './styles.module.css' +import { Emoji } from './AddressEmoji' const PrefixedEthHashInfo = ({ showName = true, + avatarSize = 44, ...props }: EthHashInfoProps & { showName?: boolean }): ReactElement => { const settings = useAppSelector(selectSettings) @@ -20,18 +21,24 @@ const PrefixedEthHashInfo = ({ const addressBook = useAddressBook() const link = chain ? getBlockExplorerLink(chain, props.address) : undefined const name = showName ? props.name || addressBook[props.address] : undefined + const showEmoji = settings.addressEmojis && props.showAvatar !== false && !props.customAvatar && avatarSize >= 20 return ( - <EthHashInfo - prefix={chain?.shortName} - showPrefix={settings.shortName.show} - copyPrefix={settings.shortName.copy} - {...props} - name={name} - ExplorerButtonProps={{ title: link?.title || '', href: link?.href || '' }} - > - {props.children} - </EthHashInfo> + <div className={css.container}> + <EthHashInfo + prefix={chain?.shortName} + showPrefix={settings.shortName.show} + copyPrefix={settings.shortName.copy} + {...props} + name={name} + customAvatar={props.customAvatar} + ExplorerButtonProps={{ title: link?.title || '', href: link?.href || '' }} + avatarSize={avatarSize} + > + {props.children} + </EthHashInfo> + {showEmoji && <Emoji address={props.address} size={avatarSize} />} + </div> ) } diff --git a/src/components/common/EthHashInfo/styles.module.css b/src/components/common/EthHashInfo/styles.module.css index a64151a6eb..8ebcf511e3 100644 --- a/src/components/common/EthHashInfo/styles.module.css +++ b/src/components/common/EthHashInfo/styles.module.css @@ -1,41 +1,19 @@ .container { - display: flex; - align-items: center; - gap: 0.5em; - line-height: 1.4; -} - -.avatar { - flex-shrink: 0; + position: relative; } -.resizeAvatar, -.resizeAvatar * { - width: 2.3em !important; - height: 2.3em !important; -} - -.addressRow { +.emojiWrapper { + text-align: center; display: flex; - align-items: center; - gap: 0.25em; - white-space: nowrap; -} - -.nameRow { - overflow: hidden; -} - -.mobileAddress { - display: none; -} - -@media (max-width: 599.95px) { - .mobileAddress { - display: inline-block; - } - - .desktopAddress { - display: none; - } + flex-direction: column; + justify-content: center; + position: absolute; + top: 0; + left: 0; + border-radius: 100%; + border: 2px solid var(--color-secondary-light); + color: #000; + background-color: rgba(255, 255, 255, 0.5); + text-shadow: -1px 0 0 var(--color-secondary-light), 0 -1px 0 var(--color-secondary-light), + 1px 0 0 var(--color-secondary-light), 0 1px 0 var(--color-secondary-light); } diff --git a/src/components/common/SafeIcon/index.tsx b/src/components/common/SafeIcon/index.tsx index 4ecfdddbbb..8e565e8e36 100644 --- a/src/components/common/SafeIcon/index.tsx +++ b/src/components/common/SafeIcon/index.tsx @@ -3,6 +3,7 @@ import { Box } from '@mui/material' import css from './styles.module.css' import Identicon, { type IdenticonProps } from '../Identicon' +import AddressEmoji from '../EthHashInfo/AddressEmoji' interface ThresholdProps { threshold: number | string @@ -24,6 +25,7 @@ const SafeIcon = ({ address, threshold, owners, size }: SafeIconProps): ReactEle <div className={css.container}> {threshold && owners ? <Threshold threshold={threshold} owners={owners} /> : null} <Identicon address={address} size={size} /> + <AddressEmoji address={address} size={size} /> </div> ) diff --git a/src/components/common/SafeIcon/styles.module.css b/src/components/common/SafeIcon/styles.module.css index d2efb8456d..c29277c89b 100644 --- a/src/components/common/SafeIcon/styles.module.css +++ b/src/components/common/SafeIcon/styles.module.css @@ -6,7 +6,7 @@ position: absolute; top: -6px; right: -6px; - z-index: 1; + z-index: 2; border-radius: 100%; font-size: 12px; min-width: 24px; diff --git a/src/components/settings/EmojiPreview/index.tsx b/src/components/settings/EmojiPreview/index.tsx new file mode 100644 index 0000000000..f01cfda5a8 --- /dev/null +++ b/src/components/settings/EmojiPreview/index.tsx @@ -0,0 +1,23 @@ +import { Alert, Box, Chip, SvgIcon, Typography } from '@mui/material' +import { ZERO_ADDRESS } from '@safe-global/safe-core-sdk/dist/src/utils/constants' +import InfoIcon from '@/public/images/notifications/info.svg' +import SafeIcon from '@/components/common/SafeIcon' + +const EmojiPreview = () => ( + <> + <Chip label="New" color="secondary" sx={{ fontWeight: 'bold', borderRadius: 2 }} /> + + <Alert severity="success" sx={{ marginTop: 2, borderColor: 'secondary.main' }} icon={<></>}> + <SvgIcon component={InfoIcon} sx={{ marginRight: 1, verticalAlign: 'middle' }} color="secondary" /> + + <Typography component="span">Enable emojis for all Ethereum addresses and your Safe Accounts.</Typography> + + <Box mt={1} display="flex" alignItems="center" gap={1}> + <SafeIcon address={ZERO_ADDRESS} /> + <Typography variant="body2">{ZERO_ADDRESS}</Typography> + </Box> + </Alert> + </> +) + +export default EmojiPreview diff --git a/src/components/transactions/TxDetails/TxData/Transfer/index.tsx b/src/components/transactions/TxDetails/TxData/Transfer/index.tsx index 0020248304..ea1597373a 100644 --- a/src/components/transactions/TxDetails/TxData/Transfer/index.tsx +++ b/src/components/transactions/TxDetails/TxData/Transfer/index.tsx @@ -34,7 +34,7 @@ const TransferTxInfo = ({ txInfo, txStatus }: TransferTxInfoProps) => { <Box> <TransferTxInfoSummary txInfo={txInfo} txStatus={txStatus} /> <Box display="flex" alignItems="center"> - <EthHashInfo address={address} shortAddress={false} hasExplorer showCopyButton> + <EthHashInfo address={address} shortAddress={false} hasExplorer showCopyButton avatarSize={44}> <TransferActions address={address} txInfo={txInfo} /> </EthHashInfo> </Box> diff --git a/src/components/tx/SignOrExecuteForm/BatchButton.tsx b/src/components/tx/SignOrExecuteForm/BatchButton.tsx index 2c867e20c5..70fc4fb8b1 100644 --- a/src/components/tx/SignOrExecuteForm/BatchButton.tsx +++ b/src/components/tx/SignOrExecuteForm/BatchButton.tsx @@ -17,7 +17,7 @@ const BatchButton = ({ <Tooltip title={tooltip} placement="top"> <span> <Track {...BATCH_EVENTS.BATCH_APPEND}> - <Button variant="outlined" onClick={onClick} disabled={disabled} sx={{ display: ['none', 'block'] }}> + <Button variant="outlined" onClick={onClick} disabled={disabled} sx={{ display: ['none', 'flex'] }}> <SvgIcon component={PlusIcon} inheritViewBox fontSize="small" sx={{ mr: 1 }} /> Add to batch </Button> diff --git a/src/pages/settings/appearance.tsx b/src/pages/settings/appearance.tsx index 17013c63af..6b5bfab4d1 100644 --- a/src/pages/settings/appearance.tsx +++ b/src/pages/settings/appearance.tsx @@ -4,11 +4,18 @@ import type { NextPage } from 'next' import Head from 'next/head' import { useAppDispatch, useAppSelector } from '@/store' -import { selectSettings, setCopyShortName, setDarkMode, setShowShortName } from '@/store/settingsSlice' +import { + selectSettings, + setCopyShortName, + setDarkMode, + setShowShortName, + setAddressEmojis, +} from '@/store/settingsSlice' import SettingsHeader from '@/components/settings/SettingsHeader' import { trackEvent, SETTINGS_EVENTS } from '@/services/analytics' import { useDarkMode } from '@/hooks/useDarkMode' import ExternalLink from '@/components/common/ExternalLink' +import EmojiPreview from '@/components/settings/EmojiPreview' const Appearance: NextPage = () => { const dispatch = useAppDispatch() @@ -16,11 +23,12 @@ const Appearance: NextPage = () => { const isDarkMode = useDarkMode() const handleToggle = ( - action: typeof setCopyShortName | typeof setDarkMode | typeof setShowShortName, + action: typeof setCopyShortName | typeof setDarkMode | typeof setShowShortName | typeof setAddressEmojis, event: | typeof SETTINGS_EVENTS.APPEARANCE.PREPEND_PREFIXES | typeof SETTINGS_EVENTS.APPEARANCE.COPY_PREFIXES - | typeof SETTINGS_EVENTS.APPEARANCE.DARK_MODE, + | typeof SETTINGS_EVENTS.APPEARANCE.DARK_MODE + | typeof SETTINGS_EVENTS.APPEARANCE.ADDRESS_EMOJIS, ) => { return (_: ChangeEvent<HTMLInputElement>, checked: boolean) => { dispatch(action(checked)) @@ -41,7 +49,7 @@ const Appearance: NextPage = () => { <SettingsHeader /> <main> - <Paper sx={{ padding: 4 }}> + <Paper sx={{ p: 4 }}> <Grid container spacing={3}> <Grid item lg={4} xs={12}> <Typography variant="h4" fontWeight="bold" mb={1}> @@ -97,6 +105,27 @@ const Appearance: NextPage = () => { /> </Grid> </Grid> + + <Grid container spacing={3} mt={2}> + <Grid item lg={4} xs={12}> + <Typography variant="h4" fontWeight="bold"> + Experimental + </Typography> + </Grid> + + <Grid item xs> + <FormControlLabel + control={ + <Switch + checked={settings.addressEmojis} + onChange={handleToggle(setAddressEmojis, SETTINGS_EVENTS.APPEARANCE.ADDRESS_EMOJIS)} + /> + } + label="Address emoji" + /> + <EmojiPreview /> + </Grid> + </Grid> </Paper> </main> </> diff --git a/src/services/analytics/events/settings.ts b/src/services/analytics/events/settings.ts index 485faea317..e55d417281 100644 --- a/src/services/analytics/events/settings.ts +++ b/src/services/analytics/events/settings.ts @@ -48,6 +48,10 @@ export const SETTINGS_EVENTS = { action: 'Dark mode', category: SETTINGS_CATEGORY, }, + ADDRESS_EMOJIS: { + action: 'Toggle address emojis', + category: SETTINGS_CATEGORY, + }, }, MODULES: { REMOVE_MODULE: { diff --git a/src/store/settingsSlice.ts b/src/store/settingsSlice.ts index 5735ef64ad..691e8d96f3 100644 --- a/src/store/settingsSlice.ts +++ b/src/store/settingsSlice.ts @@ -42,6 +42,7 @@ export type SettingsState = { onChainSigning: boolean } transactionExecution: boolean + addressEmojis: boolean } export const initialState: SettingsState = { @@ -68,6 +69,7 @@ export const initialState: SettingsState = { onChainSigning: false, }, transactionExecution: true, + addressEmojis: false, } export const settingsSlice = createSlice({ @@ -92,6 +94,9 @@ export const settingsSlice = createSlice({ setDarkMode: (state, { payload }: PayloadAction<SettingsState['theme']['darkMode']>) => { state.theme.darkMode = payload }, + setAddressEmojis: (state, { payload }: PayloadAction<SettingsState['addressEmojis']>) => { + state.addressEmojis = payload + }, setHiddenTokensForChain: (state, { payload }: PayloadAction<{ chainId: string; assets: string[] }>) => { const { chainId, assets } = payload state.hiddenTokens[chainId] = assets @@ -127,6 +132,7 @@ export const { setCopyShortName, setQrShortName, setDarkMode, + setAddressEmojis, setHiddenTokensForChain, setTokenList, setRpc, From beae29d52db0a1ad7b78291d2b013028c5a08156 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Fri, 4 Aug 2023 16:52:42 +0200 Subject: [PATCH 393/422] Refactor: onboard auto connect (#2343) * Fix: re-connecting a locked wallet * Reconnect WC v2 * Refactor: onboard autoConnect * e2e wallet * Rm the connectE2EWallet command * Tracking + WC v2 peer tracking * Reset last tracked wallet on disconnect * Lint * Minor UI adjustments * Fix: WC v1 detection --- cypress/e2e/add_owner.cy.js | 2 - cypress/e2e/create_safe.cy.js | 2 - cypress/e2e/non_owner_spending_limit.cy.js | 2 - cypress/e2e/smoke/create_safe_simple.cy.js | 2 - cypress/e2e/smoke/create_tx.cy.js | 1 - cypress/e2e/smoke/nfts.cy.js | 2 - cypress/e2e/smoke/pending_actions.cy.js | 2 - cypress/e2e/spending_limit.cy.js | 2 - cypress/e2e/tx_modal.cy.js | 2 - cypress/e2e/tx_simulation.cy.js | 2 - cypress/support/commands.js | 7 -- src/components/batch/BatchSidebar/index.tsx | 7 +- .../batch/BatchSidebar/styles.module.css | 6 +- .../common/ConnectWallet/AccountCenter.tsx | 3 +- src/components/common/NavTabs/index.tsx | 2 +- .../flows/SuccessScreen/StatusMessage.tsx | 6 +- src/hooks/wallets/useOnboard.ts | 84 +++++++++---------- src/services/onboard.ts | 3 +- src/utils/wallets.ts | 42 ---------- 19 files changed, 58 insertions(+), 121 deletions(-) diff --git a/cypress/e2e/add_owner.cy.js b/cypress/e2e/add_owner.cy.js index 3bc9275b1f..d63a568e5f 100644 --- a/cypress/e2e/add_owner.cy.js +++ b/cypress/e2e/add_owner.cy.js @@ -4,8 +4,6 @@ const offset = 7 describe('Adding an owner', () => { before(() => { - cy.connectE2EWallet() - cy.visit(`/${TEST_SAFE}/settings/setup`) cy.contains('button', 'Accept selection').click() diff --git a/cypress/e2e/create_safe.cy.js b/cypress/e2e/create_safe.cy.js index 04ea76eefc..3906b002d2 100644 --- a/cypress/e2e/create_safe.cy.js +++ b/cypress/e2e/create_safe.cy.js @@ -1,7 +1,5 @@ describe('Create Safe', () => { it('should create a new Safe', () => { - cy.connectE2EWallet() - cy.visit('/welcome') // Close cookie banner diff --git a/cypress/e2e/non_owner_spending_limit.cy.js b/cypress/e2e/non_owner_spending_limit.cy.js index da18f7f3c9..581a9f426b 100644 --- a/cypress/e2e/non_owner_spending_limit.cy.js +++ b/cypress/e2e/non_owner_spending_limit.cy.js @@ -3,8 +3,6 @@ const SPENDING_LIMIT_SAFE = 'gor:0xBE3C5aFF7f66c23fe71c3047911f9Aa0026b281B' describe('Check non-owner spending limit beneficiary modal', () => { before(() => { - cy.connectE2EWallet() - cy.visit(`/${SPENDING_LIMIT_SAFE}/home`, { failOnStatusCode: false }) cy.contains('Accept selection').click() diff --git a/cypress/e2e/smoke/create_safe_simple.cy.js b/cypress/e2e/smoke/create_safe_simple.cy.js index 30b2540be7..1cd65e41f8 100644 --- a/cypress/e2e/smoke/create_safe_simple.cy.js +++ b/cypress/e2e/smoke/create_safe_simple.cy.js @@ -3,8 +3,6 @@ const OWNER_ADDRESS = '0xE297437d6b53890cbf004e401F3acc67c8b39665' describe('Create Safe form', () => { it('should navigate to the form', () => { - cy.connectE2EWallet() - cy.visit('/welcome') // Close cookie banner diff --git a/cypress/e2e/smoke/create_tx.cy.js b/cypress/e2e/smoke/create_tx.cy.js index 74b13e352d..0d09229447 100644 --- a/cypress/e2e/smoke/create_tx.cy.js +++ b/cypress/e2e/smoke/create_tx.cy.js @@ -6,7 +6,6 @@ const currentNonce = 3 describe('Queue a transaction on 1/N', () => { before(() => { - cy.connectE2EWallet() cy.useProdCGW() cy.visit(`/home?safe=${SAFE}`) diff --git a/cypress/e2e/smoke/nfts.cy.js b/cypress/e2e/smoke/nfts.cy.js index 3a5d8e9d46..a1613d9376 100644 --- a/cypress/e2e/smoke/nfts.cy.js +++ b/cypress/e2e/smoke/nfts.cy.js @@ -2,8 +2,6 @@ const TEST_SAFE = 'gor:0x97d314157727D517A706B5D08507A1f9B44AaaE9' describe('Assets > NFTs', () => { before(() => { - cy.connectE2EWallet() - cy.visit(`/balances/nfts?safe=${TEST_SAFE}`) cy.contains('button', 'Accept selection').click() cy.contains(/E2E Wallet @ G(ö|oe)rli/) diff --git a/cypress/e2e/smoke/pending_actions.cy.js b/cypress/e2e/smoke/pending_actions.cy.js index e381212f6d..080996a301 100644 --- a/cypress/e2e/smoke/pending_actions.cy.js +++ b/cypress/e2e/smoke/pending_actions.cy.js @@ -2,9 +2,7 @@ const SAFE = 'gor:0xCD4FddB8FfA90012DFE11eD4bf258861204FeEAE' describe('Pending actions', () => { before(() => { - cy.connectE2EWallet() cy.useProdCGW() - cy.visit(`/welcome`) cy.contains('button', 'Accept selection').click() }) diff --git a/cypress/e2e/spending_limit.cy.js b/cypress/e2e/spending_limit.cy.js index 9def385933..403d1b93ce 100644 --- a/cypress/e2e/spending_limit.cy.js +++ b/cypress/e2e/spending_limit.cy.js @@ -3,8 +3,6 @@ const SPENDING_LIMIT_SAFE = 'gor:0x28F95E682D1dd632b54Dc61740575f49DB39Eb7F' describe('Check spending limit modal', () => { before(() => { - cy.connectE2EWallet() - cy.visit(`/${SPENDING_LIMIT_SAFE}/home`, { failOnStatusCode: false }) cy.contains('Accept selection').click() diff --git a/cypress/e2e/tx_modal.cy.js b/cypress/e2e/tx_modal.cy.js index 1d50ca9f6a..89b92256d4 100644 --- a/cypress/e2e/tx_modal.cy.js +++ b/cypress/e2e/tx_modal.cy.js @@ -5,8 +5,6 @@ const SAFE_NONCE = '6' describe('Tx Modal', () => { before(() => { - cy.connectE2EWallet() - // Open the Safe used for testing cy.visit(`/${TEST_SAFE}`) cy.contains('a', 'Accept selection').click() diff --git a/cypress/e2e/tx_simulation.cy.js b/cypress/e2e/tx_simulation.cy.js index aeaed28cb7..885fc17b33 100644 --- a/cypress/e2e/tx_simulation.cy.js +++ b/cypress/e2e/tx_simulation.cy.js @@ -3,8 +3,6 @@ const RECIPIENT_ADDRESS = '0x6a5602335a878ADDCa4BF63a050E34946B56B5bC' describe('Tx Simulation', () => { before(() => { - cy.connectE2EWallet() - // Open the Safe used for testing cy.visit(`/${TEST_SAFE}/home`, { failOnStatusCode: false }) cy.contains('button', 'Accept selection').click() diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 75eae8fba5..2f9a1336ed 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -1,10 +1,3 @@ -Cypress.Commands.add('connectE2EWallet', () => { - cy.on('window:before:load', (window) => { - // Does not work unless `JSON.stringify` is used - window.localStorage.setItem('SAFE_v2__lastWallet', JSON.stringify('E2E Wallet')) - }) -}) - Cypress.Commands.add('useProdCGW', () => { cy.on('window:before:load', (window) => { window.localStorage.setItem('SAFE_v2__debugProdCgw', JSON.stringify(true)) diff --git a/src/components/batch/BatchSidebar/index.tsx b/src/components/batch/BatchSidebar/index.tsx index 19aaf48363..350a4c4dbb 100644 --- a/src/components/batch/BatchSidebar/index.tsx +++ b/src/components/batch/BatchSidebar/index.tsx @@ -75,7 +75,12 @@ const BatchSidebar = ({ isOpen, onToggle }: { isOpen: boolean; onToggle: (open: <Divider /> <Track {...BATCH_EVENTS.BATCH_CONFIRM} label={batchTxs.length}> - <Button variant="contained" onClick={onConfirmClick} disabled={!batchTxs.length}> + <Button + variant="contained" + onClick={onConfirmClick} + disabled={!batchTxs.length} + className={css.confirmButton} + > Confirm batch </Button> </Track> diff --git a/src/components/batch/BatchSidebar/styles.module.css b/src/components/batch/BatchSidebar/styles.module.css index 1f8ba735f9..a762c5aa37 100644 --- a/src/components/batch/BatchSidebar/styles.module.css +++ b/src/components/batch/BatchSidebar/styles.module.css @@ -26,7 +26,7 @@ } .txs ul { - padding: 0 var(--space-3) var(--space-3); + padding: 0 var(--space-3) var(--space-2); display: flex; flex-direction: column; gap: var(--space-1); @@ -43,6 +43,10 @@ height: calc(100% + 31px); } +.confirmButton { + margin-top: var(--space-1); +} + .txs svg { color: var(--color-border-main); transition: color 0.1s ease-in; diff --git a/src/components/common/ConnectWallet/AccountCenter.tsx b/src/components/common/ConnectWallet/AccountCenter.tsx index 5909748a2e..0994631fee 100644 --- a/src/components/common/ConnectWallet/AccountCenter.tsx +++ b/src/components/common/ConnectWallet/AccountCenter.tsx @@ -5,7 +5,7 @@ import css from '@/components/common/ConnectWallet/styles.module.css' import EthHashInfo from '@/components/common/EthHashInfo' import ExpandLessIcon from '@mui/icons-material/ExpandLess' import ExpandMoreIcon from '@mui/icons-material/ExpandMore' -import useOnboard, { forgetLastWallet, switchWallet } from '@/hooks/wallets/useOnboard' +import useOnboard, { switchWallet } from '@/hooks/wallets/useOnboard' import { useAppSelector } from '@/store' import { selectChainById } from '@/store/chainsSlice' import Identicon from '@/components/common/Identicon' @@ -36,7 +36,6 @@ const AccountCenter = ({ wallet }: { wallet: ConnectedWallet }) => { label: wallet.label, }) - forgetLastWallet() handleClose() } diff --git a/src/components/common/NavTabs/index.tsx b/src/components/common/NavTabs/index.tsx index 1d0adc8a63..4637d02e72 100644 --- a/src/components/common/NavTabs/index.tsx +++ b/src/components/common/NavTabs/index.tsx @@ -32,7 +32,7 @@ const NextLinkComposed = forwardRef<HTMLAnchorElement, Props>(function NextCompo const NavTabs = ({ tabs }: { tabs: NavItem[] }) => { const router = useRouter() - const activeTab = tabs.map((tab) => tab.href).indexOf(router.pathname) + const activeTab = Math.max(0, tabs.map((tab) => tab.href).indexOf(router.pathname)) const query = router.query.safe ? { safe: router.query.safe } : undefined return ( diff --git a/src/components/tx-flow/flows/SuccessScreen/StatusMessage.tsx b/src/components/tx-flow/flows/SuccessScreen/StatusMessage.tsx index 572e5ee48a..db0102266d 100644 --- a/src/components/tx-flow/flows/SuccessScreen/StatusMessage.tsx +++ b/src/components/tx-flow/flows/SuccessScreen/StatusMessage.tsx @@ -9,17 +9,17 @@ const getStep = (status: PendingStatus, error?: Error) => { case PendingStatus.PROCESSING: case PendingStatus.RELAYING: return { - description: 'Transaction is now processing.', + description: 'Transaction is now processing', instruction: 'The transaction was confirmed and is now being processed.', } case PendingStatus.INDEXING: return { - description: 'Transaction was processed.', + description: 'Transaction was processed', instruction: 'It is now being indexed.', } default: return { - description: error ? 'Transaction failed' : 'Transaction was successful.', + description: error ? 'Transaction failed' : 'Transaction was successful', instruction: error ? error.message : '', } } diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index d440c01c8c..5e38bb1ab1 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -4,14 +4,14 @@ import { type ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' import { getAddress } from 'ethers/lib/utils' import useChains, { useCurrentChain } from '@/hooks/useChains' import ExternalStore from '@/services/ExternalStore' -import { localItem } from '@/services/local-storage/local' import { logError, Errors } from '@/services/exceptions' import { trackEvent, WALLET_EVENTS } from '@/services/analytics' import { useInitPairing } from '@/services/pairing/hooks' -import { isWalletUnlocked, WalletNames } from '@/utils/wallets' import { useAppSelector } from '@/store' import { type EnvState, selectRpc } from '@/store/settingsSlice' -import { WALLET_KEYS } from './consts' +import { E2E_WALLET_NAME } from '@/tests/e2e-wallet' + +const WALLETCONNECT = 'WalletConnect' export type ConnectedWallet = { label: string @@ -22,12 +22,6 @@ export type ConnectedWallet = { icon?: string } -const lastWalletStorage = localItem<string>('lastWallet') - -export const forgetLastWallet = () => { - lastWalletStorage.remove() -} - const { getStore, setStore, useStore } = new ExternalStore<OnboardAPI>() export const initOnboard = async ( @@ -67,16 +61,15 @@ export const getConnectedWallet = (wallets: WalletState[]): ConnectedWallet | nu } } -const getWalletConnectLabel = async ({ label, provider }: ConnectedWallet): Promise<string | undefined> => { - if (label.toUpperCase() !== WALLET_KEYS.WALLETCONNECT.toUpperCase()) return - +const getWalletConnectLabel = async (wallet: ConnectedWallet): Promise<string | undefined> => { const UNKNOWN_PEER = 'Unknown' - const { default: WalletConnect } = await import('@walletconnect/client') - - const peerWallet = - ((provider as unknown as any).connector as InstanceType<typeof WalletConnect>).peerMeta?.name || UNKNOWN_PEER - - return peerWallet ?? UNKNOWN_PEER + const { label } = wallet + const isWalletConnect = label.startsWith(WALLETCONNECT) + if (!isWalletConnect) return + const { connector } = wallet.provider as unknown as any + const peerWalletV2 = connector.session?.peer?.metadata?.name + const peerWalletV1 = connector.peerMeta?.name + return peerWalletV2 || peerWalletV1 || UNKNOWN_PEER } const trackWalletType = (wallet: ConnectedWallet) => { @@ -118,7 +111,7 @@ export const connectWallet = async ( // On mobile, automatically choose WalletConnect if there is no injected wallet if (!options && isMobile() && !hasInjectedWallet()) { options = { - autoSelect: WalletNames.WALLET_CONNECT_V2, + autoSelect: WALLETCONNECT, } } @@ -133,17 +126,6 @@ export const connectWallet = async ( return } - // Save the last used wallet and track the wallet type - const newWallet = getConnectedWallet(wallets) - - if (newWallet) { - // Save - lastWalletStorage.set(newWallet.label) - - // Track - trackWalletType(newWallet) - } - isConnecting = false return wallets @@ -153,7 +135,7 @@ export const switchWallet = (onboard: OnboardAPI) => { connectWallet(onboard) } -// Disable/enable wallets according to chain and cache the last used wallet +// Disable/enable wallets according to chain export const useInitOnboard = () => { const { configs } = useChains() const chain = useCurrentChain() @@ -178,21 +160,37 @@ export const useInitOnboard = () => { onboard.state.actions.setWalletModules(supportedWallets) } - // Connect to the last connected wallet enableWallets().then(() => { - if (onboard.state.get().wallets.length > 0) return - - const label = lastWalletStorage.get() - if (!label) return - - isWalletUnlocked(label).then((isUnlocked) => { - isUnlocked && - connectWallet(onboard, { - autoSelect: { label, disableModals: false }, - }) - }) + // e2e wallet + if (typeof window !== 'undefined' && window.Cypress) { + connectWallet(onboard, { + autoSelect: { label: E2E_WALLET_NAME, disableModals: true }, + }) + } }) }, [chain, onboard]) + + // Track connected wallet + useEffect(() => { + let lastConnectedWallet = '' + if (!onboard) return + + const walletSubscription = onboard.state.select('wallets').subscribe((wallets) => { + const newWallet = getConnectedWallet(wallets) + if (newWallet) { + if (newWallet.label !== lastConnectedWallet) { + lastConnectedWallet = newWallet.label + trackWalletType(newWallet) + } + } else { + lastConnectedWallet = '' + } + }) + + return () => { + walletSubscription.unsubscribe() + } + }, [onboard]) } export default useStore diff --git a/src/services/onboard.ts b/src/services/onboard.ts index d50faf53ca..f34f28b10c 100644 --- a/src/services/onboard.ts +++ b/src/services/onboard.ts @@ -58,9 +58,8 @@ export const createOnboard = ( connect: { removeWhereIsMyWalletWarning: true, + autoConnectLastWallet: true, }, - - // TODO: Investigate using `autoConnectLastWallet` instead of our `lastWalletStorage` }) return onboard diff --git a/src/utils/wallets.ts b/src/utils/wallets.ts index 969732049f..cb3dd8b2e9 100644 --- a/src/utils/wallets.ts +++ b/src/utils/wallets.ts @@ -1,13 +1,8 @@ -import { ProviderLabel } from '@web3-onboard/injected-wallets' -import { hasValidPairingSession } from '@/services/pairing/utils' -import { PAIRING_MODULE_LABEL } from '@/services/pairing/module' -import { E2E_WALLET_NAME } from '@/tests/e2e-wallet' import type { EthersError } from '@/utils/ethers-utils' import { ErrorCode } from '@ethersproject/logger' import { type ConnectedWallet } from '@/hooks/wallets/useOnboard' import { getWeb3ReadOnly, isSmartContract } from '@/hooks/wallets/web3' import { WALLET_KEYS } from '@/hooks/wallets/consts' -import { WALLET_CONNECT_V1_MODULE_NAME } from '@/hooks/wallets/wallets' const isWCRejection = (err: Error): boolean => { return /rejected/.test(err?.message) @@ -21,43 +16,6 @@ export const isWalletRejection = (err: EthersError | Error): boolean => { return isEthersRejection(err as EthersError) || isWCRejection(err) } -export const WalletNames = { - METAMASK: ProviderLabel.MetaMask, - WALLET_CONNECT: WALLET_CONNECT_V1_MODULE_NAME, - WALLET_CONNECT_V2: 'WalletConnect', - SAFE_MOBILE_PAIRING: PAIRING_MODULE_LABEL, -} - -/* Check if the wallet is unlocked. */ -export const isWalletUnlocked = async (walletName: string): Promise<boolean> => { - if (typeof window === 'undefined') return false - - if (window.ethereum?.isConnected?.()) { - return true - } - - // Only MetaMask exposes a method to check if the wallet is unlocked - if (walletName === WalletNames.METAMASK) { - return window.ethereum?._metamask?.isUnlocked?.() || false - } - - // Wallet connect creates a localStorage entry when connected and removes it when disconnected - if (walletName === WalletNames.WALLET_CONNECT) { - return window.localStorage.getItem('walletconnect') !== null - } - - // Our own Safe mobile pairing module - if (walletName === WalletNames.SAFE_MOBILE_PAIRING && hasValidPairingSession()) { - return hasValidPairingSession() - } - - if (walletName === E2E_WALLET_NAME) { - return Boolean(window.Cypress) - } - - return false -} - export const isHardwareWallet = (wallet: ConnectedWallet): boolean => { return [WALLET_KEYS.LEDGER, WALLET_KEYS.TREZOR, WALLET_KEYS.KEYSTONE].includes( wallet.label.toUpperCase() as WALLET_KEYS, From bd9118c12aa14051a46d18dffcf46a224bff0994 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Mon, 7 Aug 2023 12:12:42 +0200 Subject: [PATCH 394/422] fix: Open custom safe apps on click (#2350) --- src/components/safe-apps/SafeAppCard/index.tsx | 13 ++++--------- src/components/safe-apps/SafeAppList/index.tsx | 6 ++++-- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/components/safe-apps/SafeAppCard/index.tsx b/src/components/safe-apps/SafeAppCard/index.tsx index 74ce3eed78..a583616b88 100644 --- a/src/components/safe-apps/SafeAppCard/index.tsx +++ b/src/components/safe-apps/SafeAppCard/index.tsx @@ -19,7 +19,6 @@ import SafeAppTags from '@/components/safe-apps/SafeAppTags' import { isOptimizedForBatchTransactions } from '@/components/safe-apps/utils' import { AppRoutes } from '@/config/routes' import BatchIcon from '@/public/images/apps/batch-icon.svg' -import { useOpenedSafeApps } from '@/hooks/safe-apps/useOpenedSafeApps' import css from './styles.module.css' export type SafeAppsViewMode = 'list-view' | 'grid-view' @@ -111,7 +110,7 @@ const SafeAppCardGridView = ({ openPreviewDrawer, }: SafeAppCardViewProps) => { return ( - <SafeAppCardContainer safeApp={safeApp} safeAppUrl={safeAppUrl} onClickSafeApp={onClickSafeApp} height={'100%'}> + <SafeAppCardContainer safeAppUrl={safeAppUrl} onClickSafeApp={onClickSafeApp} height={'100%'}> {/* Safe App Header */} <CardHeader className={css.safeAppHeader} @@ -168,7 +167,7 @@ const SafeAppCardListView = ({ openPreviewDrawer, }: SafeAppCardViewProps) => { return ( - <SafeAppCardContainer safeApp={safeApp} safeAppUrl={safeAppUrl} onClickSafeApp={onClickSafeApp}> + <SafeAppCardContainer safeAppUrl={safeAppUrl} onClickSafeApp={onClickSafeApp}> <CardContent sx={{ pb: '16px !important' }}> <Box display="flex" flexDirection="row" alignItems="center" gap={2}> <div className={css.safeAppIconContainer}> @@ -204,7 +203,6 @@ const SafeAppCardListView = ({ type SafeAppCardContainerProps = { onClickSafeApp?: () => void - safeApp?: SafeAppData safeAppUrl: string children: ReactNode height?: string @@ -213,18 +211,15 @@ type SafeAppCardContainerProps = { export const SafeAppCardContainer = ({ children, - safeApp, safeAppUrl, onClickSafeApp, height, className, }: SafeAppCardContainerProps) => { - const { openedSafeAppIds } = useOpenedSafeApps() - const handleClickSafeApp = (event: SyntheticEvent) => { - if (safeApp && !openedSafeAppIds.includes(safeApp.id)) { + if (onClickSafeApp) { event.preventDefault() - onClickSafeApp?.() + onClickSafeApp() } } diff --git a/src/components/safe-apps/SafeAppList/index.tsx b/src/components/safe-apps/SafeAppList/index.tsx index bd3fef8275..86d00ba73e 100644 --- a/src/components/safe-apps/SafeAppList/index.tsx +++ b/src/components/safe-apps/SafeAppList/index.tsx @@ -14,6 +14,7 @@ import useSafeAppPreviewDrawer from '@/hooks/safe-apps/useSafeAppPreviewDrawer' import css from './styles.module.css' import { Skeleton } from '@mui/material' import useLocalStorage from '@/services/local-storage/useLocalStorage' +import { useOpenedSafeApps } from '@/hooks/safe-apps/useOpenedSafeApps' type SafeAppListProps = { safeAppsList: SafeAppData[] @@ -38,6 +39,7 @@ const SafeAppList = ({ }: SafeAppListProps) => { const [safeAppsViewMode = GRID_VIEW_MODE, setSafeAppsViewMode] = useLocalStorage<SafeAppsViewMode>(VIEW_MODE_KEY) const { isPreviewDrawerOpen, previewDrawerApp, openPreviewDrawer, closePreviewDrawer } = useSafeAppPreviewDrawer() + const { openedSafeAppIds } = useOpenedSafeApps() const { filteredApps, query, setQuery, setSelectedCategories, setOptimizedWithBatchFilter, selectedCategories } = useSafeAppsFilters(safeAppsList) @@ -48,11 +50,11 @@ const SafeAppList = ({ (safeApp: SafeAppData) => { const isCustomApp = safeApp.id < 1 - if (isCustomApp) return + if (isCustomApp || openedSafeAppIds.includes(safeApp.id)) return return () => openPreviewDrawer(safeApp) }, - [openPreviewDrawer], + [openPreviewDrawer, openedSafeAppIds], ) return ( From 8826af3859077adf3c97920129b4561a38234e78 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Mon, 7 Aug 2023 13:38:39 +0200 Subject: [PATCH 395/422] Fix: prevent key prop warning in EthHashInfo (#2351) * Fix: prevent key prop warning in EthHashInfo Fix: prevent key prop warning in EthHashInfo Fix: prevent key prop warning in EthHashInfo * Fix tests * PR comments --- package.json | 6 +- .../SrcEthHashInfo/CopyAddressButton.tsx | 14 +++ .../EthHashInfo/SrcEthHashInfo/index.tsx | 96 +++++++++++++++ .../SrcEthHashInfo/styles.module.css | 22 ++++ src/components/common/EthHashInfo/index.tsx | 11 +- .../common/ExplorerButton/index.tsx | 27 +++++ src/components/common/ImageFallback/index.tsx | 19 ++- .../settings/DelegatesList/index.tsx | 4 +- .../sidebar/SidebarHeader/index.tsx | 12 +- .../sidebar/SidebarHeader/styles.module.css | 1 + .../tx-flow/flows/AddOwner/ChooseOwner.tsx | 2 +- .../flows/RemoveOwner/ReviewRemoveOwner.tsx | 2 +- .../ApprovalEditorForm.test.tsx | 8 +- .../tx/ApprovalEditor/ApprovalItem.tsx | 4 +- .../tx/security/redefine/useRedefine.ts | 7 +- src/hooks/useSafeTokenAllocation.ts | 2 + yarn.lock | 114 ++++++++++-------- 17 files changed, 262 insertions(+), 89 deletions(-) create mode 100644 src/components/common/EthHashInfo/SrcEthHashInfo/CopyAddressButton.tsx create mode 100644 src/components/common/EthHashInfo/SrcEthHashInfo/index.tsx create mode 100644 src/components/common/EthHashInfo/SrcEthHashInfo/styles.module.css create mode 100644 src/components/common/ExplorerButton/index.tsx diff --git a/package.json b/package.json index a782ecfee1..a64be9f03e 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,8 @@ "@emotion/react": "^11.10.0", "@emotion/server": "^11.10.0", "@emotion/styled": "^11.10.0", - "@mui/icons-material": "^5.8.4", - "@mui/material": "^5.13.5", + "@mui/icons-material": "^5.14.3", + "@mui/material": "^5.14.3", "@mui/x-date-pickers": "^5.0.12", "@reduxjs/toolkit": "^1.9.5", "@safe-global/safe-apps-sdk": "7.11.0", @@ -52,7 +52,7 @@ "@safe-global/safe-ethers-lib": "^1.9.4", "@safe-global/safe-gateway-typescript-sdk": "^3.8.0", "@safe-global/safe-modules-deployments": "^1.0.0", - "@safe-global/safe-react-components": "^2.0.5", + "@safe-global/safe-react-components": "^2.0.6", "@sentry/react": "^7.28.1", "@sentry/tracing": "^7.28.1", "@truffle/hdwallet-provider": "^2.1.4", diff --git a/src/components/common/EthHashInfo/SrcEthHashInfo/CopyAddressButton.tsx b/src/components/common/EthHashInfo/SrcEthHashInfo/CopyAddressButton.tsx new file mode 100644 index 0000000000..f432cf1028 --- /dev/null +++ b/src/components/common/EthHashInfo/SrcEthHashInfo/CopyAddressButton.tsx @@ -0,0 +1,14 @@ +import CopyButton from '../../CopyButton' + +type CopyAddressButtonProps = { + prefix?: string + address: string + copyPrefix?: boolean +} + +const CopyAddressButton = ({ prefix, address, copyPrefix }: CopyAddressButtonProps): React.ReactElement => { + const addressText = copyPrefix && prefix ? `${prefix}:${address}` : address + return <CopyButton text={addressText} /> +} + +export default CopyAddressButton diff --git a/src/components/common/EthHashInfo/SrcEthHashInfo/index.tsx b/src/components/common/EthHashInfo/SrcEthHashInfo/index.tsx new file mode 100644 index 0000000000..71739f738d --- /dev/null +++ b/src/components/common/EthHashInfo/SrcEthHashInfo/index.tsx @@ -0,0 +1,96 @@ +import type { ReactNode, ReactElement } from 'react' +import { isAddress } from 'ethers/lib/utils' +import { useTheme } from '@mui/material/styles' +import Box from '@mui/material/Box' +import useMediaQuery from '@mui/material/useMediaQuery' +import Identicon from '../../Identicon' +import CopyAddressButton from '../../CopyAddressButton' +import ExplorerButton, { type ExplorerButtonProps } from '../../ExplorerButton' +import { shortenAddress } from '@/utils/formatters' +import ImageFallback from '../../ImageFallback' +import css from './styles.module.css' + +export type EthHashInfoProps = { + address: string + chainId?: string + name?: string | null + showAvatar?: boolean + showCopyButton?: boolean + prefix?: string + showPrefix?: boolean + copyPrefix?: boolean + shortAddress?: boolean + customAvatar?: string + hasExplorer?: boolean + avatarSize?: number + children?: ReactNode + ExplorerButtonProps?: ExplorerButtonProps +} + +const SrcEthHashInfo = ({ + address, + customAvatar, + prefix = '', + copyPrefix, + showPrefix, + shortAddress = true, + showAvatar = true, + avatarSize, + name, + showCopyButton, + hasExplorer, + ExplorerButtonProps, + children, +}: EthHashInfoProps): ReactElement => { + const shouldPrefix = isAddress(address) + const theme = useTheme() + const isMobile = useMediaQuery(theme.breakpoints.down('sm')) + + const identicon = <Identicon address={address} size={avatarSize} /> + + return ( + <div className={css.container}> + {showAvatar && ( + <div + className={css.avatarContainer} + style={avatarSize ? { width: `${avatarSize}px`, height: `${avatarSize}px` } : undefined} + > + {customAvatar ? ( + <ImageFallback src={customAvatar} fallbackComponent={identicon} width={avatarSize} height={avatarSize} /> + ) : ( + identicon + )} + </div> + )} + + <Box overflow="hidden"> + {name && ( + <Box sx={{ fontSize: 'body2' }} textOverflow="ellipsis" overflow="hidden" title={name}> + {name} + </Box> + )} + + <div className={css.addressContainer}> + <Box fontWeight="inherit" fontSize="inherit"> + {showPrefix && shouldPrefix && prefix && <b>{prefix}:</b>} + <span>{shortAddress || isMobile ? shortenAddress(address) : address}</span> + </Box> + + {showCopyButton && ( + <CopyAddressButton prefix={prefix} address={address} copyPrefix={shouldPrefix && copyPrefix} /> + )} + + {hasExplorer && ExplorerButtonProps && ( + <Box color="border.main"> + <ExplorerButton {...ExplorerButtonProps} /> + </Box> + )} + + {children} + </div> + </Box> + </div> + ) +} + +export default SrcEthHashInfo diff --git a/src/components/common/EthHashInfo/SrcEthHashInfo/styles.module.css b/src/components/common/EthHashInfo/SrcEthHashInfo/styles.module.css new file mode 100644 index 0000000000..6fff7b5dc1 --- /dev/null +++ b/src/components/common/EthHashInfo/SrcEthHashInfo/styles.module.css @@ -0,0 +1,22 @@ +.container { + display: flex; + align-items: center; + gap: 0.5em; + line-height: 1.4; +} + +.avatarContainer { + flex-shrink: 0; +} + +.avatarContainer > * { + width: 100% !important; + height: 100% !important; +} + +.addressContainer { + display: flex; + align-items: center; + gap: 0.25em; + white-space: nowrap; +} diff --git a/src/components/common/EthHashInfo/index.tsx b/src/components/common/EthHashInfo/index.tsx index dcfd6ce100..3ae1a0e7bb 100644 --- a/src/components/common/EthHashInfo/index.tsx +++ b/src/components/common/EthHashInfo/index.tsx @@ -1,16 +1,15 @@ import { type ReactElement } from 'react' -import { EthHashInfo } from '@safe-global/safe-react-components' import useAddressBook from '@/hooks/useAddressBook' import useChainId from '@/hooks/useChainId' import { useAppSelector } from '@/store' import { selectSettings } from '@/store/settingsSlice' import { selectChainById } from '@/store/chainsSlice' import { getBlockExplorerLink } from '@/utils/chains' -import type { EthHashInfoProps } from '@safe-global/safe-react-components' import css from './styles.module.css' import { Emoji } from './AddressEmoji' +import SrcEthHashInfo, { type EthHashInfoProps } from './SrcEthHashInfo' -const PrefixedEthHashInfo = ({ +const EthHashInfo = ({ showName = true, avatarSize = 44, ...props @@ -25,7 +24,7 @@ const PrefixedEthHashInfo = ({ return ( <div className={css.container}> - <EthHashInfo + <SrcEthHashInfo prefix={chain?.shortName} showPrefix={settings.shortName.show} copyPrefix={settings.shortName.copy} @@ -36,10 +35,10 @@ const PrefixedEthHashInfo = ({ avatarSize={avatarSize} > {props.children} - </EthHashInfo> + </SrcEthHashInfo> {showEmoji && <Emoji address={props.address} size={avatarSize} />} </div> ) } -export default PrefixedEthHashInfo +export default EthHashInfo diff --git a/src/components/common/ExplorerButton/index.tsx b/src/components/common/ExplorerButton/index.tsx new file mode 100644 index 0000000000..278a011752 --- /dev/null +++ b/src/components/common/ExplorerButton/index.tsx @@ -0,0 +1,27 @@ +import type { ReactElement, ComponentType } from 'react' +import { IconButton, SvgIcon, Tooltip } from '@mui/material' +import LinkIcon from '@/public/images/common/link.svg' + +export type ExplorerButtonProps = { + title?: string + href?: string + className?: string + icon?: ComponentType +} + +const ExplorerButton = ({ title = '', href = '', icon = LinkIcon, className }: ExplorerButtonProps): ReactElement => ( + <Tooltip title={title} placement="top"> + <IconButton + className={className} + target="_blank" + rel="noreferrer" + href={href} + size="small" + sx={{ color: 'inherit' }} + > + <SvgIcon component={icon} inheritViewBox fontSize="small" /> + </IconButton> + </Tooltip> +) + +export default ExplorerButton diff --git a/src/components/common/ImageFallback/index.tsx b/src/components/common/ImageFallback/index.tsx index 75e00d885c..03f91c9409 100644 --- a/src/components/common/ImageFallback/index.tsx +++ b/src/components/common/ImageFallback/index.tsx @@ -1,10 +1,19 @@ import type { ReactElement } from 'react' import { useState } from 'react' -type ImageFallbackProps = React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> & { - fallbackSrc: string - fallbackComponent?: ReactElement -} +type ImageAttributes = React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> + +type ImageFallbackProps = ImageAttributes & + ( + | { + fallbackSrc: string + fallbackComponent?: ReactElement + } + | { + fallbackSrc?: string + fallbackComponent: ReactElement + } + ) const ImageFallback = ({ src, fallbackSrc, fallbackComponent, ...props }: ImageFallbackProps): React.ReactElement => { const [isError, setIsError] = useState<boolean>(false) @@ -14,7 +23,7 @@ const ImageFallback = ({ src, fallbackSrc, fallbackComponent, ...props }: ImageF return ( <img {...props} - alt={props.alt} + alt={props.alt || ''} src={isError || src === undefined ? fallbackSrc : src} onError={() => setIsError(true)} /> diff --git a/src/components/settings/DelegatesList/index.tsx b/src/components/settings/DelegatesList/index.tsx index b9ee500e7d..1610e2db82 100644 --- a/src/components/settings/DelegatesList/index.tsx +++ b/src/components/settings/DelegatesList/index.tsx @@ -2,7 +2,7 @@ import { getDelegates } from '@safe-global/safe-gateway-typescript-sdk' import useAsync from '@/hooks/useAsync' import useSafeInfo from '@/hooks/useSafeInfo' import { Box, Grid, Paper, SvgIcon, Tooltip, Typography } from '@mui/material' -import PrefixedEthHashInfo from '@/components/common/EthHashInfo' +import EthHashInfo from '@/components/common/EthHashInfo' import InfoIcon from '@/public/images/notifications/info.svg' import ExternalLink from '@/components/common/ExternalLink' import { HelpCenterArticle } from '@/config/constants' @@ -61,7 +61,7 @@ const DelegatesList = () => { style={{ listStyleType: 'none', marginBottom: '1em' }} title={`Delegated by ${item.delegator}`} > - <PrefixedEthHashInfo + <EthHashInfo address={item.delegate} showCopyButton hasExplorer diff --git a/src/components/sidebar/SidebarHeader/index.tsx b/src/components/sidebar/SidebarHeader/index.tsx index b0bb096983..5a5ab43b20 100644 --- a/src/components/sidebar/SidebarHeader/index.tsx +++ b/src/components/sidebar/SidebarHeader/index.tsx @@ -28,6 +28,7 @@ import { SvgIcon } from '@mui/material' import { useVisibleBalances } from '@/hooks/useVisibleBalances' import EnvHintButton from '@/components/settings/EnvironmentVariables/EnvHintButton' import useSafeAddress from '@/hooks/useSafeAddress' +import ExplorerButton from '@/components/common/ExplorerButton' const SafeHeader = (): ReactElement => { const currency = useAppSelector(selectCurrency) @@ -93,16 +94,7 @@ const SafeHeader = (): ReactElement => { </Track> <Track {...OVERVIEW_EVENTS.OPEN_EXPLORER}> - <Tooltip title={blockExplorerLink?.title || ''} placement="top"> - <IconButton - className={css.iconButton} - target="_blank" - rel="noreferrer" - href={blockExplorerLink?.href || ''} - > - <SvgIcon component={LinkIconBold} inheritViewBox fontSize="small" color="primary" /> - </IconButton> - </Tooltip> + <ExplorerButton {...blockExplorerLink} className={css.iconButton} icon={LinkIconBold} /> </Track> <EnvHintButton /> diff --git a/src/components/sidebar/SidebarHeader/styles.module.css b/src/components/sidebar/SidebarHeader/styles.module.css index 05e06e5e6d..f5cf985566 100644 --- a/src/components/sidebar/SidebarHeader/styles.module.css +++ b/src/components/sidebar/SidebarHeader/styles.module.css @@ -24,6 +24,7 @@ .iconButton { border-radius: 4px; padding: 6px; + color: var(--color-primary-main); background-color: var(--color-background-main); width: 32px; height: 32px; diff --git a/src/components/tx-flow/flows/AddOwner/ChooseOwner.tsx b/src/components/tx-flow/flows/AddOwner/ChooseOwner.tsx index 73590da568..644a057c46 100644 --- a/src/components/tx-flow/flows/AddOwner/ChooseOwner.tsx +++ b/src/components/tx-flow/flows/AddOwner/ChooseOwner.tsx @@ -1,4 +1,3 @@ -import { EthHashInfo } from '@safe-global/safe-react-components' import { Box, Typography, @@ -27,6 +26,7 @@ import TxCard from '../../common/TxCard' import InfoIcon from '@/public/images/notifications/info.svg' import commonCss from '@/components/tx-flow/common/styles.module.css' import { TOOLTIP_TITLES } from '@/components/tx-flow/common/constants' +import EthHashInfo from '@/components/common/EthHashInfo' type FormData = Pick<AddOwnerFlowProps | ReplaceOwnerFlowProps, 'newOwner' | 'threshold'> diff --git a/src/components/tx-flow/flows/RemoveOwner/ReviewRemoveOwner.tsx b/src/components/tx-flow/flows/RemoveOwner/ReviewRemoveOwner.tsx index 3c59f4b35c..676a2b1561 100644 --- a/src/components/tx-flow/flows/RemoveOwner/ReviewRemoveOwner.tsx +++ b/src/components/tx-flow/flows/RemoveOwner/ReviewRemoveOwner.tsx @@ -1,6 +1,5 @@ import { useContext, useEffect } from 'react' import { Typography, Divider, Box, Paper, SvgIcon } from '@mui/material' -import { EthHashInfo } from '@safe-global/safe-react-components' import type { ReactElement } from 'react' import SignOrExecuteForm from '@/components/tx/SignOrExecuteForm' @@ -11,6 +10,7 @@ import { createRemoveOwnerTx } from '@/services/tx/tx-sender' import MinusIcon from '@/public/images/common/minus.svg' import { SafeTxContext } from '../../SafeTxProvider' import type { RemoveOwnerFlowProps } from '.' +import EthHashInfo from '@/components/common/EthHashInfo' import commonCss from '@/components/tx-flow/common/styles.module.css' diff --git a/src/components/tx/ApprovalEditor/ApprovalEditorForm.test.tsx b/src/components/tx/ApprovalEditor/ApprovalEditorForm.test.tsx index 2b7650baa7..ea5928f06a 100644 --- a/src/components/tx/ApprovalEditor/ApprovalEditorForm.test.tsx +++ b/src/components/tx/ApprovalEditor/ApprovalEditorForm.test.tsx @@ -1,8 +1,8 @@ -import { fireEvent, getAllByRole, render, waitFor } from '@/tests/test-utils' +import { fireEvent, render, waitFor } from '@/tests/test-utils' import { hexZeroPad } from 'ethers/lib/utils' import { TokenType } from '@safe-global/safe-gateway-typescript-sdk' import { ApprovalEditorForm } from '@/components/tx/ApprovalEditor/ApprovalEditorForm' -import { getAllByTestId } from '@testing-library/dom' +import { getAllByTestId, getAllByTitle } from '@testing-library/dom' describe('ApprovalEditorForm', () => { beforeEach(() => { @@ -39,7 +39,7 @@ describe('ApprovalEditorForm', () => { expect(approvalItems).toHaveLength(2) // One button for each approval - const buttons = getAllByRole(result.container, 'button') + const buttons = getAllByTitle(result.container, 'Save') expect(buttons).toHaveLength(2) // First approval value is rendered @@ -100,7 +100,7 @@ describe('ApprovalEditorForm', () => { // Change value and save const amountInput = result.container.querySelector('input[name="approvals.0"]') as HTMLInputElement - const saveButton = result.getByRole('button') + const saveButton = result.getByTitle('Save') fireEvent.change(amountInput!, { target: { value: '100' } }) fireEvent.click(saveButton) diff --git a/src/components/tx/ApprovalEditor/ApprovalItem.tsx b/src/components/tx/ApprovalEditor/ApprovalItem.tsx index 8a75c02623..74859657e1 100644 --- a/src/components/tx/ApprovalEditor/ApprovalItem.tsx +++ b/src/components/tx/ApprovalEditor/ApprovalItem.tsx @@ -1,7 +1,7 @@ import { type ReactElement } from 'react' import { Alert, Grid, Typography } from '@mui/material' import css from '@/components/tx/ApprovalEditor/styles.module.css' -import PrefixedEthHashInfo from '@/components/common/EthHashInfo' +import EthHashInfo from '@/components/common/EthHashInfo' const ApprovalItem = ({ spender, children }: { spender: string; children: ReactElement }) => { return ( @@ -20,7 +20,7 @@ const ApprovalItem = ({ spender, children }: { spender: string; children: ReactE <Grid item> <Typography fontSize="14px"> - <PrefixedEthHashInfo address={spender} hasExplorer showAvatar={false} shortAddress={false} /> + <EthHashInfo address={spender} hasExplorer showAvatar={false} shortAddress={false} /> </Typography> </Grid> </Grid> diff --git a/src/components/tx/security/redefine/useRedefine.ts b/src/components/tx/security/redefine/useRedefine.ts index 7ed4b7d39a..ec3144f1a9 100644 --- a/src/components/tx/security/redefine/useRedefine.ts +++ b/src/components/tx/security/redefine/useRedefine.ts @@ -11,8 +11,8 @@ import { import type { SecurityResponse } from '@/services/security/modules/types' import { FEATURES } from '@/utils/chains' import type { SafeTransaction } from '@safe-global/safe-core-sdk-types' -import { useState, useEffect, useMemo } from 'react' -import { type AlertColor, type SvgIconProps } from '@mui/material' +import { useState, useEffect, useMemo, type ComponentType } from 'react' +import { type AlertColor } from '@mui/material' import { SecuritySeverity } from '@/services/security/modules/types' import CloseIcon from '@/public/images/common/close.svg' import InfoIcon from '@/public/images/notifications/info.svg' @@ -31,8 +31,7 @@ const CRITICAL_ERRORS: Record<number, string> = { type SecurityWarningProps = { color: AlertColor - // @ts-expect-error - Use any to avoid conflicts with @svgr/webpack plugin or babel-plugin-inline-react-svg plugin. - icon: SvgIconProps['component'] + icon: ComponentType label: string action?: string } diff --git a/src/hooks/useSafeTokenAllocation.ts b/src/hooks/useSafeTokenAllocation.ts index 2ea00d7151..75539eb71b 100644 --- a/src/hooks/useSafeTokenAllocation.ts +++ b/src/hooks/useSafeTokenAllocation.ts @@ -129,12 +129,14 @@ const useSafeTokenAllocation = (): [BigNumber | undefined, boolean] => { ), ) // If the history tag changes we could have claimed / redeemed tokens + // eslint-disable-next-line react-hooks/exhaustive-deps }, [chainId, safeAddress, safe.txHistoryTag]) const [balance, _error, balanceLoading] = useAsync<string>(() => { if (!safeAddress) return return fetchTokenBalance(chainId, safeAddress) // If the history tag changes we could have claimed / redeemed tokens + // eslint-disable-next-line react-hooks/exhaustive-deps }, [chainId, safeAddress, safe.txHistoryTag]) const allocation = useMemo(() => { diff --git a/yarn.lock b/yarn.lock index 033773b8e0..970cab1ae0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1010,6 +1010,13 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" + integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.18.10", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" @@ -2777,57 +2784,57 @@ "@motionone/dom" "^10.16.2" tslib "^2.3.1" -"@mui/base@5.0.0-beta.4": - version "5.0.0-beta.4" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.4.tgz#e3f4f4a056b88ab357194a245e223177ce35e0b0" - integrity sha512-ejhtqYJpjDgHGEljjMBQWZ22yEK0OzIXNa7toJmmXsP4TT3W7xVy8bTJ0TniPDf+JNjrsgfgiFTDGdlEhV1E+g== +"@mui/base@5.0.0-beta.9": + version "5.0.0-beta.9" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.9.tgz#e88d7052aa6d97c1e57d5ce2a4e2edf898db90ec" + integrity sha512-gm6gnPnc/lS5Z3neH0iuOrK7IbS02+oh6KsMtXYLhI6bJpHs+PNWFsBmISx7x4FSPVJZvZkb8Bw6pEXpIMFt7Q== dependencies: - "@babel/runtime" "^7.21.0" + "@babel/runtime" "^7.22.6" "@emotion/is-prop-valid" "^1.2.1" "@mui/types" "^7.2.4" - "@mui/utils" "^5.13.1" + "@mui/utils" "^5.14.3" "@popperjs/core" "^2.11.8" - clsx "^1.2.1" + clsx "^2.0.0" prop-types "^15.8.1" react-is "^18.2.0" -"@mui/core-downloads-tracker@^5.13.4": - version "5.13.4" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.13.4.tgz#7e4b491d8081b6d45ae51556d82cb16b31315a19" - integrity sha512-yFrMWcrlI0TqRN5jpb6Ma9iI7sGTHpytdzzL33oskFHNQ8UgrtPas33Y1K7sWAMwCrr1qbWDrOHLAQG4tAzuSw== +"@mui/core-downloads-tracker@^5.14.3": + version "5.14.3" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.3.tgz#474689f4d691993376e8a1ca07e08d4545275082" + integrity sha512-QxvrcDqphZoXRjsAmCaQylmWjC/8/qKWwIde1MJMna5YIst3R9O0qhKRPu36/OE2d8AeTbCVjRcRvNqhhW8jyg== -"@mui/icons-material@^5.8.4": - version "5.11.0" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.11.0.tgz#9ea6949278b2266d2683866069cd43009eaf6464" - integrity sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A== +"@mui/icons-material@^5.14.3": + version "5.14.3" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.3.tgz#26a84d52ab2fceea2856adf7a139527b3a51ae90" + integrity sha512-XkxWPhageu1OPUm2LWjo5XqeQ0t2xfGe8EiLkRW9oz2LHMMZmijvCxulhgquUVTF1DnoSh+3KoDLSsoAFtVNVw== dependencies: - "@babel/runtime" "^7.20.6" + "@babel/runtime" "^7.22.6" -"@mui/material@^5.13.5": - version "5.13.5" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.13.5.tgz#c14f14824f3a37ae0c5ebddbc0034956bc6fec30" - integrity sha512-eMay+Ue1OYXOFMQA5Aau7qbAa/kWHLAyi0McsbPTWssCbGehqkF6CIdPsfVGw6tlO+xPee1hUitphHJNL3xpOQ== +"@mui/material@^5.14.3": + version "5.14.3" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.3.tgz#c88dbc270c4ebde32f9956b9b3cbf8a5d1dc7aef" + integrity sha512-dlu4SOcCp9Cy+wkcfZ/ns9ZkP40nr/WPgqxX0HmrE0o+dkE1ropY9BbHsLrTlYJCko8yzcC8bLghrD4xqZG1og== dependencies: - "@babel/runtime" "^7.21.0" - "@mui/base" "5.0.0-beta.4" - "@mui/core-downloads-tracker" "^5.13.4" - "@mui/system" "^5.13.5" + "@babel/runtime" "^7.22.6" + "@mui/base" "5.0.0-beta.9" + "@mui/core-downloads-tracker" "^5.14.3" + "@mui/system" "^5.14.3" "@mui/types" "^7.2.4" - "@mui/utils" "^5.13.1" + "@mui/utils" "^5.14.3" "@types/react-transition-group" "^4.4.6" - clsx "^1.2.1" + clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.13.1": - version "5.13.1" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.13.1.tgz#c3e9a0b44f9c5a51b92cfcfb660536060cb61ed7" - integrity sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ== +"@mui/private-theming@^5.13.7": + version "5.13.7" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.13.7.tgz#2f8ef5da066f3c6c6423bd4260d003a28d10b099" + integrity sha512-qbSr+udcij5F9dKhGX7fEdx2drXchq7htLNr2Qg2Ma+WJ6q0ERlEqGSBiPiVDJkptcjeVL4DGmcf1wl5+vD4EA== dependencies: - "@babel/runtime" "^7.21.0" - "@mui/utils" "^5.13.1" + "@babel/runtime" "^7.22.5" + "@mui/utils" "^5.13.7" prop-types "^15.8.1" "@mui/styled-engine@^5.13.2": @@ -2840,17 +2847,17 @@ csstype "^3.1.2" prop-types "^15.8.1" -"@mui/system@^5.13.5": - version "5.13.5" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.13.5.tgz#9f67ea0c4f6974713f90b7b94c999fd3f40f8de3" - integrity sha512-n0gzUxoZ2ZHZgnExkh2Htvo9uW2oakofgPRQrDoa/GQOWyRD0NH9MDszBwOb6AAoXZb+OV5TE7I4LeZ/dzgHYA== +"@mui/system@^5.14.3": + version "5.14.3" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.3.tgz#71aa88433649a23dfa5c102cef8a3c5b1ac40ac6" + integrity sha512-b+C+j9+75+/iIYSa+1S4eCMc9MDNrj9hzWfExJqS2GffuNocRagjBZFyjtMqsLWLxMxQIX8Cg6j0hAioiw+WfQ== dependencies: - "@babel/runtime" "^7.21.0" - "@mui/private-theming" "^5.13.1" + "@babel/runtime" "^7.22.6" + "@mui/private-theming" "^5.13.7" "@mui/styled-engine" "^5.13.2" "@mui/types" "^7.2.4" - "@mui/utils" "^5.13.1" - clsx "^1.2.1" + "@mui/utils" "^5.14.3" + clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" @@ -2870,14 +2877,14 @@ prop-types "^15.8.1" react-is "^18.2.0" -"@mui/utils@^5.13.1": - version "5.13.1" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.13.1.tgz#86199e46014215f95da046a5ec803f4a39c96eee" - integrity sha512-6lXdWwmlUbEU2jUI8blw38Kt+3ly7xkmV9ljzY4Q20WhsJMWiNry9CX8M+TaP/HbtuyR8XKsdMgQW7h7MM3n3A== +"@mui/utils@^5.13.7", "@mui/utils@^5.14.3": + version "5.14.3" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.3.tgz#76d8151c23d2c2a871e98b90add57a8fd01d5d80" + integrity sha512-gZ6Etw+ppO43GYc1HFZSLjwd4DoZoa+RrYTD25wQLfzcSoPjVoC/zZqA2Lkq0zjgwGBQOSxKZI6jfp9uXR+kgw== dependencies: - "@babel/runtime" "^7.21.0" + "@babel/runtime" "^7.22.6" "@types/prop-types" "^15.7.5" - "@types/react-is" "^18.2.0" + "@types/react-is" "^18.2.1" prop-types "^15.8.1" react-is "^18.2.0" @@ -3273,10 +3280,10 @@ resolved "https://registry.yarnpkg.com/@safe-global/safe-modules-deployments/-/safe-modules-deployments-1.1.0.tgz#e8441d6da17ed4b29a211ecb9b97fadbd7c7ca2b" integrity sha512-UgSH/7Zcv6BJBBqoipKts6SKCPYPau9F1/arndsBYvb5Ayn28Q9cu/yiRbln2iI4VL21SIl9lcO/zRKJKl7QbQ== -"@safe-global/safe-react-components@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@safe-global/safe-react-components/-/safe-react-components-2.0.5.tgz#294b1198ef27322d74eac5f49e54652b57b6eb55" - integrity sha512-ExrE2ZAV+3qm6wi5QfEGUcb4R7rFsvP2oHcZ4k6gGZDLsvAnP8X5LMnXldriOvBjLBD3m3RoLYLfDER5hBrQ3A== +"@safe-global/safe-react-components@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@safe-global/safe-react-components/-/safe-react-components-2.0.6.tgz#795a3506b84806e43a50171e71ad5bde3a36f012" + integrity sha512-KCo/zf+xcBlXhcROQbyyscsfOExLV1dTQBoKrB2zluwQOQjbsKZu3qOpnIgU/94yHATm38IOJdC8snv6fQQe0A== dependencies: "@ethersproject/address" "^5.7.0" ethereum-blockies-base64 "^1.0.2" @@ -4254,7 +4261,7 @@ dependencies: "@types/react" "*" -"@types/react-is@^18.2.0": +"@types/react-is@^18.2.1": version "18.2.1" resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-18.2.1.tgz#61d01c2a6fc089a53520c0b66996d458fdc46863" integrity sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw== @@ -6265,6 +6272,11 @@ clsx@^1.1.0, clsx@^1.2.1: resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== +clsx@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" + integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" From d88bb031eccc8c26b6d3776b5b77d08e40d2c649 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Mon, 7 Aug 2023 15:25:36 +0200 Subject: [PATCH 396/422] Chore: rm Plausible Analytics script (#2346) * Chore: rm Plausible Analytics script * Rm PA from privacy policy and CSP --- src/components/common/MetaTags/index.tsx | 7 +------ src/components/privacy/index.tsx | 20 +------------------- src/config/securityHeaders.ts | 2 +- 3 files changed, 3 insertions(+), 26 deletions(-) diff --git a/src/components/common/MetaTags/index.tsx b/src/components/common/MetaTags/index.tsx index 89a0d122a1..a53c3f37c0 100644 --- a/src/components/common/MetaTags/index.tsx +++ b/src/components/common/MetaTags/index.tsx @@ -1,4 +1,4 @@ -import { IS_PRODUCTION, IS_OFFICIAL_HOST } from '@/config/constants' +import { IS_PRODUCTION } from '@/config/constants' import { ContentSecurityPolicy, StrictTransportSecurity } from '@/config/securityHeaders' import { lightPalette, darkPalette } from '@safe-global/safe-react-components' @@ -43,11 +43,6 @@ const MetaTags = ({ prefetchUrl }: { prefetchUrl: string }) => ( <link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png" /> <link rel="icon" type="image/png" sizes="16x16" href="/favicons/favicon-16x16.png" /> <link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#000" /> - - {/* Plausible Analytics */} - {IS_PRODUCTION && IS_OFFICIAL_HOST && ( - <script defer data-domain="app.safe.global" src="https://plausible.io/js/script.js"></script> - )} </> ) diff --git a/src/components/privacy/index.tsx b/src/components/privacy/index.tsx index 2bf012cb63..5be13d7e58 100644 --- a/src/components/privacy/index.tsx +++ b/src/components/privacy/index.tsx @@ -6,7 +6,7 @@ const SafePrivacyPolicy = () => { return ( <div> <h1>Privacy Policy</h1> - <p>Last updated on August 2023.</p> + <p>Last updated in August 2023.</p> <p> Your privacy is important to us. It is our policy to respect your privacy and comply with any applicable law and regulation regarding any personal information we may collect about you, including across our website,{' '} @@ -697,24 +697,6 @@ const SafePrivacyPolicy = () => { to offer on-ramp and off-ramp services. For that purpose personal data is required for KYC/AML or other financial regulatory requirements. This data is encrypted by MoonPay. </p> - <h4>5.15. Plausible Analytics</h4> - <p> - We use{' '} - <Link href="https://plausible.io/" passHref> - <MUILink target="_blank" rel="noreferrer"> - Plausible Analytics - </MUILink> - </Link>{' '} - to track overall trends in the usage of our website in a privacy-friendly manner. Plausible Analytics collects - only aggregated information, which does not allow us to identify any visitor to our website. For further - details, please refer to the{' '} - <Link href="https://plausible.io/data-policy" passHref> - <MUILink target="_blank" rel="noreferrer"> - Plausible Analytics Data Policy - </MUILink> - </Link> - . - </p> <h3 id="6">6. Sharing Your Personal Data</h3> <p> We may pass your information to our Business Partners, administration centers, third party service providers, diff --git a/src/config/securityHeaders.ts b/src/config/securityHeaders.ts index 0f9dd2c959..69dd425090 100644 --- a/src/config/securityHeaders.ts +++ b/src/config/securityHeaders.ts @@ -12,7 +12,7 @@ import { CYPRESS_MNEMONIC, IS_PRODUCTION } from '@/config/constants' export const ContentSecurityPolicy = ` default-src 'self'; connect-src 'self' *; - script-src 'self' https://www.google-analytics.com https://ssl.google-analytics.com 'unsafe-inline' https://*.getbeamer.com https://www.googletagmanager.com https://*.ingest.sentry.io https://sentry.io https://plausible.io ${ + script-src 'self' https://www.google-analytics.com https://ssl.google-analytics.com 'unsafe-inline' https://*.getbeamer.com https://www.googletagmanager.com https://*.ingest.sentry.io https://sentry.io ${ !IS_PRODUCTION || /* TODO: remove after moving cypress to görli and testing in staging again!! */ CYPRESS_MNEMONIC ? "'unsafe-eval'" : '' From 7556391fb8fab8b86fc62cb20a66ff4ba2c11be2 Mon Sep 17 00:00:00 2001 From: Aaron Cook <aaron@safe.global> Date: Mon, 7 Aug 2023 15:36:19 +0200 Subject: [PATCH 397/422] fix: limit `origin` length (#2334) * fix: limit `origin` length * fix: prioritise URL * fix: add test --- src/utils/__tests__/transactions.test.ts | 55 +++++++++++++++++++++++- src/utils/transactions.ts | 11 ++++- 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/src/utils/__tests__/transactions.test.ts b/src/utils/__tests__/transactions.test.ts index b997ce98cb..6d73f5dc38 100644 --- a/src/utils/__tests__/transactions.test.ts +++ b/src/utils/__tests__/transactions.test.ts @@ -1,5 +1,11 @@ -import type { ConflictHeader, DateLabel, Label, Transaction } from '@safe-global/safe-gateway-typescript-sdk' -import { getQueuedTransactionCount } from '../transactions' +import type { + ConflictHeader, + DateLabel, + Label, + SafeAppData, + Transaction, +} from '@safe-global/safe-gateway-typescript-sdk' +import { getQueuedTransactionCount, getTxOrigin } from '../transactions' describe('transactions', () => { describe('getQueuedTransactionCount', () => { @@ -59,4 +65,49 @@ describe('transactions', () => { expect(getQueuedTransactionCount(txPage)).toBe('1') }) }) + + describe('getTxOrigin', () => { + it('should return undefined if no app is provided', () => { + expect(getTxOrigin()).toBe(undefined) + }) + + it('should return a stringified object with the app name and url', () => { + const app = { + url: 'https://test.com', + name: 'Test name', + } as SafeAppData + + expect(getTxOrigin(app)).toBe('{"url":"https://test.com","name":"Test name"}') + }) + + it('should limit the origin to 200 characters with preference of the URL', () => { + const app = { + url: 'https://test.com/' + 'a'.repeat(160), + name: 'Test name', + } as SafeAppData + + const result = getTxOrigin(app) + + expect(result?.length).toBe(200) + + expect(result).toBe( + '{"url":"https://test.com/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","name":"Tes"}', + ) + }) + + it('should only limit the URL to 200 characters', () => { + const app = { + url: 'https://test.com/' + 'a'.repeat(180), + name: 'Test name', + } as SafeAppData + + const result = getTxOrigin(app) + + expect(result?.length).toBe(200) + + expect(result).toBe( + '{"url":"https://test.com/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","name":""}', + ) + }) + }) }) diff --git a/src/utils/transactions.ts b/src/utils/transactions.ts index c6a8dbd856..172cfa78ec 100644 --- a/src/utils/transactions.ts +++ b/src/utils/transactions.ts @@ -180,6 +180,8 @@ export const getQueuedTransactionCount = (txPage?: TransactionListPage): string } export const getTxOrigin = (app?: SafeAppData): string | undefined => { + const MAX_ORIGIN_LENGTH = 200 + if (!app) { return } @@ -187,7 +189,14 @@ export const getTxOrigin = (app?: SafeAppData): string | undefined => { let origin: string | undefined try { - origin = JSON.stringify({ name: app.name, url: app.url }) + // Must include empty string to avoid including the length of `undefined` + const maxUrlLength = MAX_ORIGIN_LENGTH - JSON.stringify({ url: '', name: '' }).length + const trimmedUrl = app.url.slice(0, maxUrlLength) + + const maxNameLength = Math.max(0, maxUrlLength - trimmedUrl.length) + const trimmedName = app.name.slice(0, maxNameLength) + + origin = JSON.stringify({ url: trimmedUrl, name: trimmedName }) } catch (e) { logError(Errors._808, e) } From 3fbb439bfdc4ec2593e94cb184d50c170d6a924c Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Mon, 7 Aug 2023 15:39:17 +0200 Subject: [PATCH 398/422] Fix: tx can have been created w/o signatures (#2354) * Fix: tx can have been created w/o signatures * Reuse the same logic in ExecuteForm --- src/components/tx/SignOrExecuteForm/ExecuteForm.tsx | 11 ++++------- src/components/tx/SignOrExecuteForm/SignForm.tsx | 2 +- src/components/tx/SignOrExecuteForm/index.tsx | 7 ++++--- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx b/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx index e6129308c9..4038f58e56 100644 --- a/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx +++ b/src/components/tx/SignOrExecuteForm/ExecuteForm.tsx @@ -8,7 +8,7 @@ import { useCurrentChain } from '@/hooks/useChains' import { getTxOptions } from '@/utils/transactions' import useIsValidExecution from '@/hooks/useIsValidExecution' import CheckWallet from '@/components/common/CheckWallet' -import { useImmediatelyExecutable, useIsExecutionLoop, useTxActions } from './hooks' +import { useIsExecutionLoop, useTxActions } from './hooks' import { useRelaysBySafe } from '@/hooks/useRemainingRelays' import useWalletCanRelay from '@/hooks/useWalletCanRelay' import { ExecutionMethod, ExecutionMethodSelector } from '../ExecutionMethodSelector' @@ -34,6 +34,7 @@ const ExecuteForm = ({ disableSubmit = false, origin, onlyExecute, + isCreation, }: SignOrExecuteProps & { safeTx?: SafeTransaction }): ReactElement => { @@ -50,8 +51,6 @@ const ExecuteForm = ({ const { needsRiskConfirmation, isRiskConfirmed, setIsRiskIgnored } = useContext(TxSecurityContext) // Check that the transaction is executable - const isCreation = safeTx?.signatures.size === 0 - const isNewExecutableTx = useImmediatelyExecutable() && isCreation const isExecutionLoop = useIsExecutionLoop() // We default to relay, but the option is only shown if we canRelay @@ -136,10 +135,8 @@ const ExecuteForm = ({ </ErrorMessage> ) : executionValidationError || gasLimitError ? ( <ErrorMessage error={executionValidationError || gasLimitError}> - This transaction will most likely fail.{' '} - {isNewExecutableTx - ? 'To save gas costs, avoid creating the transaction.' - : 'To save gas costs, reject this transaction.'} + This transaction will most likely fail. + {` To save gas costs, ${isCreation ? 'avoid creating' : 'reject'} this transaction.`} </ErrorMessage> ) : ( submitError && ( diff --git a/src/components/tx/SignOrExecuteForm/SignForm.tsx b/src/components/tx/SignOrExecuteForm/SignForm.tsx index 252ac4344d..6dbb3a7f93 100644 --- a/src/components/tx/SignOrExecuteForm/SignForm.tsx +++ b/src/components/tx/SignOrExecuteForm/SignForm.tsx @@ -23,6 +23,7 @@ const SignForm = ({ origin, isBatch, isBatchable, + isCreation, }: SignOrExecuteProps & { safeTx?: SafeTransaction }): ReactElement => { @@ -36,7 +37,6 @@ const SignForm = ({ const { setTxFlow } = useContext(TxModalContext) const { needsRiskConfirmation, isRiskConfirmed, setIsRiskIgnored } = useContext(TxSecurityContext) const hasSigned = useAlreadySigned(safeTx) - const isCreation = !txId // On modal submit const handleSubmit = async (e: SyntheticEvent, isAddingToBatch = false) => { diff --git a/src/components/tx/SignOrExecuteForm/index.tsx b/src/components/tx/SignOrExecuteForm/index.tsx index 5a73afbf49..4f79786f96 100644 --- a/src/components/tx/SignOrExecuteForm/index.tsx +++ b/src/components/tx/SignOrExecuteForm/index.tsx @@ -31,13 +31,14 @@ export type SignOrExecuteProps = { onlyExecute?: boolean disableSubmit?: boolean origin?: string + isCreation?: boolean } const SignOrExecuteForm = (props: SignOrExecuteProps): ReactElement => { const { transactionExecution } = useAppSelector(selectSettings) const [shouldExecute, setShouldExecute] = useState<boolean>(transactionExecution) const { safeTx, safeTxError } = useContext(SafeTxContext) - const isCreation = safeTx?.signatures.size === 0 + const isCreation = !props.txId const isNewExecutableTx = useImmediatelyExecutable() && isCreation const isCorrectNonce = useValidateNonce(safeTx) const [decodedData, decodedDataError, decodedDataLoading] = useDecodeTx(safeTx) @@ -93,9 +94,9 @@ const SignOrExecuteForm = (props: SignOrExecuteProps): ReactElement => { <RiskConfirmationError /> {willExecute ? ( - <ExecuteForm {...props} safeTx={safeTx} /> + <ExecuteForm {...props} safeTx={safeTx} isCreation={isCreation} /> ) : ( - <SignForm {...props} safeTx={safeTx} isBatchable={isBatchable} /> + <SignForm {...props} safeTx={safeTx} isBatchable={isBatchable} isCreation={isCreation} /> )} </TxCard> </> From e3c0e31b46ab2a259b2abb2ddfa41416266ee8c2 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Mon, 7 Aug 2023 18:45:12 +0200 Subject: [PATCH 399/422] Fix: cookie prefs checked checkbox color (#2356) * Fix: cookie prefs checked checkbox color * Move colors to CSS * Stop propagation on ExplorerButton in EthHashInfo --- src/components/common/CookieBanner/index.tsx | 49 ++++--------------- .../common/CookieBanner/styles.module.css | 14 +++++- .../EthHashInfo/SrcEthHashInfo/index.tsx | 6 ++- .../common/ExplorerButton/index.tsx | 12 ++++- src/components/common/Footer/index.tsx | 4 +- src/config/constants.ts | 3 +- 6 files changed, 40 insertions(+), 48 deletions(-) diff --git a/src/components/common/CookieBanner/index.tsx b/src/components/common/CookieBanner/index.tsx index dab45d6f66..94b5dac882 100644 --- a/src/components/common/CookieBanner/index.tsx +++ b/src/components/common/CookieBanner/index.tsx @@ -1,4 +1,5 @@ import { useEffect, type ReactElement } from 'react' +import classnames from 'classnames' import type { CheckboxProps } from '@mui/material' import { Grid, Button, Checkbox, FormControlLabel, Typography, Paper, SvgIcon, Box } from '@mui/material' import WarningIcon from '@/public/images/notifications/warning.svg' @@ -22,26 +23,11 @@ const CookieCheckbox = ({ checkboxProps, label, checked, - color, }: { label: string checked: boolean checkboxProps: CheckboxProps - color?: string -}) => ( - <FormControlLabel - label={label} - checked={checked} - control={<Checkbox {...checkboxProps} />} - sx={{ - mt: '-9px', - color, - '.MuiCheckbox-root': { - color, - }, - }} - /> -) +}) => <FormControlLabel label={label} checked={checked} control={<Checkbox {...checkboxProps} />} sx={{ mt: '-9px' }} /> export const CookieBanner = ({ warningKey, @@ -74,10 +60,8 @@ export const CookieBanner = ({ setTimeout(handleAccept, 300) } - const color = inverted ? 'background.paper' : undefined - return ( - <Paper sx={inverted ? { backgroundColor: 'text.primary' } : undefined} className={css.container}> + <Paper className={classnames(css.container, { [css.inverted]: inverted })}> {warning && ( <Typography align="center" mb={2} color="warning.background" variant="body2"> <SvgIcon component={WarningIcon} inheritViewBox fontSize="small" color="error" sx={{ mb: -0.4 }} /> {warning} @@ -87,49 +71,36 @@ export const CookieBanner = ({ <form> <Grid container alignItems="center"> <Grid item xs> - <Typography variant="body2" color={color} mb={2}> + <Typography variant="body2" mb={2}> By clicking "Accept all" you agree to the use of the tools listed below and their corresponding{' '} <span style={{ whiteSpace: 'nowrap' }}>3rd-party</span> cookies.{' '} - <ExternalLink href={AppRoutes.cookie} color={color}> - Cookie policy - </ExternalLink> + <ExternalLink href={AppRoutes.cookie}>Cookie policy</ExternalLink> </Typography> <Grid container alignItems="center" gap={4}> <Grid item xs={12} sm> <Box mb={2}> - <CookieCheckbox - checkboxProps={{ id: 'necessary', disabled: true }} - label="Necessary" - checked - color={color} - /> + <CookieCheckbox checkboxProps={{ id: 'necessary', disabled: true }} label="Necessary" checked /> <br /> - <Typography variant="body2" color={color}> - Locally stored data for core functionality - </Typography> + <Typography variant="body2">Locally stored data for core functionality</Typography> </Box> <Box mb={2}> <CookieCheckbox checkboxProps={{ ...register(CookieType.UPDATES), id: 'beamer' }} label="Beamer" checked={watch(CookieType.UPDATES)} - color={color} /> <br /> - <Typography variant="body2" color={color}> - New features and product announcements - </Typography> + <Typography variant="body2">New features and product announcements</Typography> </Box> <Box> <CookieCheckbox checkboxProps={{ ...register(CookieType.ANALYTICS), id: 'ga' }} label="Google Analytics" checked={watch(CookieType.ANALYTICS)} - color={color} /> <br /> - <Typography variant="body2" color={color}> + <Typography variant="body2"> Help us make the app better. We never track your Safe Account address or wallet addresses, or any transaction data. </Typography> @@ -139,7 +110,7 @@ export const CookieBanner = ({ <Grid container alignItems="center" justifyContent="center" mt={4} gap={2}> <Grid item> - <Typography color={color}> + <Typography> <Button onClick={handleAccept} variant="text" size="small" color="inherit" disableElevation> Accept selection </Button> diff --git a/src/components/common/CookieBanner/styles.module.css b/src/components/common/CookieBanner/styles.module.css index fb2777108e..2ccbe89d17 100644 --- a/src/components/common/CookieBanner/styles.module.css +++ b/src/components/common/CookieBanner/styles.module.css @@ -23,10 +23,20 @@ } } -.container :global(.Mui-checked) { +.container.inverted { + background: var(--color-text-primary); +} + +.container.inverted, +.container.inverted :global(.MuiCheckbox-root), +.container.inverted a { + color: var(--color-background-paper); +} + +.container.inverted :global(.Mui-checked) { color: var(--color-background-paper); } -.container :global(.Mui-checked.Mui-disabled) { +.container.inverted :global(.Mui-checked.Mui-disabled) { opacity: 0.5; } diff --git a/src/components/common/EthHashInfo/SrcEthHashInfo/index.tsx b/src/components/common/EthHashInfo/SrcEthHashInfo/index.tsx index 71739f738d..f29408db66 100644 --- a/src/components/common/EthHashInfo/SrcEthHashInfo/index.tsx +++ b/src/components/common/EthHashInfo/SrcEthHashInfo/index.tsx @@ -1,4 +1,4 @@ -import type { ReactNode, ReactElement } from 'react' +import type { ReactNode, ReactElement, SyntheticEvent } from 'react' import { isAddress } from 'ethers/lib/utils' import { useTheme } from '@mui/material/styles' import Box from '@mui/material/Box' @@ -27,6 +27,8 @@ export type EthHashInfoProps = { ExplorerButtonProps?: ExplorerButtonProps } +const stopPropagation = (e: SyntheticEvent) => e.stopPropagation() + const SrcEthHashInfo = ({ address, customAvatar, @@ -82,7 +84,7 @@ const SrcEthHashInfo = ({ {hasExplorer && ExplorerButtonProps && ( <Box color="border.main"> - <ExplorerButton {...ExplorerButtonProps} /> + <ExplorerButton {...ExplorerButtonProps} onClick={stopPropagation} /> </Box> )} diff --git a/src/components/common/ExplorerButton/index.tsx b/src/components/common/ExplorerButton/index.tsx index 278a011752..e3d1ce88b1 100644 --- a/src/components/common/ExplorerButton/index.tsx +++ b/src/components/common/ExplorerButton/index.tsx @@ -1,4 +1,4 @@ -import type { ReactElement, ComponentType } from 'react' +import type { ReactElement, ComponentType, SyntheticEvent } from 'react' import { IconButton, SvgIcon, Tooltip } from '@mui/material' import LinkIcon from '@/public/images/common/link.svg' @@ -7,9 +7,16 @@ export type ExplorerButtonProps = { href?: string className?: string icon?: ComponentType + onClick?: (e: SyntheticEvent) => void } -const ExplorerButton = ({ title = '', href = '', icon = LinkIcon, className }: ExplorerButtonProps): ReactElement => ( +const ExplorerButton = ({ + title = '', + href = '', + icon = LinkIcon, + className, + onClick, +}: ExplorerButtonProps): ReactElement => ( <Tooltip title={title} placement="top"> <IconButton className={className} @@ -18,6 +25,7 @@ const ExplorerButton = ({ title = '', href = '', icon = LinkIcon, className }: E href={href} size="small" sx={{ color: 'inherit' }} + onClick={onClick} > <SvgIcon component={icon} inheritViewBox fontSize="small" /> </IconButton> diff --git a/src/components/common/Footer/index.tsx b/src/components/common/Footer/index.tsx index 092b253ba2..182affd25b 100644 --- a/src/components/common/Footer/index.tsx +++ b/src/components/common/Footer/index.tsx @@ -8,7 +8,7 @@ import packageJson from '../../../../package.json' import AppstoreButton from '../AppStoreButton' import ExternalLink from '../ExternalLink' import MUILink from '@mui/material/Link' -import { IS_OFFICIAL_HOST } from '@/config/constants' +import { IS_DEV, IS_OFFICIAL_HOST } from '@/config/constants' const footerPages = [ AppRoutes.welcome, @@ -44,7 +44,7 @@ const Footer = (): ReactElement | null => { return ( <footer className={css.container}> <ul> - {IS_OFFICIAL_HOST ? ( + {IS_OFFICIAL_HOST || IS_DEV ? ( <> <li> <Typography variant="caption">©2022–{new Date().getFullYear()} Core Contributors GmbH</Typography> diff --git a/src/config/constants.ts b/src/config/constants.ts index 03d62be6d1..a148aa3caa 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -1,6 +1,7 @@ import chains from './chains' -export const IS_PRODUCTION = process.env.NEXT_PUBLIC_IS_PRODUCTION +export const IS_PRODUCTION = !!process.env.NEXT_PUBLIC_IS_PRODUCTION +export const IS_DEV = process.env.NODE_ENV === 'development' export const GATEWAY_URL_PRODUCTION = process.env.NEXT_PUBLIC_GATEWAY_URL_PRODUCTION || 'https://safe-client.safe.global' From 425cf0875fe4bc50060766197fe97043f0c1e511 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Tue, 8 Aug 2023 07:05:50 +0200 Subject: [PATCH 400/422] Fix: prevent an early redirect on the Safe Apps share page (#2358) * Fix: prevent an early redirect on the Safe Apps share page * Use an effect --- src/pages/share/safe-app.tsx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/pages/share/safe-app.tsx b/src/pages/share/safe-app.tsx index 6f26b788e4..fcf32e74f1 100644 --- a/src/pages/share/safe-app.tsx +++ b/src/pages/share/safe-app.tsx @@ -1,16 +1,25 @@ -import { Box, CircularProgress } from '@mui/material' +import { useEffect } from 'react' +import Head from 'next/head' import { useRouter } from 'next/router' +import { Box, CircularProgress } from '@mui/material' import { useSafeAppUrl } from '@/hooks/safe-apps/useSafeAppUrl' import { useChainFromQueryParams } from '@/hooks/safe-apps/useChainFromQueryParams' import { SafeAppLanding } from '@/components/safe-apps/SafeAppLandingPage' import { AppRoutes } from '@/config/routes' -import Head from 'next/head' const ShareSafeApp = () => { const router = useRouter() const appUrl = useSafeAppUrl() const { chain, validChain, loading: chainLoading, error: chainError } = useChainFromQueryParams() + useEffect(() => { + if (chainLoading) return + + if (router.isReady && (!appUrl || !validChain || !chain)) { + router.push(AppRoutes.index) + } + }, [appUrl, validChain, chain, chainLoading, router]) + if (chainLoading) { return ( <Box py={4} textAlign="center"> @@ -20,7 +29,6 @@ const ShareSafeApp = () => { } if (!appUrl || !validChain || !chain) { - router.push(AppRoutes.index) return null } From 7eedd71d92ee82f28db8011b3da62d8b61f1141f Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Tue, 8 Aug 2023 10:31:33 +0200 Subject: [PATCH 401/422] fix: Replace transaction with 0 nonce (#2361) --- src/components/transactions/RejectTxButton/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/transactions/RejectTxButton/index.tsx b/src/components/transactions/RejectTxButton/index.tsx index 33289fb1a1..a5bf88c789 100644 --- a/src/components/transactions/RejectTxButton/index.tsx +++ b/src/components/transactions/RejectTxButton/index.tsx @@ -32,7 +32,7 @@ const RejectTxButton = ({ const tooltipTitle = getTxButtonTooltip('Replace', { hasSafeSDK: !!safeSDK }) const openReplacementModal = () => { - if (!txNonce) return + if (txNonce === undefined) return setTxFlow(<ReplaceTxMenu txNonce={txNonce} />) } From 0be84883380f72259728519b6d07ca773285e1c7 Mon Sep 17 00:00:00 2001 From: Usame Algan <5880855+usame-algan@users.noreply.github.com> Date: Tue, 8 Aug 2023 11:16:47 +0200 Subject: [PATCH 402/422] fix: Use PNG instead of SVG for Redefine logo (#2362) * fix: Use PNG instead of SVG for Redefine logo * fix: Optimize PNG --- .../transactions/redefine-dark-mode.png | Bin 0 -> 5466 bytes .../transactions/redefine-dark-mode.svg | 38 ------------------ public/images/transactions/redefine.png | Bin 0 -> 5106 bytes public/images/transactions/redefine.svg | 1 - src/components/tx/security/redefine/index.tsx | 13 +++--- .../tx/security/redefine/styles.module.css | 7 ++++ 6 files changed, 13 insertions(+), 46 deletions(-) create mode 100644 public/images/transactions/redefine-dark-mode.png delete mode 100644 public/images/transactions/redefine-dark-mode.svg create mode 100644 public/images/transactions/redefine.png delete mode 100644 public/images/transactions/redefine.svg diff --git a/public/images/transactions/redefine-dark-mode.png b/public/images/transactions/redefine-dark-mode.png new file mode 100644 index 0000000000000000000000000000000000000000..76d6287f2e616e60bb164b980123f56123e9b1dd GIT binary patch literal 5466 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 M>6z<Rz+I#N4;4Q&MgRZ+ literal 0 HcmV?d00001 diff --git a/public/images/transactions/redefine-dark-mode.svg b/public/images/transactions/redefine-dark-mode.svg deleted file mode 100644 index 97ced9293c..0000000000 --- a/public/images/transactions/redefine-dark-mode.svg +++ /dev/null @@ -1,38 +0,0 @@ -<svg width="53" height="40" viewBox="0 0 53 40" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g clip-path="url(#clip0_6748_161866)"> -<mask id="mask0_6748_161866" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="31" y="1" width="9" height="40"> -<path d="M31.9873 1V41H39.9497V1H31.9873ZM35.9414 18.4718C34.3746 18.4718 33.1059 17.2013 33.1059 15.6363C33.1059 14.0713 34.3764 12.8009 35.9414 12.8009C37.5064 12.8009 38.7769 14.0713 38.7769 15.6363C38.7769 17.2013 37.5064 18.4718 35.9414 18.4718Z" fill="white"/> -</mask> -<g mask="url(#mask0_6748_161866)"> -<rect x="28.333" y="-20.8596" width="15.267" height="81.453" fill="url(#pattern0)"/> -<rect x="29.0703" y="3.77582" width="13.7924" height="34.1339" fill="url(#pattern1)"/> -<rect x="28.1162" y="2.90839" width="15.6574" height="26.1101" fill="url(#pattern2)"/> -</g> -<path d="M35.9414 17.1958C36.8028 17.1958 37.501 16.4976 37.501 15.6363C37.501 14.7749 36.8028 14.0767 35.9414 14.0767C35.0801 14.0767 34.3818 14.7749 34.3818 15.6363C34.3818 16.4976 35.0801 17.1958 35.9414 17.1958Z" fill="white"/> -<path d="M19.4003 21.6795C19.3695 19.9482 18.2798 18.2386 15.8889 18.2386H13.2378V22.2596H14.3474V19.3103H15.8889C17.5389 19.3103 18.2599 20.4904 18.2907 21.6723C18.3214 22.903 17.6003 24.1626 15.8889 24.1626H14.3474V25.2433H15.8889C18.3394 25.2433 19.44 23.4523 19.4003 21.6813V21.6795Z" fill="white"/> -<path d="M44.7816 23.2192V18.235H45.9021V25.2397H45.0509L41.0787 20.297V25.2397H39.9492V18.2369H40.8094L44.7816 23.2192Z" fill="white"/> -<path d="M26.8149 18.2368V19.3265H27.9354H28.3601H31.9871V18.2368H26.8149Z" fill="white"/> -<path d="M27.9354 21.2186H26.8149V25.2414H27.9354V22.2596H31.9871V21.2186H28.3601H27.9354Z" fill="white"/> -<path d="M6.02151 25.0409L3.93061 22.7096C5.31129 22.509 5.83175 21.5295 5.83175 20.5283C5.83175 19.3483 4.98057 18.2368 3.36135 18.2368C2.6457 18.2368 0.713834 18.2332 0 18.2296V19.2561H3.36135C4.2812 19.2561 4.69143 19.9157 4.69143 20.5464C4.69143 21.1771 4.2812 21.797 3.3505 21.797H1.11322V22.818H2.69992L4.83058 25.2396H6.20403L6.02151 25.039V25.0409Z" fill="white"/> -<path d="M6.94141 18.2368V25.2414H12.1135V24.1409H8.06185V22.2596H10.9931V21.2187H8.06185V19.3283H12.1135V18.2368H6.94141Z" fill="white"/> -<path d="M20.5225 18.2368V25.2414H25.6946V24.1409H21.6429V22.2596H24.5741V21.2187H21.6429V19.3283H25.6946V18.2368H20.5225Z" fill="white"/> -<path d="M47.0225 18.2368V25.2414H52.1946V24.1409H48.1429V22.2596H51.0741V21.2187H48.1429V19.3283H52.1946V18.2368H47.0225Z" fill="white"/> -</g> -<defs> -<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1"> -<use xlink:href="#image0_6748_161866" transform="scale(0.00284091 0.000532481)"/> -</pattern> -<pattern id="pattern1" patternContentUnits="objectBoundingBox" width="1" height="1"> -<use xlink:href="#image1_6748_161866" transform="scale(0.00314465 0.00127065)"/> -</pattern> -<pattern id="pattern2" patternContentUnits="objectBoundingBox" width="1" height="1"> -<use xlink:href="#image2_6748_161866" transform="scale(0.00277008 0.00166113)"/> -</pattern> -<clipPath id="clip0_6748_161866"> -<rect width="52.1966" height="40" fill="white"/> -</clipPath> -<image id="image0_6748_161866" width="352" height="1878" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWAAAAdWCAYAAAA0knLGAAAACXBIWXMAAC4jAAAuIwF4pT92AAAgAElEQVR4Xuy9245jx5V2+00yD3XS2Wq1jW4gseG+cV/6Beol/Dxuv8R+Cb1EvYAuf138aBjdgADDW5YsqVRVeSC59kXEjJgruHjKyqrISo7RTWeSXMlkCtJYk9+cEcuGYRAAALx/ZrsOAACAdwMCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA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LB9C0Am5DyjA5KlyXyIs9y3ohNwXFGDylLlrHEHhJU+a5bYDCJkS51530WIKL3kWUIDJc2GMEFN4ybOCEQR5bghcNNG4+waOJ+TJ0ojw31tCCJkCOmBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCL+/3bqWAAAAABgkL/1MPYURAIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCASZckna6kJR6bAAAAAElFTkSuQmCC"/> -<image id="image1_6748_161866" width="318" height="787" xlink:href="data:image/png;base64,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3pmjvZP+zPilMeLD20d99fEW5ZGflEd/UnMEaGwkaMoXKrdD0e3gSWpEj9EevgPhw6nhy+/f3VX69Ck+MxQ/SQcBNBbC8u4q5b3+2sdVjkav9fbNTee999jUgET4kJwUv/LmBX3xk7oDKOUI9rGrQfqCJzWjVx5Wbt6MQGK0hwGED5IGwndzU+nLl9aHJmX8pOEASs0Idjk1eNKbosdoD4bwoXbSqK/9flf8JB0EUFIjgl3siMpQ8KRm9KLjU1wx2kNG+FAbONAsDcVPOi2AUo5gW/vuyacFTzqMGaM9HEX40HDGlFfSbSV9VkM7gFKaAktSK4Jtdhj5lOAdTm+lgREdoz2UCB8OnBW/5t2as64ASnkk2NaOndQ3wuuOHlNcnMOuFefBwx6SKoXQ/fjzz38phMPHX3/9phAOH3///W+FcN4jfs7h7xW/xuHXjt9T9/eb/nHnwaN8MOJDp4GNjuJDOvSNAKU4ChzSNbqT+qa1g6M8w2gPXQgfeh2NX+e6XzIUwFP1BU8ievguhA+9juzyFm4qqSeAUoyg6YtheT1wX+ykk4InET0MI3wYdHr8pKMBLFkMhyJXOjF4EtHDcYQPJzk67S3d3FSxfydGsI/dXeXE4ElED6chfDjZeaO/5OYmBrNvLbDtDbGTxAFlnIXw4Wxnjf5KFsEu54auwCgP5yJ8eJM3jf7eG6M8vBHhw3f5KQEkePhOhA/vIgZQ+mGzznS7eIKH90D48O7eLYLEDj8I4cMPVVXFK/sMxbD1AkDEDj8S4cNPYUEkcPgZCB8Ad3hdXQDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDu/B9YHDgW0kH6oQAAAABJRU5ErkJggg=="/> -<image id="image2_6748_161866" width="361" height="602" xlink:href="data:image/png;base64,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"/> -</defs> -</svg> diff --git a/public/images/transactions/redefine.png b/public/images/transactions/redefine.png new file mode 100644 index 0000000000000000000000000000000000000000..8828adfdc499bb9648070b29a0d0729d3f49ec41 GIT binary patch literal 5106 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 LZ-y_yT@C*qL`NLy literal 0 HcmV?d00001 diff --git a/public/images/transactions/redefine.svg b/public/images/transactions/redefine.svg deleted file mode 100644 index 449dd63f22..0000000000 --- a/public/images/transactions/redefine.svg +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?><svg id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 288.83 221.34"><defs><style>.cls-1{fill:none;}.cls-2{clip-path:url(#clippath);}.cls-3{fill:#080e1a;}</style><clipPath id="clippath"><path class="cls-1" d="M177,0V221.34h44.06V0h-44.06Zm21.88,96.68c-8.67,0-15.69-7.03-15.69-15.69s7.03-15.69,15.69-15.69,15.69,7.03,15.69,15.69-7.03,15.69-15.69,15.69Z"/></clipPath></defs><g id="Layer_1-2"><g id="Redefine_logo_B_W"><path class="cls-1" d="M180.45,209.53h39.69V0h-39.69"/><g class="cls-2"><g><image width="352" height="1878" transform="translate(156.78 -120.96) scale(.24)" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWAAAAdWCAYAAAA0knLGAAAACXBIWXMAAC4jAAAuIwF4pT92AAAgAElEQVR4Xuy9245jx5V2+00yD3XS2Wq1jW4gseG+cV/6Beol/Dxuv8R+Cb1EvYAuf138aBjdgADDW5YsqVRVeSC59kXEjJgruHjKyqrISo7RTWeSXMlkCtJYk9+cEcuGYRAAALx/ZrsOAACAdwMCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA6AQCBgDoBAIGAOgEAgYA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LB9C0Am5DyjA5KlyXyIs9y3ohNwXFGDylLlrHEHhJU+a5bYDCJkS51530WIKL3kWUIDJc2GMEFN4ybOCEQR5bghcNNG4+waOJ+TJ0ojw31tCCJkCOmBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCIowIQQMhEUYEIImQgKMCGETAQFmBBCJoICTAghE0EBJoSQiaAAE0LIRFCACSFkIijAhBAyERRgQgiZCAowIYRMBAWYEEImggJMCCETQQEmhJCJoAATQshEUIAJIWQiKMCEEDIRFGBCCJkICjAhhEwEBZgQQiaCAkwIIRNBASaEkImgABNCyERQgAkhZCL+/3bqWAAAAABgkL/1MPYURAIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCAiYABJgIGmAgYYCJggImAASYCBpgIGGAiYICJgAEmAgaYCBhgImCASZckna6kJR6bAAAAAElFTkSuQmCC"/><image width="318" height="787" transform="translate(160.86 15.36) scale(.24)" xlink:href="data:image/png;base64,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3pmjvZP+zPilMeLD20d99fEW5ZGflEd/UnMEaGwkaMoXKrdD0e3gSWpEj9EevgPhw6nhy+/f3VX69Ck+MxQ/SQcBNBbC8u4q5b3+2sdVjkav9fbNTee999jUgET4kJwUv/LmBX3xk7oDKOUI9rGrQfqCJzWjVx5Wbt6MQGK0hwGED5IGwndzU+nLl9aHJmX8pOEASs0Idjk1eNKbosdoD4bwoXbSqK/9flf8JB0EUFIjgl3siMpQ8KRm9KLjU1wx2kNG+FAbONAsDcVPOi2AUo5gW/vuyacFTzqMGaM9HEX40HDGlFfSbSV9VkM7gFKaAktSK4Jtdhj5lOAdTm+lgREdoz2UCB8OnBW/5t2as64ASnkk2NaOndQ3wuuOHlNcnMOuFefBwx6SKoXQ/fjzz38phMPHX3/9phAOH3///W+FcN4jfs7h7xW/xuHXjt9T9/eb/nHnwaN8MOJDp4GNjuJDOvSNAKU4ChzSNbqT+qa1g6M8w2gPXQgfeh2NX+e6XzIUwFP1BU8ievguhA+9juzyFm4qqSeAUoyg6YtheT1wX+ykk4InET0MI3wYdHr8pKMBLFkMhyJXOjF4EtHDcYQPJzk67S3d3FSxfydGsI/dXeXE4ElED6chfDjZeaO/5OYmBrNvLbDtDbGTxAFlnIXw4Wxnjf5KFsEu54auwCgP5yJ8eJM3jf7eG6M8vBHhw3f5KQEkePhOhA/vIgZQ+mGzznS7eIKH90D48O7eLYLEDj8I4cMPVVXFK/sMxbD1AkDEDj8S4cNPYUEkcPgZCB8Ad3hdXQDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDuED4A7hA+AO4QPgDu/B9YHDgW0kH6oQAAAABJRU5ErkJggg=="/><image width="361" height="602" transform="translate(155.58 10.56) scale(.24)" xlink:href="data:image/png;base64,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"/></g></g><circle class="cls-3" cx="198.88" cy="80.99" r="8.63"/><g><path class="cls-3" d="M107.35,114.43c-.17-9.58-6.2-19.04-19.43-19.04h-14.67v22.25h6.14v-16.32h8.53c9.13,0,13.12,6.53,13.29,13.07,.17,6.81-3.82,13.78-13.29,13.78h-8.53v5.98h8.53c13.56,0,19.65-9.91,19.43-19.71Z"/><path class="cls-3" d="M247.8,122.95v-27.58h6.2v38.76h-4.71l-21.98-27.35v27.35h-6.25v-38.75h4.76l21.98,27.57Z"/><g><polygon class="cls-3" points="148.38 95.38 148.38 101.41 154.58 101.41 156.93 101.41 177 101.41 177 95.38 148.38 95.38"/><polygon class="cls-3" points="154.58 111.88 148.38 111.88 148.38 134.14 154.58 134.14 154.58 117.64 177 117.64 177 111.88 156.93 111.88 154.58 111.88"/></g><path class="cls-3" d="M33.32,133.03l-11.57-12.9c7.64-1.11,10.52-6.53,10.52-12.07,0-6.53-4.71-12.68-13.67-12.68-3.96,0-14.65-.02-18.6-.04v5.68H18.6c5.09,0,7.36,3.65,7.36,7.14s-2.27,6.92-7.42,6.92H6.16v5.65H14.94l11.79,13.4h7.6l-1.01-1.11Z"/><path class="cls-3" d="M38.41,95.38v38.76h28.62v-6.09h-22.42v-10.41h16.22v-5.76h-16.22v-10.46h22.42v-6.04h-28.62Z"/><path class="cls-3" d="M113.56,95.38v38.76h28.62v-6.09h-22.42v-10.41h16.22v-5.76h-16.22v-10.46h22.42v-6.04h-28.62Z"/><path class="cls-3" d="M260.2,95.38v38.76h28.62v-6.09h-22.42v-10.41h16.22v-5.76h-16.22v-10.46h22.42v-6.04h-28.62Z"/></g></g></g></svg> \ No newline at end of file diff --git a/src/components/tx/security/redefine/index.tsx b/src/components/tx/security/redefine/index.tsx index f02ffcd23e..7bcb0edf23 100644 --- a/src/components/tx/security/redefine/index.tsx +++ b/src/components/tx/security/redefine/index.tsx @@ -11,14 +11,15 @@ import { ErrorBoundary } from '@sentry/react' import { REDEFINE_ARTICLE, REDEFINE_SIMULATION_URL } from '@/config/constants' import css from 'src/components/tx/security/redefine/styles.module.css' import sharedCss from '@/components/tx/security/shared/styles.module.css' -import RedefineLogoDark from '@/public/images/transactions/redefine-dark-mode.svg' -import RedefineLogo from '@/public/images/transactions/redefine.svg' +import RedefineLogoDark from '@/public/images/transactions/redefine-dark-mode.png' +import RedefineLogo from '@/public/images/transactions/redefine.png' import Track from '@/components/common/Track' import { MODALS_EVENTS } from '@/services/analytics' import { useDarkMode } from '@/hooks/useDarkMode' import CircularProgress from '@mui/material/CircularProgress' import { RedefineHint } from '@/components/tx/security/redefine/RedefineHint' import InfoIcon from '@/public/images/notifications/info.svg' +import Image from 'next/image' const MAX_SHOWN_WARNINGS = 3 @@ -81,11 +82,9 @@ const RedefineBlock = () => { <Typography variant="caption" className={sharedCss.poweredBy} position="relative"> Powered by{' '} - <SvgIcon - inheritViewBox - sx={{ height: '40px', width: '52px', position: 'absolute', right: '-58px' }} - component={isDarkMode ? RedefineLogoDark : RedefineLogo} - /> + <div className={css.redefine}> + <Image src={isDarkMode ? RedefineLogoDark : RedefineLogo} alt="Redefine logo" /> + </div> </Typography> </div> diff --git a/src/components/tx/security/redefine/styles.module.css b/src/components/tx/security/redefine/styles.module.css index 552ed28b5e..75fee7dc1c 100644 --- a/src/components/tx/security/redefine/styles.module.css +++ b/src/components/tx/security/redefine/styles.module.css @@ -91,3 +91,10 @@ .checkboxError svg { color: var(--color-error-main) !important; } + +.redefine { + height: 40px; + width: 52px; + position: absolute; + right: -58px; +} From 90bdb23cb5532b72552ff033ea0002d69032ebd5 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Tue, 8 Aug 2023 12:12:10 +0200 Subject: [PATCH 403/422] Refactor: fetch pending queue only in 1/N Safes (#2353) * Refactor: fetch pending queue only in 1/N Safes * Improve hook condition * Fix previous nonces --- src/hooks/usePendingTxs.ts | 14 ++++++++++++-- src/hooks/usePreviousNonces.ts | 2 +- src/pages/transactions/queue.tsx | 6 +++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/hooks/usePendingTxs.ts b/src/hooks/usePendingTxs.ts index 1054624b66..8a30905066 100644 --- a/src/hooks/usePendingTxs.ts +++ b/src/hooks/usePendingTxs.ts @@ -22,6 +22,15 @@ export const useHasPendingTxs = (): boolean => { return pendingIds.length > 0 } +/** + * Show unsigned pending queue only in 1/X Safes + */ +export const useShowUnsignedQueue = (): boolean => { + const { safe } = useSafeInfo() + const hasPending = useHasPendingTxs() + return safe.threshold === 1 && hasPending +} + export const usePendingTxsQueue = (): { page?: TransactionListPage error?: string @@ -30,13 +39,14 @@ export const usePendingTxsQueue = (): { const { safe, safeAddress } = useSafeInfo() const { chainId } = safe const pendingIds = usePendingTxIds() + const hasPending = pendingIds.length > 0 const [untrustedQueue, error, loading] = useAsync<TransactionListPage>( () => { - if (!pendingIds.length) return + if (!hasPending) return return getTransactionQueue(chainId, safeAddress, undefined, false) }, - [chainId, safeAddress, pendingIds], + [chainId, safeAddress, hasPending], false, ) diff --git a/src/hooks/usePreviousNonces.ts b/src/hooks/usePreviousNonces.ts index ae7ef9e635..4386e8c759 100644 --- a/src/hooks/usePreviousNonces.ts +++ b/src/hooks/usePreviousNonces.ts @@ -22,7 +22,7 @@ const usePreviousNonces = () => { const previousNonces = useMemo(() => { return _getUniqueQueuedTxs(page) .map((tx) => (isMultisigExecutionInfo(tx.executionInfo) ? tx.executionInfo.nonce : undefined)) - .filter((nonce): nonce is number => !!nonce) + .filter((nonce): nonce is number => nonce !== undefined) }, [page]) return previousNonces diff --git a/src/pages/transactions/queue.tsx b/src/pages/transactions/queue.tsx index 25a2098c0f..8c7c8d0b1f 100644 --- a/src/pages/transactions/queue.tsx +++ b/src/pages/transactions/queue.tsx @@ -6,10 +6,10 @@ import TxHeader from '@/components/transactions/TxHeader' import BatchExecuteButton from '@/components/transactions/BatchExecuteButton' import { Box } from '@mui/material' import { BatchExecuteHoverProvider } from '@/components/transactions/BatchExecuteButton/BatchExecuteHoverProvider' -import { useHasPendingTxs, usePendingTxsQueue } from '@/hooks/usePendingTxs' +import { usePendingTxsQueue, useShowUnsignedQueue } from '@/hooks/usePendingTxs' const Queue: NextPage = () => { - const hasPending = useHasPendingTxs() + const showPending = useShowUnsignedQueue() return ( <> @@ -25,7 +25,7 @@ const Queue: NextPage = () => { <main> <Box mb={4}> {/* Pending unsigned transactions */} - {hasPending && <PaginatedTxns useTxns={usePendingTxsQueue} />} + {showPending && <PaginatedTxns useTxns={usePendingTxsQueue} />} {/* The main queue of signed transactions */} <PaginatedTxns useTxns={useTxQueue} /> From 84b641942542ec6df49e41c8106fd22e6eae57af Mon Sep 17 00:00:00 2001 From: katspaugh <katspaugh@gmail.com> Date: Tue, 8 Aug 2023 12:12:47 +0200 Subject: [PATCH 404/422] v1.16.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a64be9f03e..b8ad5315b5 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/safe-global/safe-wallet-web", "license": "GPL-3.0", "type": "module", - "version": "1.15.2", + "version": "1.16.0", "scripts": { "dev": "next dev", "start": "next dev", From 9750cec17f0ec02d31d98130b48769c67afec0f8 Mon Sep 17 00:00:00 2001 From: Manuel Gellfart <manu@safe.global> Date: Tue, 8 Aug 2023 15:34:55 +0200 Subject: [PATCH 405/422] feat: pending safes per chainId (#2295) --- .../__tests__/useSyncSafeCreationStep.test.ts | 31 +++ .../create/steps/ConnectWalletStep/index.tsx | 5 +- .../create/steps/ReviewStep/index.tsx | 5 +- .../create/steps/StatusStep/StatusStepper.tsx | 5 +- .../steps/StatusStep/__tests__/index.test.tsx | 8 +- .../__tests__/usePendingSafe.test.ts | 71 +++++++ .../__tests__/useSafeCreation.test.ts | 176 ++++++++++-------- .../__tests__/useSafeCreationEffects.test.ts | 29 ++- .../create/steps/StatusStep/index.tsx | 24 +-- .../create/steps/StatusStep/usePendingSafe.ts | 29 +++ .../steps/StatusStep/useSafeCreation.ts | 12 +- .../StatusStep/useSafeCreationEffects.ts | 9 +- src/components/new-safe/create/types.d.ts | 12 +- .../create/useSyncSafeCreationStep.ts | 25 ++- 14 files changed, 285 insertions(+), 156 deletions(-) create mode 100644 src/components/new-safe/create/steps/StatusStep/__tests__/usePendingSafe.test.ts create mode 100644 src/components/new-safe/create/steps/StatusStep/usePendingSafe.ts diff --git a/src/components/new-safe/create/__tests__/useSyncSafeCreationStep.test.ts b/src/components/new-safe/create/__tests__/useSyncSafeCreationStep.test.ts index cd8d2a011e..807f848364 100644 --- a/src/components/new-safe/create/__tests__/useSyncSafeCreationStep.test.ts +++ b/src/components/new-safe/create/__tests__/useSyncSafeCreationStep.test.ts @@ -3,14 +3,27 @@ import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCre import * as wallet from '@/hooks/wallets/useWallet' import * as localStorage from '@/services/local-storage/useLocalStorage' import type { ConnectedWallet } from '@/services/onboard' +import * as usePendingSafe from '../steps/StatusStep/usePendingSafe' +import * as useIsWrongChain from '@/hooks/useIsWrongChain' describe('useSyncSafeCreationStep', () => { + const mockPendingSafe = { + name: 'joyful-rinkeby-safe', + threshold: 1, + owners: [], + saltNonce: 123, + address: '0x10', + } + const setPendingSafeSpy = jest.fn() + beforeEach(() => { jest.clearAllMocks() + const setPendingSafeSpy = jest.fn() }) it('should go to the first step if no wallet is connected', async () => { jest.spyOn(wallet, 'default').mockReturnValue(null) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([undefined, setPendingSafeSpy]) const mockSetStep = jest.fn() renderHook(() => useSyncSafeCreationStep(mockSetStep)) @@ -21,6 +34,8 @@ describe('useSyncSafeCreationStep', () => { it('should go to the fourth step if there is a pending safe', async () => { jest.spyOn(localStorage, 'default').mockReturnValue([{}, jest.fn()]) jest.spyOn(wallet, 'default').mockReturnValue({ address: '0x1' } as ConnectedWallet) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([mockPendingSafe, setPendingSafeSpy]) + const mockSetStep = jest.fn() renderHook(() => useSyncSafeCreationStep(mockSetStep)) @@ -28,9 +43,25 @@ describe('useSyncSafeCreationStep', () => { expect(mockSetStep).toHaveBeenCalledWith(4) }) + it('should go to the second step if the wrong chain is connected', async () => { + jest.spyOn(localStorage, 'default').mockReturnValue([{}, jest.fn()]) + jest.spyOn(wallet, 'default').mockReturnValue({ address: '0x1' } as ConnectedWallet) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([undefined, setPendingSafeSpy]) + jest.spyOn(useIsWrongChain, 'default').mockReturnValue(true) + + const mockSetStep = jest.fn() + + renderHook(() => useSyncSafeCreationStep(mockSetStep)) + + expect(mockSetStep).toHaveBeenCalledWith(1) + }) + it('should not do anything if wallet is connected and there is no pending safe', async () => { jest.spyOn(localStorage, 'default').mockReturnValue([undefined, jest.fn()]) jest.spyOn(wallet, 'default').mockReturnValue({ address: '0x1' } as ConnectedWallet) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([undefined, setPendingSafeSpy]) + jest.spyOn(useIsWrongChain, 'default').mockReturnValue(false) + const mockSetStep = jest.fn() renderHook(() => useSyncSafeCreationStep(mockSetStep)) diff --git a/src/components/new-safe/create/steps/ConnectWalletStep/index.tsx b/src/components/new-safe/create/steps/ConnectWalletStep/index.tsx index 5e6d9a928a..222ddaa645 100644 --- a/src/components/new-safe/create/steps/ConnectWalletStep/index.tsx +++ b/src/components/new-safe/create/steps/ConnectWalletStep/index.tsx @@ -8,15 +8,14 @@ import type { NewSafeFormData } from '@/components/new-safe/create' import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCreationStep' import layoutCss from '@/components/new-safe/create/styles.module.css' -import useLocalStorage from '@/services/local-storage/useLocalStorage' -import { type PendingSafeData, SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/create/steps/StatusStep' import useConnectWallet from '@/components/common/ConnectWallet/useConnectWallet' import KeyholeIcon from '@/components/common/icons/KeyholeIcon' import PairingDescription from '@/components/common/PairingDetails/PairingDescription' import PairingQRCode from '@/components/common/PairingDetails/PairingQRCode' +import { usePendingSafe } from '../StatusStep/usePendingSafe' const ConnectWalletStep = ({ onSubmit, setStep }: StepRenderProps<NewSafeFormData>) => { - const [pendingSafe] = useLocalStorage<PendingSafeData | undefined>(SAFE_PENDING_CREATION_STORAGE_KEY) + const [pendingSafe] = usePendingSafe() const wallet = useWallet() const chain = useCurrentChain() const isSupported = isPairingSupported(chain?.disabledWallets) diff --git a/src/components/new-safe/create/steps/ReviewStep/index.tsx b/src/components/new-safe/create/steps/ReviewStep/index.tsx index c5ebf035f4..7ec15641ff 100644 --- a/src/components/new-safe/create/steps/ReviewStep/index.tsx +++ b/src/components/new-safe/create/steps/ReviewStep/index.tsx @@ -15,8 +15,6 @@ import { getReadOnlyFallbackHandlerContract } from '@/services/contracts/safeCon import { computeNewSafeAddress } from '@/components/new-safe/create/logic' import useWallet from '@/hooks/wallets/useWallet' import { useWeb3 } from '@/hooks/wallets/web3' -import useLocalStorage from '@/services/local-storage/useLocalStorage' -import { type PendingSafeData, SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/create/steps/StatusStep' import useSyncSafeCreationStep from '@/components/new-safe/create/useSyncSafeCreationStep' import ArrowBackIcon from '@mui/icons-material/ArrowBack' import NetworkWarning from '@/components/new-safe/create/NetworkWarning' @@ -27,6 +25,7 @@ import { useLeastRemainingRelays } from '@/hooks/useRemainingRelays' import classnames from 'classnames' import { hasRemainingRelays } from '@/utils/relaying' import { BigNumber } from 'ethers' +import { usePendingSafe } from '../StatusStep/usePendingSafe' const ReviewStep = ({ data, onSubmit, onBack, setStep }: StepRenderProps<NewSafeFormData>) => { const isWrongChain = useIsWrongChain() @@ -36,7 +35,7 @@ const ReviewStep = ({ data, onSubmit, onBack, setStep }: StepRenderProps<NewSafe const provider = useWeb3() const [gasPrice] = useGasPrice() const saltNonce = useMemo(() => Date.now(), []) - const [_, setPendingSafe] = useLocalStorage<PendingSafeData | undefined>(SAFE_PENDING_CREATION_STORAGE_KEY) + const [_, setPendingSafe] = usePendingSafe() const [executionMethod, setExecutionMethod] = useState(ExecutionMethod.RELAY) const ownerAddresses = useMemo(() => data.owners.map((owner) => owner.address), [data.owners]) diff --git a/src/components/new-safe/create/steps/StatusStep/StatusStepper.tsx b/src/components/new-safe/create/steps/StatusStep/StatusStepper.tsx index fe45f4b764..6ab2693f59 100644 --- a/src/components/new-safe/create/steps/StatusStep/StatusStepper.tsx +++ b/src/components/new-safe/create/steps/StatusStep/StatusStepper.tsx @@ -2,10 +2,11 @@ import { Box, Step, StepConnector, Stepper, Typography } from '@mui/material' import css from '@/components/new-safe/create/steps/StatusStep/styles.module.css' import EthHashInfo from '@/components/common/EthHashInfo' import { SafeCreationStatus } from '@/components/new-safe/create/steps/StatusStep/useSafeCreation' -import type { PendingSafeData } from '@/components/new-safe/create/steps/StatusStep/index' import StatusStep from '@/components/new-safe/create/steps/StatusStep/StatusStep' +import { usePendingSafe } from './usePendingSafe' -const StatusStepper = ({ pendingSafe, status }: { pendingSafe: PendingSafeData; status: SafeCreationStatus }) => { +const StatusStepper = ({ status }: { status: SafeCreationStatus }) => { + const [pendingSafe] = usePendingSafe() if (!pendingSafe?.safeAddress) return null return ( diff --git a/src/components/new-safe/create/steps/StatusStep/__tests__/index.test.tsx b/src/components/new-safe/create/steps/StatusStep/__tests__/index.test.tsx index c779c95179..31b5aae5ec 100644 --- a/src/components/new-safe/create/steps/StatusStep/__tests__/index.test.tsx +++ b/src/components/new-safe/create/steps/StatusStep/__tests__/index.test.tsx @@ -17,12 +17,6 @@ describe('StatusStep', () => { />, ) - expect(useSafeCreationSpy).toHaveBeenCalledWith( - undefined, - expect.anything(), - SafeCreationStatus.PROCESSING, - expect.anything(), - true, - ) + expect(useSafeCreationSpy).toHaveBeenCalledWith(SafeCreationStatus.PROCESSING, expect.anything(), true) }) }) diff --git a/src/components/new-safe/create/steps/StatusStep/__tests__/usePendingSafe.test.ts b/src/components/new-safe/create/steps/StatusStep/__tests__/usePendingSafe.test.ts new file mode 100644 index 0000000000..145df2ebe5 --- /dev/null +++ b/src/components/new-safe/create/steps/StatusStep/__tests__/usePendingSafe.test.ts @@ -0,0 +1,71 @@ +import { renderHook } from '@/tests/test-utils' +import { usePendingSafe } from '../usePendingSafe' + +import { hexZeroPad } from 'ethers/lib/utils' +import { useCurrentChain } from '@/hooks/useChains' + +// mock useCurrentChain +jest.mock('@/hooks/useChains', () => ({ + useCurrentChain: jest.fn(() => ({ + shortName: 'gor', + chainId: '5', + chainName: 'Goerli', + features: [], + })), +})) + +describe('usePendingSafe()', () => { + const mockPendingSafe1 = { + name: 'joyful-rinkeby-safe', + threshold: 1, + owners: [], + saltNonce: 123, + address: hexZeroPad('0x10', 20), + } + const mockPendingSafe2 = { + name: 'joyful-rinkeby-safe', + threshold: 1, + owners: [], + saltNonce: 123, + address: hexZeroPad('0x10', 20), + } + + beforeEach(() => { + window.localStorage.clear() + }) + it('Should initially be undefined', () => { + const { result } = renderHook(() => usePendingSafe()) + expect(result.current[0]).toBeUndefined() + }) + + it('Should set the pendingSafe per ChainId', async () => { + const { result, rerender } = renderHook(() => usePendingSafe()) + + result.current[1](mockPendingSafe1) + + rerender() + + expect(result.current[0]).toEqual(mockPendingSafe1) + ;(useCurrentChain as jest.Mock).mockImplementation(() => ({ + shortName: 'eth', + chainId: '1', + chainName: 'Ethereum', + features: [], + })) + + rerender() + expect(result.current[0]).toEqual(undefined) + + result.current[1](mockPendingSafe2) + rerender() + expect(result.current[0]).toEqual(mockPendingSafe2) + ;(useCurrentChain as jest.Mock).mockImplementation(() => ({ + shortName: 'gor', + chainId: '5', + chainName: 'Goerli', + features: [], + })) + rerender() + expect(result.current[0]).toEqual(mockPendingSafe1) + }) +}) diff --git a/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreation.test.ts b/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreation.test.ts index 4c3b3e4c58..1ad617b11a 100644 --- a/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreation.test.ts +++ b/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreation.test.ts @@ -6,6 +6,7 @@ import * as wallet from '@/hooks/wallets/useWallet' import * as logic from '@/components/new-safe/create/logic' import * as contracts from '@/services/contracts/safeContracts' import * as txMonitor from '@/services/tx/txMonitor' +import * as usePendingSafe from '@/components/new-safe/create/steps/StatusStep/usePendingSafe' import { JsonRpcProvider, Web3Provider } from '@ethersproject/providers' import type { ConnectedWallet } from '@/hooks/wallets/useOnboard' import type { ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' @@ -34,9 +35,7 @@ describe('useSafeCreation', () => { saltNonce: 123, address: '0x10', } - const mockSetPendingSafe = jest.fn() - const mockStatus = SafeCreationStatus.AWAITING const mockSetStatus = jest.fn() const mockProvider: Web3Provider = new Web3Provider(jest.fn()) @@ -66,8 +65,8 @@ describe('useSafeCreation', () => { it('should create a safe with gas params if there is no txHash and status is AWAITING', async () => { const createSafeSpy = jest.spyOn(logic, 'createNewSafe').mockReturnValue(Promise.resolve({} as Safe)) - - renderHook(() => useSafeCreation(mockPendingSafe, mockSetPendingSafe, mockStatus, mockSetStatus, false)) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([mockPendingSafe, mockSetPendingSafe]) + renderHook(() => useSafeCreation(mockStatus, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).toHaveBeenCalled() @@ -97,9 +96,11 @@ describe('useSafeCreation', () => { features: [FEATURES.EIP1559], } as unknown as ChainInfo), ) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([mockPendingSafe, mockSetPendingSafe]) + const createSafeSpy = jest.spyOn(logic, 'createNewSafe').mockReturnValue(Promise.resolve({} as Safe)) - renderHook(() => useSafeCreation(mockPendingSafe, mockSetPendingSafe, mockStatus, mockSetStatus, false)) + renderHook(() => useSafeCreation(mockStatus, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).toHaveBeenCalled() @@ -115,10 +116,11 @@ describe('useSafeCreation', () => { it('should create a safe with no gas params if the gas estimation threw, there is no txHash and status is AWAITING', async () => { jest.spyOn(gasPrice, 'default').mockReturnValue([undefined, Error('Error for testing'), false]) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([mockPendingSafe, mockSetPendingSafe]) const createSafeSpy = jest.spyOn(logic, 'createNewSafe').mockReturnValue(Promise.resolve({} as Safe)) - renderHook(() => useSafeCreation(mockPendingSafe, mockSetPendingSafe, mockStatus, mockSetStatus, false)) + renderHook(() => useSafeCreation(mockStatus, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).toHaveBeenCalled() @@ -133,10 +135,11 @@ describe('useSafeCreation', () => { it('should not create a safe if there is no txHash, status is AWAITING but gas is loading', async () => { jest.spyOn(gasPrice, 'default').mockReturnValue([undefined, undefined, true]) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([mockPendingSafe, mockSetPendingSafe]) const createSafeSpy = jest.spyOn(logic, 'createNewSafe').mockReturnValue(Promise.resolve({} as Safe)) - renderHook(() => useSafeCreation(mockPendingSafe, mockSetPendingSafe, mockStatus, mockSetStatus, false)) + renderHook(() => useSafeCreation(mockStatus, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).not.toHaveBeenCalled() @@ -145,66 +148,51 @@ describe('useSafeCreation', () => { it('should not create a safe if the status is not AWAITING', async () => { const createSafeSpy = jest.spyOn(logic, 'createNewSafe') + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([mockPendingSafe, mockSetPendingSafe]) - renderHook(() => - useSafeCreation(mockPendingSafe, mockSetPendingSafe, SafeCreationStatus.WALLET_REJECTED, mockSetStatus, false), - ) + renderHook(() => useSafeCreation(SafeCreationStatus.WALLET_REJECTED, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).not.toHaveBeenCalled() }) - renderHook(() => - useSafeCreation(mockPendingSafe, mockSetPendingSafe, SafeCreationStatus.PROCESSING, mockSetStatus, false), - ) + renderHook(() => useSafeCreation(SafeCreationStatus.PROCESSING, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).not.toHaveBeenCalled() }) - renderHook(() => - useSafeCreation(mockPendingSafe, mockSetPendingSafe, SafeCreationStatus.ERROR, mockSetStatus, false), - ) + renderHook(() => useSafeCreation(SafeCreationStatus.ERROR, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).not.toHaveBeenCalled() }) - renderHook(() => - useSafeCreation(mockPendingSafe, mockSetPendingSafe, SafeCreationStatus.REVERTED, mockSetStatus, false), - ) + renderHook(() => useSafeCreation(SafeCreationStatus.REVERTED, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).not.toHaveBeenCalled() }) - renderHook(() => - useSafeCreation(mockPendingSafe, mockSetPendingSafe, SafeCreationStatus.TIMEOUT, mockSetStatus, false), - ) + renderHook(() => useSafeCreation(SafeCreationStatus.TIMEOUT, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).not.toHaveBeenCalled() }) - renderHook(() => - useSafeCreation(mockPendingSafe, mockSetPendingSafe, SafeCreationStatus.SUCCESS, mockSetStatus, false), - ) + renderHook(() => useSafeCreation(SafeCreationStatus.SUCCESS, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).not.toHaveBeenCalled() }) - renderHook(() => - useSafeCreation(mockPendingSafe, mockSetPendingSafe, SafeCreationStatus.INDEXED, mockSetStatus, false), - ) + renderHook(() => useSafeCreation(SafeCreationStatus.INDEXED, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).not.toHaveBeenCalled() }) - renderHook(() => - useSafeCreation(mockPendingSafe, mockSetPendingSafe, SafeCreationStatus.INDEX_FAILED, mockSetStatus, false), - ) + renderHook(() => useSafeCreation(SafeCreationStatus.INDEX_FAILED, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).not.toHaveBeenCalled() @@ -213,16 +201,11 @@ describe('useSafeCreation', () => { it('should not create a safe if there is a txHash', async () => { const createSafeSpy = jest.spyOn(logic, 'createNewSafe') + jest + .spyOn(usePendingSafe, 'usePendingSafe') + .mockReturnValue([{ ...mockPendingSafe, txHash: '0x123' }, mockSetPendingSafe]) - renderHook(() => - useSafeCreation( - { ...mockPendingSafe, txHash: '0x123' }, - mockSetPendingSafe, - SafeCreationStatus.AWAITING, - mockSetStatus, - false, - ), - ) + renderHook(() => useSafeCreation(SafeCreationStatus.AWAITING, mockSetStatus, false)) await waitFor(() => { expect(createSafeSpy).not.toHaveBeenCalled() @@ -231,16 +214,22 @@ describe('useSafeCreation', () => { it('should watch a tx if there is a txHash and a tx object', async () => { const watchSafeTxSpy = jest.spyOn(logic, 'checkSafeCreationTx') - - renderHook(() => - useSafeCreation( - { ...mockPendingSafe, txHash: '0x123', tx: mockSafeInfo }, - mockSetPendingSafe, - mockStatus, - mockSetStatus, - false, - ), - ) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([ + { + ...mockPendingSafe, + txHash: '0x123', + tx: { + data: '0x', + from: '0x1234', + nonce: 0, + startBlock: 0, + to: '0x456', + value: BigNumber.from(0), + }, + }, + mockSetPendingSafe, + ]) + renderHook(() => useSafeCreation(mockStatus, mockSetStatus, false)) await waitFor(() => { expect(watchSafeTxSpy).toHaveBeenCalledTimes(1) @@ -249,17 +238,24 @@ describe('useSafeCreation', () => { it('should watch a tx even if no wallet is connected', async () => { jest.spyOn(wallet, 'default').mockReturnValue(null) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([ + { + ...mockPendingSafe, + txHash: '0x123', + tx: { + data: '0x', + from: '0x1234', + nonce: 0, + startBlock: 0, + to: '0x456', + value: BigNumber.from(0), + }, + }, + mockSetPendingSafe, + ]) const watchSafeTxSpy = jest.spyOn(logic, 'checkSafeCreationTx') - renderHook(() => - useSafeCreation( - { ...mockPendingSafe, txHash: '0x123', tx: mockSafeInfo }, - mockSetPendingSafe, - mockStatus, - mockSetStatus, - false, - ), - ) + renderHook(() => useSafeCreation(mockStatus, mockSetStatus, false)) await waitFor(() => { expect(watchSafeTxSpy).toHaveBeenCalledTimes(1) @@ -268,10 +264,8 @@ describe('useSafeCreation', () => { it('should not watch a tx if there is no txHash', async () => { const watchSafeTxSpy = jest.spyOn(logic, 'checkSafeCreationTx') - - renderHook(() => - useSafeCreation({ ...mockPendingSafe, tx: mockSafeInfo }, mockSetPendingSafe, mockStatus, mockSetStatus, false), - ) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([mockPendingSafe, mockSetPendingSafe]) + renderHook(() => useSafeCreation(mockStatus, mockSetStatus, false)) await waitFor(() => { expect(watchSafeTxSpy).not.toHaveBeenCalled() @@ -280,10 +274,21 @@ describe('useSafeCreation', () => { it('should not watch a tx if there is no tx object', async () => { const watchSafeTxSpy = jest.spyOn(logic, 'checkSafeCreationTx') - - renderHook(() => - useSafeCreation({ ...mockPendingSafe, txHash: '0x123' }, mockSetPendingSafe, mockStatus, mockSetStatus, false), - ) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([ + { + ...mockPendingSafe, + tx: { + data: '0x', + from: '0x1234', + nonce: 0, + startBlock: 0, + to: '0x456', + value: BigNumber.from(0), + }, + }, + mockSetPendingSafe, + ]) + renderHook(() => useSafeCreation(mockStatus, mockSetStatus, false)) await waitFor(() => { expect(watchSafeTxSpy).not.toHaveBeenCalled() @@ -291,15 +296,23 @@ describe('useSafeCreation', () => { }) it('should set a PROCESSING state when watching a tx', async () => { - renderHook(() => - useSafeCreation( - { ...mockPendingSafe, txHash: '0x123', tx: mockSafeInfo }, - mockSetPendingSafe, - mockStatus, - mockSetStatus, - false, - ), - ) + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([ + { + ...mockPendingSafe, + txHash: '0x123', + tx: { + data: '0x', + from: '0x1234', + nonce: 0, + startBlock: 0, + to: '0x456', + value: BigNumber.from(0), + }, + }, + mockSetPendingSafe, + ]) + + renderHook(() => useSafeCreation(mockStatus, mockSetStatus, false)) await waitFor(() => { expect(mockSetStatus).toHaveBeenCalledWith(SafeCreationStatus.PROCESSING) @@ -308,14 +321,17 @@ describe('useSafeCreation', () => { it('should set a PROCESSING state and monitor relay taskId after successfully tx relay', async () => { jest.spyOn(logic, 'relaySafeCreation').mockResolvedValue('0x456') - + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([ + { + ...mockPendingSafe, + }, + mockSetPendingSafe, + ]) const txMonitorSpy = jest.spyOn(txMonitor, 'waitForCreateSafeTx').mockImplementation(jest.fn()) const initialStatus = SafeCreationStatus.PROCESSING - renderHook(() => - useSafeCreation({ ...mockPendingSafe, tx: mockSafeInfo }, mockSetPendingSafe, initialStatus, mockSetStatus, true), - ) + renderHook(() => useSafeCreation(initialStatus, mockSetStatus, true)) await waitFor(() => { expect(mockSetStatus).toHaveBeenCalledWith(SafeCreationStatus.PROCESSING) diff --git a/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreationEffects.test.ts b/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreationEffects.test.ts index 456cbf8f6b..2ffa008d1b 100644 --- a/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreationEffects.test.ts +++ b/src/components/new-safe/create/steps/StatusStep/__tests__/useSafeCreationEffects.test.ts @@ -3,15 +3,18 @@ import { SafeCreationStatus } from '@/components/new-safe/create/steps/StatusSte import { type SafeInfo } from '@safe-global/safe-gateway-typescript-sdk' import * as web3 from '@/hooks/wallets/web3' import * as pendingSafe from '@/components/new-safe/create/logic' +import * as usePendingSafe from '@/components/new-safe/create/steps/StatusStep/usePendingSafe' +import * as addressbook from '@/components/new-safe/create/logic/address-book' import { Web3Provider } from '@ethersproject/providers' -import type { PendingSafeData } from '@/components/new-safe/create/types' import useSafeCreationEffects from '@/components/new-safe/create/steps/StatusStep/useSafeCreationEffects' -import type { NamedAddress } from '@/components/new-safe/create/types' +import type { PendingSafeData } from '@/components/new-safe/create/types' +import { hexZeroPad } from 'ethers/lib/utils' describe('useSafeCreationEffects', () => { beforeEach(() => { jest.resetAllMocks() jest.spyOn(pendingSafe, 'pollSafeInfo').mockImplementation(jest.fn(() => Promise.resolve({} as SafeInfo))) + jest.spyOn(addressbook, 'updateAddressBook').mockReturnValue(() => {}) const mockProvider: Web3Provider = new Web3Provider(jest.fn()) jest.spyOn(web3, 'useWeb3').mockImplementation(() => mockProvider) @@ -20,12 +23,13 @@ describe('useSafeCreationEffects', () => { it('should clear the tx hash if it exists on ERROR or REVERTED', () => { const setStatusSpy = jest.fn() const setPendingSafeSpy = jest.fn() + jest + .spyOn(usePendingSafe, 'usePendingSafe') + .mockReturnValue([{ txHash: '0x123' } as PendingSafeData, setPendingSafeSpy]) renderHook(() => useSafeCreationEffects({ status: SafeCreationStatus.ERROR, - pendingSafe: { txHash: '0x10' } as PendingSafeData, - setPendingSafe: setPendingSafeSpy, setStatus: setStatusSpy, }), ) @@ -36,12 +40,10 @@ describe('useSafeCreationEffects', () => { it('should not clear the tx hash if it doesnt exist on ERROR or REVERTED', () => { const setStatusSpy = jest.fn() const setPendingSafeSpy = jest.fn() - + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([{} as PendingSafeData, setPendingSafeSpy]) renderHook(() => useSafeCreationEffects({ status: SafeCreationStatus.ERROR, - pendingSafe: {} as PendingSafeData, - setPendingSafe: setPendingSafeSpy, setStatus: setStatusSpy, }), ) @@ -53,15 +55,12 @@ describe('useSafeCreationEffects', () => { const pollSafeInfoSpy = jest.spyOn(pendingSafe, 'pollSafeInfo') const setStatusSpy = jest.fn() const setPendingSafeSpy = jest.fn() - + jest + .spyOn(usePendingSafe, 'usePendingSafe') + .mockReturnValue([{ safeAddress: hexZeroPad('0x123', 20) } as PendingSafeData, setPendingSafeSpy]) renderHook(() => useSafeCreationEffects({ status: SafeCreationStatus.SUCCESS, - pendingSafe: { - safeAddress: '0x1', - owners: [] as NamedAddress[], - } as PendingSafeData, - setPendingSafe: setPendingSafeSpy, setStatus: setStatusSpy, }), ) @@ -73,12 +72,10 @@ describe('useSafeCreationEffects', () => { const pollSafeInfoSpy = jest.spyOn(pendingSafe, 'pollSafeInfo') const setStatusSpy = jest.fn() const setPendingSafeSpy = jest.fn() - + jest.spyOn(usePendingSafe, 'usePendingSafe').mockReturnValue([{} as PendingSafeData, setPendingSafeSpy]) renderHook(() => useSafeCreationEffects({ status: SafeCreationStatus.SUCCESS, - pendingSafe: undefined, - setPendingSafe: setPendingSafeSpy, setStatus: setStatusSpy, }), ) diff --git a/src/components/new-safe/create/steps/StatusStep/index.tsx b/src/components/new-safe/create/steps/StatusStep/index.tsx index a40e1a38d9..255ad37572 100644 --- a/src/components/new-safe/create/steps/StatusStep/index.tsx +++ b/src/components/new-safe/create/steps/StatusStep/index.tsx @@ -4,13 +4,11 @@ import { useRouter } from 'next/router' import Track from '@/components/common/Track' import { CREATE_SAFE_EVENTS } from '@/services/analytics/events/createLoadSafe' -import useLocalStorage from '@/services/local-storage/useLocalStorage' import StatusMessage from '@/components/new-safe/create/steps/StatusStep/StatusMessage' import useWallet from '@/hooks/wallets/useWallet' import useIsWrongChain from '@/hooks/useIsWrongChain' import type { NewSafeFormData } from '@/components/new-safe/create' import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' -import type { PendingSafeTx } from '@/components/new-safe/create/types' import useSafeCreationEffects from '@/components/new-safe/create/steps/StatusStep/useSafeCreationEffects' import { SafeCreationStatus, useSafeCreation } from '@/components/new-safe/create/steps/StatusStep/useSafeCreation' import StatusStepper from '@/components/new-safe/create/steps/StatusStep/StatusStepper' @@ -20,43 +18,37 @@ import layoutCss from '@/components/new-safe/create/styles.module.css' import { AppRoutes } from '@/config/routes' import { lightPalette } from '@safe-global/safe-react-components' import { useCurrentChain } from '@/hooks/useChains' - -export const SAFE_PENDING_CREATION_STORAGE_KEY = 'pendingSafe' - -export type PendingSafeData = NewSafeFormData & { - txHash?: string - tx?: PendingSafeTx - taskId?: string -} +import { usePendingSafe } from './usePendingSafe' +import useSyncSafeCreationStep from '../../useSyncSafeCreationStep' export const getInitialCreationStatus = (willRelay: boolean): SafeCreationStatus => willRelay ? SafeCreationStatus.PROCESSING : SafeCreationStatus.AWAITING -export const CreateSafeStatus = ({ data, setProgressColor }: StepRenderProps<NewSafeFormData>) => { - const [pendingSafe, setPendingSafe] = useLocalStorage<PendingSafeData | undefined>(SAFE_PENDING_CREATION_STORAGE_KEY) +export const CreateSafeStatus = ({ data, setProgressColor, setStep }: StepRenderProps<NewSafeFormData>) => { const router = useRouter() const chainInfo = useCurrentChain() const chainPrefix = chainInfo?.shortName || '' const wallet = useWallet() const isWrongChain = useIsWrongChain() const isConnected = wallet && !isWrongChain + const [pendingSafe, setPendingSafe] = usePendingSafe() + useSyncSafeCreationStep(setStep) // The willRelay flag can come from the previous step or from local storage const willRelay = !!(data.willRelay || pendingSafe?.willRelay) const initialStatus = getInitialCreationStatus(willRelay) const [status, setStatus] = useState<SafeCreationStatus>(initialStatus) - const { handleCreateSafe } = useSafeCreation(pendingSafe, setPendingSafe, status, setStatus, willRelay) + const { handleCreateSafe } = useSafeCreation(status, setStatus, willRelay) useSafeCreationEffects({ - pendingSafe, - setPendingSafe, status, setStatus, }) const onClose = useCallback(() => { setPendingSafe(undefined) + router.push(AppRoutes.welcome) }, [router, setPendingSafe]) @@ -103,7 +95,7 @@ export const CreateSafeStatus = ({ data, setProgressColor }: StepRenderProps<New <> <Divider /> <Box className={layoutCss.row}> - <StatusStepper pendingSafe={pendingSafe} status={status} /> + <StatusStepper status={status} /> </Box> </> )} diff --git a/src/components/new-safe/create/steps/StatusStep/usePendingSafe.ts b/src/components/new-safe/create/steps/StatusStep/usePendingSafe.ts new file mode 100644 index 0000000000..08c3ac543e --- /dev/null +++ b/src/components/new-safe/create/steps/StatusStep/usePendingSafe.ts @@ -0,0 +1,29 @@ +import { useCurrentChain } from '@/hooks/useChains' +import useLocalStorage from '@/services/local-storage/useLocalStorage' +import { useCallback } from 'react' +import type { PendingSafeByChain, PendingSafeData } from '../../types' + +const SAFE_PENDING_CREATION_STORAGE_KEY = 'pendingSafe_v2' + +export const usePendingSafe = (): [PendingSafeData | undefined, (safe: PendingSafeData | undefined) => void] => { + const [pendingSafes, setPendingSafes] = useLocalStorage<PendingSafeByChain>(SAFE_PENDING_CREATION_STORAGE_KEY) + + const chainInfo = useCurrentChain() + + const pendingSafe = chainInfo && pendingSafes?.[chainInfo.chainId] + const setPendingSafe = useCallback( + (safe: PendingSafeData | undefined) => { + if (!chainInfo?.chainId) { + return + } + + // Always copy the object because useLocalStorage does not check for deep equality when writing back to ls + const newPendingSafes = pendingSafes ? { ...pendingSafes } : {} + newPendingSafes[chainInfo.chainId] = safe + setPendingSafes(newPendingSafes) + }, + [chainInfo?.chainId, pendingSafes, setPendingSafes], + ) + + return [pendingSafe, setPendingSafe] +} diff --git a/src/components/new-safe/create/steps/StatusStep/useSafeCreation.ts b/src/components/new-safe/create/steps/StatusStep/useSafeCreation.ts index ec4823a5fa..ba0c44dfc7 100644 --- a/src/components/new-safe/create/steps/StatusStep/useSafeCreation.ts +++ b/src/components/new-safe/create/steps/StatusStep/useSafeCreation.ts @@ -4,7 +4,7 @@ import { useWeb3, useWeb3ReadOnly } from '@/hooks/wallets/web3' import { useCurrentChain } from '@/hooks/useChains' import useWallet from '@/hooks/wallets/useWallet' import type { EthersError } from '@/utils/ethers-utils' -import { getInitialCreationStatus, type PendingSafeData } from '@/components/new-safe/create/steps/StatusStep/index' +import { getInitialCreationStatus } from '@/components/new-safe/create/steps/StatusStep/index' import type { PendingSafeTx } from '@/components/new-safe/create/types' import { createNewSafe, @@ -24,6 +24,7 @@ import useGasPrice from '@/hooks/useGasPrice' import { hasFeature } from '@/utils/chains' import { FEATURES } from '@safe-global/safe-gateway-typescript-sdk' import type { DeploySafeProps } from '@safe-global/safe-core-sdk' +import { usePendingSafe } from './usePendingSafe' export enum SafeCreationStatus { AWAITING, @@ -38,8 +39,6 @@ export enum SafeCreationStatus { } export const useSafeCreation = ( - pendingSafe: PendingSafeData | undefined, - setPendingSafe: Dispatch<SetStateAction<PendingSafeData | undefined>>, status: SafeCreationStatus, setStatus: Dispatch<SetStateAction<SafeCreationStatus>>, willRelay: boolean, @@ -47,6 +46,7 @@ export const useSafeCreation = ( const [isCreating, setIsCreating] = useState(false) const [isWatching, setIsWatching] = useState(false) const dispatch = useAppDispatch() + const [pendingSafe, setPendingSafe] = usePendingSafe() const wallet = useWallet() const provider = useWeb3() @@ -63,9 +63,9 @@ export const useSafeCreation = ( async (txHash: string, tx: PendingSafeTx) => { setStatus(SafeCreationStatus.PROCESSING) trackEvent(CREATE_SAFE_EVENTS.SUBMIT_CREATE_SAFE) - setPendingSafe((prev) => (prev ? { ...prev, txHash, tx } : undefined)) + setPendingSafe(pendingSafe ? { ...pendingSafe, txHash, tx } : undefined) }, - [setStatus, setPendingSafe], + [setStatus, setPendingSafe, pendingSafe], ) const handleCreateSafe = useCallback(async () => { @@ -81,7 +81,7 @@ export const useSafeCreation = ( if (willRelay) { const taskId = await relaySafeCreation(chain, ownersAddresses, threshold, saltNonce) - setPendingSafe((prev) => (prev ? { ...prev, taskId } : undefined)) + setPendingSafe(pendingSafe ? { ...pendingSafe, taskId } : undefined) setStatus(SafeCreationStatus.PROCESSING) waitForCreateSafeTx(taskId, setStatus) } else { diff --git a/src/components/new-safe/create/steps/StatusStep/useSafeCreationEffects.ts b/src/components/new-safe/create/steps/StatusStep/useSafeCreationEffects.ts index 16cdcd7fc8..2d2d6128fb 100644 --- a/src/components/new-safe/create/steps/StatusStep/useSafeCreationEffects.ts +++ b/src/components/new-safe/create/steps/StatusStep/useSafeCreationEffects.ts @@ -6,21 +6,18 @@ import { CREATE_SAFE_EVENTS, trackEvent } from '@/services/analytics' import { updateAddressBook } from '@/components/new-safe/create/logic/address-book' import { useAppDispatch } from '@/store' import useChainId from '@/hooks/useChainId' -import type { PendingSafeData } from '@/components/new-safe/create/steps/StatusStep/index' +import { usePendingSafe } from './usePendingSafe' const useSafeCreationEffects = ({ - pendingSafe, - setPendingSafe, status, setStatus, }: { - pendingSafe: PendingSafeData | undefined - setPendingSafe: Dispatch<SetStateAction<PendingSafeData | undefined>> status: SafeCreationStatus setStatus: Dispatch<SetStateAction<SafeCreationStatus>> }) => { const dispatch = useAppDispatch() const chainId = useChainId() + const [pendingSafe, setPendingSafe] = usePendingSafe() useEffect(() => { if (status === SafeCreationStatus.SUCCESS) { @@ -58,7 +55,7 @@ const useSafeCreationEffects = ({ status === SafeCreationStatus.REVERTED ) { if (pendingSafe?.txHash) { - setPendingSafe((prev) => (prev ? { ...prev, txHash: undefined, tx: undefined } : undefined)) + setPendingSafe(pendingSafe ? { ...pendingSafe, txHash: undefined, tx: undefined } : undefined) } return } diff --git a/src/components/new-safe/create/types.d.ts b/src/components/new-safe/create/types.d.ts index bbc66177b9..0aedda9b54 100644 --- a/src/components/new-safe/create/types.d.ts +++ b/src/components/new-safe/create/types.d.ts @@ -1,4 +1,5 @@ import type { BigNumber } from 'ethers' +import type { NewSafeFormData } from '@/components/new-safe/create' export type NamedAddress = { name: string @@ -6,12 +7,6 @@ export type NamedAddress = { ens?: string } -// TODO: Split this type up for create and add safe since NamedAddress only makes sense when adding a safe -export type SafeFormData = NamedAddress & { - threshold: number - owners: NamedAddress[] -} - export type PendingSafeTx = { data: string from: string @@ -21,11 +16,10 @@ export type PendingSafeTx = { startBlock: number } -export type PendingSafeData = SafeFormData & { +export type PendingSafeData = NewSafeFormData & { txHash?: string tx?: PendingSafeTx - safeAddress?: string - saltNonce: number + taskId?: string } export type PendingSafeByChain = Record<string, PendingSafeData | undefined> diff --git a/src/components/new-safe/create/useSyncSafeCreationStep.ts b/src/components/new-safe/create/useSyncSafeCreationStep.ts index c20ca3cbeb..6b4ad6ff94 100644 --- a/src/components/new-safe/create/useSyncSafeCreationStep.ts +++ b/src/components/new-safe/create/useSyncSafeCreationStep.ts @@ -1,25 +1,34 @@ import { useEffect } from 'react' -import useLocalStorage from '@/services/local-storage/useLocalStorage' import type { StepRenderProps } from '@/components/new-safe/CardStepper/useCardStepper' -import type { PendingSafeData } from '@/components/new-safe/create/steps/StatusStep' import type { NewSafeFormData } from '@/components/new-safe/create/index' -import { SAFE_PENDING_CREATION_STORAGE_KEY } from '@/components/new-safe/create/steps/StatusStep' import useWallet from '@/hooks/wallets/useWallet' +import { usePendingSafe } from './steps/StatusStep/usePendingSafe' +import useIsWrongChain from '@/hooks/useIsWrongChain' const useSyncSafeCreationStep = (setStep: StepRenderProps<NewSafeFormData>['setStep']) => { - const [pendingSafe] = useLocalStorage<PendingSafeData | undefined>(SAFE_PENDING_CREATION_STORAGE_KEY) + const [pendingSafe] = usePendingSafe() const wallet = useWallet() + const isWrongChain = useIsWrongChain() useEffect(() => { + // Jump to the status screen if there is already a tx submitted + if (pendingSafe) { + setStep(4) + return + } + + // Jump to connect wallet step if there is no wallet and no pending Safe if (!wallet) { setStep(0) + return } - // Jump to the status screen if there is already a tx submitted - if (pendingSafe) { - setStep(4) + // Jump to choose name and network step if the wallet is connected to the wrong chain and there is no pending Safe + if (isWrongChain) { + setStep(1) + return } - }, [wallet, setStep, pendingSafe]) + }, [wallet, setStep, pendingSafe, isWrongChain]) } export default useSyncSafeCreationStep From 3d2ba01fd20504261815c6024117911e6ac0678e Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Tue, 8 Aug 2023 15:51:46 +0200 Subject: [PATCH 406/422] Fix: extend the emoji set for eth addresses (#2368) --- .../common/AddressEmoji/AddressEmoji.test.tsx | 19 +++++++++++++++++++ .../index.tsx} | 13 ++++++++----- .../styles.module.css | 0 .../common/ConnectWallet/AccountCenter.tsx | 2 +- src/components/common/EthHashInfo/index.tsx | 8 ++++---- src/components/common/SafeIcon/index.tsx | 2 +- 6 files changed, 33 insertions(+), 11 deletions(-) create mode 100644 src/components/common/AddressEmoji/AddressEmoji.test.tsx rename src/components/common/{EthHashInfo/AddressEmoji.tsx => AddressEmoji/index.tsx} (87%) rename src/components/common/{EthHashInfo => AddressEmoji}/styles.module.css (100%) diff --git a/src/components/common/AddressEmoji/AddressEmoji.test.tsx b/src/components/common/AddressEmoji/AddressEmoji.test.tsx new file mode 100644 index 0000000000..28214ec80c --- /dev/null +++ b/src/components/common/AddressEmoji/AddressEmoji.test.tsx @@ -0,0 +1,19 @@ +import { ethereumAddressToEmoji } from '.' + +describe('ethereumAddressToEmoji', () => { + it('should return the correct emoji', () => { + const emoji = ethereumAddressToEmoji('0x0000000000000000000000000000000000000000') + expect(emoji).toBe('😀') + }) + + it('should return an emoji for the entire range of addresses', () => { + const hexChars = 4 + for (let i = 0; i < 16 ** hexChars; i++) { + const address = `0x${i.toString(16).padStart(4, '0')}` + const emoji = ethereumAddressToEmoji(address) + //console.log(address, emoji) + expect(emoji).toBeDefined() + expect(emoji).not.toBe('') + } + }) +}) diff --git a/src/components/common/EthHashInfo/AddressEmoji.tsx b/src/components/common/AddressEmoji/index.tsx similarity index 87% rename from src/components/common/EthHashInfo/AddressEmoji.tsx rename to src/components/common/AddressEmoji/index.tsx index 831b9ab17e..7fc25b1a4c 100644 --- a/src/components/common/EthHashInfo/AddressEmoji.tsx +++ b/src/components/common/AddressEmoji/index.tsx @@ -5,10 +5,13 @@ import css from './styles.module.css' // Define the Unicode ranges for animal, fruit, and vegetable emojis const unicodeRanges = [ - [0x1f400, 0x1f43f], - [0x1f980, 0x1f994], - [0x1f345, 0x1f35f], - [0x1f950, 0x1f96b], + [0x1f600, 0x1f60e], + [0x1f638, 0x1f63d], + [0x1f680, 0x1f683], + [0x2614, 0x2615], + [0x1f330, 0x1f393], + [0x1f3a0, 0x1f3ca], + [0x1f400, 0x1f42a], ] // Calculate the total number of emojis @@ -17,7 +20,7 @@ for (let range of unicodeRanges) { totalEmojis += range[1] - range[0] + 1 } -function ethereumAddressToEmoji(address: string): string { +export function ethereumAddressToEmoji(address: string): string { // Convert the Ethereum address from hexadecimal to decimal const decimal = BigInt(address.slice(0, 6)) diff --git a/src/components/common/EthHashInfo/styles.module.css b/src/components/common/AddressEmoji/styles.module.css similarity index 100% rename from src/components/common/EthHashInfo/styles.module.css rename to src/components/common/AddressEmoji/styles.module.css diff --git a/src/components/common/ConnectWallet/AccountCenter.tsx b/src/components/common/ConnectWallet/AccountCenter.tsx index 0994631fee..9bbea86ef2 100644 --- a/src/components/common/ConnectWallet/AccountCenter.tsx +++ b/src/components/common/ConnectWallet/AccountCenter.tsx @@ -13,7 +13,7 @@ import ChainSwitcher from '../ChainSwitcher' import useAddressBook from '@/hooks/useAddressBook' import { type ConnectedWallet } from '@/hooks/wallets/useOnboard' import WalletInfo, { UNKNOWN_CHAIN_NAME } from '../WalletInfo' -import AddressEmoji from '../EthHashInfo/AddressEmoji' +import AddressEmoji from '../AddressEmoji' const AccountCenter = ({ wallet }: { wallet: ConnectedWallet }) => { const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null) diff --git a/src/components/common/EthHashInfo/index.tsx b/src/components/common/EthHashInfo/index.tsx index 3ae1a0e7bb..f17a91941c 100644 --- a/src/components/common/EthHashInfo/index.tsx +++ b/src/components/common/EthHashInfo/index.tsx @@ -1,12 +1,12 @@ import { type ReactElement } from 'react' +import { Box } from '@mui/material' import useAddressBook from '@/hooks/useAddressBook' import useChainId from '@/hooks/useChainId' import { useAppSelector } from '@/store' import { selectSettings } from '@/store/settingsSlice' import { selectChainById } from '@/store/chainsSlice' import { getBlockExplorerLink } from '@/utils/chains' -import css from './styles.module.css' -import { Emoji } from './AddressEmoji' +import { Emoji } from '@/components/common/AddressEmoji' import SrcEthHashInfo, { type EthHashInfoProps } from './SrcEthHashInfo' const EthHashInfo = ({ @@ -23,7 +23,7 @@ const EthHashInfo = ({ const showEmoji = settings.addressEmojis && props.showAvatar !== false && !props.customAvatar && avatarSize >= 20 return ( - <div className={css.container}> + <Box position="relative"> <SrcEthHashInfo prefix={chain?.shortName} showPrefix={settings.shortName.show} @@ -37,7 +37,7 @@ const EthHashInfo = ({ {props.children} </SrcEthHashInfo> {showEmoji && <Emoji address={props.address} size={avatarSize} />} - </div> + </Box> ) } diff --git a/src/components/common/SafeIcon/index.tsx b/src/components/common/SafeIcon/index.tsx index 8e565e8e36..febcf64f03 100644 --- a/src/components/common/SafeIcon/index.tsx +++ b/src/components/common/SafeIcon/index.tsx @@ -3,7 +3,7 @@ import { Box } from '@mui/material' import css from './styles.module.css' import Identicon, { type IdenticonProps } from '../Identicon' -import AddressEmoji from '../EthHashInfo/AddressEmoji' +import AddressEmoji from '../AddressEmoji' interface ThresholdProps { threshold: number | string From 45da2d709d63abfc6875368ef382331e79a7e31d Mon Sep 17 00:00:00 2001 From: bannik <me@bannik.eu> Date: Wed, 9 Aug 2023 17:30:34 +0200 Subject: [PATCH 407/422] oryy update --- .env.example | 7 +- next.config.mjs | 2 +- package-lock.json | 63740 ++++++++++++++++ public/favicons/favicon-16x16.png | Bin 496 -> 784 bytes public/favicons/favicon-32x32.png | Bin 780 -> 924 bytes public/favicons/favicon.ico | Bin 15406 -> 1150 bytes public/favicons/logo_120x120.png | Bin 4174 -> 1450 bytes public/favicons/safari-pinned-tab.svg | 39 +- public/images/address-book/no-entries.svg | 2 +- public/images/logo-no-text.svg | 4 +- public/images/logo.svg | 16 + public/images/safe-logo-green.png | Bin 3684 -> 2682 bytes src/components/common/MetaTags/index.tsx | 10 +- .../LoadingSpinner/styles.module.css | 2 +- src/config/constants.ts | 2 + src/hooks/useChainId.ts | 4 +- src/pages/_app.tsx | 2 +- src/pages/_offline.tsx | 2 +- src/pages/address-book.tsx | 2 +- src/pages/balances/index.tsx | 2 +- src/pages/balances/nfts.tsx | 2 +- src/pages/home.tsx | 2 +- src/pages/import.tsx | 19 + src/pages/new-safe/create.tsx | 2 +- src/pages/new-safe/load.tsx | 2 +- src/pages/settings/appearance.tsx | 2 +- src/pages/settings/data.tsx | 2 +- src/pages/settings/modules.tsx | 2 +- src/pages/settings/safe-apps/index.tsx | 2 +- src/pages/settings/setup.tsx | 2 +- src/pages/settings/spending-limits.tsx | 2 +- src/pages/transactions/history.tsx | 2 +- src/pages/transactions/queue.tsx | 2 +- src/pages/transactions/tx.tsx | 2 +- src/pages/welcome.tsx | 2 +- src/styles/colors-dark.ts | 64 + src/styles/colors.ts | 64 + yarn.lock | 24195 +++--- 38 files changed, 76104 insertions(+), 12102 deletions(-) create mode 100644 package-lock.json create mode 100644 src/pages/import.tsx create mode 100644 src/styles/colors-dark.ts create mode 100644 src/styles/colors.ts diff --git a/.env.example b/.env.example index b2804bb7d4..58dad70009 100644 --- a/.env.example +++ b/.env.example @@ -28,9 +28,14 @@ NEXT_PUBLIC_WC_PROJECT_ID= # E2E tests NEXT_PUBLIC_CYPRESS_MNEMONIC= +<<<<<<< HEAD # Safe Gelato relay service NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_PRODUCTION= NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING= # Redefine -NEXT_PUBLIC_REDEFINE_API= \ No newline at end of file +NEXT_PUBLIC_REDEFINE_API= +======= +# Chain +NEXT_DEFAULT_CHAINID= +>>>>>>> b6f80a27 (oryy rebranding) diff --git a/next.config.mjs b/next.config.mjs index 722e9f3c76..2ce37aa974 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,6 +1,6 @@ import path from 'path' import withBundleAnalyzer from '@next/bundle-analyzer' -import NextPwa from'next-pwa' +import NextPwa from 'next-pwa' const withPWA = NextPwa({ disable: process.env.NODE_ENV === 'development', diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..43d1854cef --- /dev/null +++ b/package-lock.json @@ -0,0 +1,63740 @@ +{ + "name": "safe-wallet-web", + "version": "1.16.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "safe-wallet-web", + "version": "1.16.0", + "hasInstallScript": true, + "license": "GPL-3.0", + "dependencies": { + "@date-io/date-fns": "^2.15.0", + "@emotion/cache": "^11.10.1", + "@emotion/react": "^11.10.0", + "@emotion/server": "^11.10.0", + "@emotion/styled": "^11.10.0", + "@mui/icons-material": "^5.14.3", + "@mui/material": "^5.14.3", + "@mui/x-date-pickers": "^5.0.12", + "@reduxjs/toolkit": "^1.9.5", + "@safe-global/safe-apps-sdk": "7.11.0", + "@safe-global/safe-core-sdk": "^3.3.4", + "@safe-global/safe-core-sdk-utils": "^1.7.4", + "@safe-global/safe-deployments": "^1.25.0", + "@safe-global/safe-ethers-lib": "^1.9.4", + "@safe-global/safe-gateway-typescript-sdk": "^3.8.0", + "@safe-global/safe-modules-deployments": "^1.0.0", + "@safe-global/safe-react-components": "^2.0.6", + "@sentry/react": "^7.28.1", + "@sentry/tracing": "^7.28.1", + "@truffle/hdwallet-provider": "^2.1.4", + "@web3-onboard/coinbase": "^2.2.4", + "@web3-onboard/core": "2.20.4", + "@web3-onboard/injected-wallets": "^2.10.0", + "@web3-onboard/keystone": "^2.3.7", + "@web3-onboard/ledger": "2.3.2", + "@web3-onboard/taho": "^2.0.5", + "@web3-onboard/trezor": "^2.4.2", + "@web3-onboard/walletconnect": "2.4.0", + "classnames": "^2.3.1", + "date-fns": "^2.29.2", + "ethereum-blockies-base64": "^1.0.2", + "ethers": "5.7.2", + "exponential-backoff": "^3.1.0", + "framer-motion": "^10.13.1", + "fuse.js": "^6.6.2", + "js-cookie": "^3.0.1", + "lodash": "^4.17.21", + "next": "12.2.0", + "next-pwa": "^5.6.0", + "papaparse": "^5.3.2", + "qrcode.react": "^3.1.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-dropzone": "^14.2.3", + "react-gtm-module": "^2.0.11", + "react-hook-form": "7.41.1", + "react-papaparse": "^4.0.2", + "react-qr-reader": "2.2.1", + "react-redux": "^8.0.5", + "semver": "^7.5.2" + }, + "devDependencies": { + "@next/bundle-analyzer": "^13.1.1", + "@openzeppelin/contracts": "^4.9.2", + "@safe-global/safe-core-sdk-types": "^1.9.1", + "@sentry/types": "^7.28.1", + "@svgr/webpack": "^6.3.1", + "@testing-library/cypress": "^8.0.7", + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^13.3.0", + "@testing-library/user-event": "^14.4.2", + "@typechain/ethers-v5": "^10.2.0", + "@types/jest": "^28.1.6", + "@types/js-cookie": "^3.0.2", + "@types/lodash": "^4.14.182", + "@types/node": "18.11.18", + "@types/qrcode": "^1.4.2", + "@types/react": "18.0.26", + "@types/react-dom": "18.0.10", + "@types/react-gtm-module": "^2.0.1", + "@types/react-qr-reader": "^2.1.4", + "@types/semver": "^7.3.10", + "@typescript-eslint/eslint-plugin": "^5.47.1", + "cross-env": "^7.0.3", + "cypress": "^11.1.0", + "cypress-file-upload": "^5.0.8", + "eslint": "8.31.0", + "eslint-config-next": "13.1.1", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-unused-imports": "^2.0.0", + "jest": "^28.1.2", + "jest-environment-jsdom": "^28.1.2", + "pre-commit": "^1.2.2", + "prettier": "^2.7.0", + "ts-node": "^10.8.2", + "ts-prune": "^0.10.3", + "typechain": "^8.0.0", + "typescript": "4.9.4", + "typescript-plugin-css-modules": "^4.2.2", + "whatwg-fetch": "3.6.2" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@apocentre/alias-sampling": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@apocentre/alias-sampling/-/alias-sampling-0.5.3.tgz", + "integrity": "sha512-7UDWIIF9hIeJqfKXkNIzkVandlwLf1FWTSdrb9iXvOP8oF544JRXQjCbiTmCv2c9n44n/FIWtehhBfNuAx2CZA==", + "license": "GPL" + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz", + "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.5", + "@babel/parser": "^7.20.5", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", + "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.5", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", + "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", + "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", + "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", + "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", + "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz", + "integrity": "sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz", + "integrity": "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.20.2", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", + "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.6.tgz", + "integrity": "sha512-tqeujPiuEfcH067mx+7otTQWROVMKHXEaOQcAeNV5dDdbPWvPcFA8/W9LXw2NfjNmOetqLl03dfnG2WALPlsRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", + "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.5", + "@babel/types": "^7.20.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", + "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@coinbase/wallet-sdk": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-3.7.1.tgz", + "integrity": "sha512-LjyoDCB+7p0waQXfK+fUgcAs3Ezk6S6e+LYaoFjpJ6c9VTop3NyZF40Pi7df4z7QJohCwzuIDjz0Rhtig6Y7Pg==", + "dependencies": { + "@metamask/safe-event-emitter": "2.0.0", + "@solana/web3.js": "^1.70.1", + "bind-decorator": "^1.0.11", + "bn.js": "^5.1.1", + "buffer": "^6.0.3", + "clsx": "^1.1.0", + "eth-block-tracker": "6.1.0", + "eth-json-rpc-filters": "5.1.0", + "eth-rpc-errors": "4.0.2", + "json-rpc-engine": "6.1.0", + "keccak": "^3.0.1", + "preact": "^10.5.9", + "qs": "^6.10.3", + "rxjs": "^6.6.3", + "sha.js": "^2.4.11", + "stream-browserify": "^3.0.0", + "util": "^0.12.4" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@coinbase/wallet-sdk/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/@coinbase/wallet-sdk/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@coinbase/wallet-sdk/node_modules/eth-block-tracker": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-6.1.0.tgz", + "integrity": "sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==", + "dependencies": { + "@metamask/safe-event-emitter": "^2.0.0", + "@metamask/utils": "^3.0.1", + "json-rpc-random-id": "^1.0.1", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@coinbase/wallet-sdk/node_modules/eth-json-rpc-filters": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-5.1.0.tgz", + "integrity": "sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ==", + "dependencies": { + "@metamask/safe-event-emitter": "^2.0.0", + "async-mutex": "^0.2.6", + "eth-query": "^2.1.2", + "json-rpc-engine": "^6.1.0", + "pify": "^5.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@coinbase/wallet-sdk/node_modules/eth-json-rpc-filters/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@coinbase/wallet-sdk/node_modules/eth-rpc-errors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz", + "integrity": "sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ==", + "dependencies": { + "fast-safe-stringify": "^2.0.6" + } + }, + "node_modules/@coinbase/wallet-sdk/node_modules/json-rpc-engine": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", + "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", + "dependencies": { + "@metamask/safe-event-emitter": "^2.0.0", + "eth-rpc-errors": "^4.0.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@coinbase/wallet-sdk/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@coinbase/wallet-sdk/node_modules/preact": { + "version": "10.16.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.16.0.tgz", + "integrity": "sha512-XTSj3dJ4roKIC93pald6rWuB2qQJO9gO2iLLyTe87MrjQN+HklueLsmskbywEWqCHlclgz3/M4YLL2iBr9UmMA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@cypress/request": { + "version": "2.88.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", + "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@date-io/core": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.16.0.tgz", + "integrity": "sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg==", + "license": "MIT" + }, + "node_modules/@date-io/date-fns": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.16.0.tgz", + "integrity": "sha512-bfm5FJjucqlrnQcXDVU5RD+nlGmL3iWgkHTq3uAZWVIuBu6dDmGa3m8a6zo2VQQpu8ambq9H22UyUpn7590joA==", + "license": "MIT", + "dependencies": { + "@date-io/core": "^2.16.0" + }, + "peerDependencies": { + "date-fns": "^2.0.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + } + } + }, + "node_modules/@date-io/dayjs": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.16.0.tgz", + "integrity": "sha512-y5qKyX2j/HG3zMvIxTobYZRGnd1FUW2olZLS0vTj7bEkBQkjd2RO7/FEwDY03Z1geVGlXKnzIATEVBVaGzV4Iw==", + "license": "MIT", + "dependencies": { + "@date-io/core": "^2.16.0" + }, + "peerDependencies": { + "dayjs": "^1.8.17" + }, + "peerDependenciesMeta": { + "dayjs": { + "optional": true + } + } + }, + "node_modules/@date-io/luxon": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.16.1.tgz", + "integrity": "sha512-aeYp5K9PSHV28946pC+9UKUi/xMMYoaGelrpDibZSgHu2VWHXrr7zWLEr+pMPThSs5vt8Ei365PO+84pCm37WQ==", + "license": "MIT", + "dependencies": { + "@date-io/core": "^2.16.0" + }, + "peerDependencies": { + "luxon": "^1.21.3 || ^2.x || ^3.x" + }, + "peerDependenciesMeta": { + "luxon": { + "optional": true + } + } + }, + "node_modules/@date-io/moment": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.16.1.tgz", + "integrity": "sha512-JkxldQxUqZBfZtsaCcCMkm/dmytdyq5pS1RxshCQ4fHhsvP5A7gSqPD22QbVXMcJydi3d3v1Y8BQdUKEuGACZQ==", + "license": "MIT", + "dependencies": { + "@date-io/core": "^2.16.0" + }, + "peerDependencies": { + "moment": "^2.24.0" + }, + "peerDependenciesMeta": { + "moment": { + "optional": true + } + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", + "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.1", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.1.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache/node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "node_modules/@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.8.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz", + "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/cache": "^11.10.5", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/server": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/@emotion/server/-/server-11.10.0.tgz", + "integrity": "sha512-MTvJ21JPo9aS02GdjFW4nhdwOi2tNNpMmAM/YED0pkxzjDNi5WbiTwXqaCnvLc2Lr8NFtjhT0az1vTJyLIHYcw==", + "license": "MIT", + "dependencies": { + "@emotion/utils": "^1.2.0", + "html-tokenize": "^2.0.0", + "multipipe": "^1.0.2", + "through": "^2.3.8" + }, + "peerDependencies": { + "@emotion/css": "^11.0.0-rc.0" + }, + "peerDependenciesMeta": { + "@emotion/css": { + "optional": true + } + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz", + "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.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" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ethereumjs/common": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.5" + } + }, + "node_modules/@ethereumjs/tx": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bignumber/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.5.0.tgz", + "integrity": "sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.5.0", + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@ethersproject/solidity": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.5.0.tgz", + "integrity": "sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.5.0.tgz", + "integrity": "sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.5.0.tgz", + "integrity": "sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/json-wallets": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", + "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "license": "MIT", + "dependencies": { + "@formatjs/intl-localematcher": "0.2.25", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/ecma402-abstract/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@formatjs/fast-memoize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz", + "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/fast-memoize/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", + "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/icu-skeleton-parser": "1.3.6", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", + "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz", + "integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/intl-localematcher/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/core": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.13", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@keystonehq/base-eth-keyring": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.6.4.tgz", + "integrity": "sha512-pHTqD9CeBdTmeMIVa5ZnK7aMDb5SsHtp4uYRxa+SyYDO3kHcrqhlds43MIx5WFeDrgOStJ11w2Zji+7hbCAZLA==", + "license": "MIT", + "dependencies": { + "@ethereumjs/tx": "3.5.1", + "@keystonehq/bc-ur-registry-eth": "^0.11.4", + "ethereumjs-util": "^7.0.8", + "hdkey": "^2.0.1", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/base-eth-keyring/node_modules/@ethereumjs/tx": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.1.tgz", + "integrity": "sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/common": "^2.6.3", + "ethereumjs-util": "^7.1.4" + } + }, + "node_modules/@keystonehq/bc-ur-registry": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.5.4.tgz", + "integrity": "sha512-z7bZe10I5k0zz9znmDTXh+o3Rzb5XsRVpwAzexubOaLxVdZ0F7aMbe2LoEsw766Hpox/7zARi7UGmLz5C8BAzA==", + "license": "Apache-2.0", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-eth": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.11.4.tgz", + "integrity": "sha512-iXf5hLd0j0VuQdWUh6h7wi5j1PAkH6AGyUr1ZAYMtPflQRW/AzXEOw5GFB3dF5xi8uVoP36gPPnYFBmcFOFzqg==", + "license": "ISC", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.5.0-alpha.5", + "ethereumjs-util": "^7.0.8", + "hdkey": "^2.0.1", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@keystonehq/eth-keyring": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/@keystonehq/eth-keyring/-/eth-keyring-0.14.4.tgz", + "integrity": "sha512-aWEKlPGtmGhZRbkRdj26ilUKs2dG+7ov78gz4F1EqU5ES+ZQud2iIlIFKElNQw3qIDZmcObMwNfL/KcyfPKUYQ==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "3.0.0", + "@keystonehq/base-eth-keyring": "^0.6.4", + "@keystonehq/bc-ur-registry-eth": "^0.11.4", + "@keystonehq/sdk": "^0.12.4", + "@metamask/obs-store": "^7.0.0", + "bs58check": "^2.1.2", + "ethereumjs-util": "^7.0.8", + "hdkey": "^2.0.1", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/eth-keyring/node_modules/@ethereumjs/tx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.0.0.tgz", + "integrity": "sha512-H9tfy6qgYxPXvt1TSObfVmVjlF43OoQqoPQ3PJsG2JiuqaMHj5ettV1pGFEC3FamENDBkl6vD6niQEvIlXv/VQ==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/common": "^2.0.0", + "ethereumjs-util": "^7.0.7" + } + }, + "node_modules/@keystonehq/sdk": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@keystonehq/sdk/-/sdk-0.12.4.tgz", + "integrity": "sha512-vC/O+oSH6g9Hp8WQxd7nO5Xf4Z8q86YWKOZUZsh5ZgfWNVgsy1zGTprc1wGbhMAjkcnWTtreRZUxTOIWJRPNuw==", + "license": "ISC", + "dependencies": { + "@ngraveio/bc-ur": "^1.0.0", + "qrcode.react": "^1.0.1", + "react": "16.13.1", + "react-dom": "16.13.1", + "react-modal": "^3.12.1", + "react-qr-reader": "^2.2.1", + "rxjs": "^6.6.3", + "typescript": "^4.6.2" + } + }, + "node_modules/@keystonehq/sdk/node_modules/qrcode.react": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-1.0.1.tgz", + "integrity": "sha512-8d3Tackk8IRLXTo67Y+c1rpaiXjoz/Dd2HpcMdW//62/x8J1Nbho14Kh8x974t9prsLHN6XqVgcnRiBGFptQmg==", + "license": "ISC", + "dependencies": { + "loose-envify": "^1.4.0", + "prop-types": "^15.6.0", + "qr.js": "0.0.0" + }, + "peerDependencies": { + "react": "^15.5.3 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@keystonehq/sdk/node_modules/react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@keystonehq/sdk/node_modules/react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.13.1" + } + }, + "node_modules/@keystonehq/sdk/node_modules/react-modal": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz", + "integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==", + "license": "MIT", + "dependencies": { + "exenv": "^1.2.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.0", + "warning": "^4.0.3" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", + "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18" + } + }, + "node_modules/@keystonehq/sdk/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@ledgerhq/cryptoassets": { + "version": "7.0.0", + "license": "Apache-2.0", + "dependencies": { + "invariant": "2" + } + }, + "node_modules/@ledgerhq/devices": { + "version": "7.0.5", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/errors": "^6.12.1", + "@ledgerhq/logs": "^6.10.1", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "node_modules/@ledgerhq/errors": { + "version": "6.12.1", + "license": "Apache-2.0" + }, + "node_modules/@ledgerhq/hw-app-eth": { + "version": "6.30.2", + "license": "Apache-2.0", + "dependencies": { + "@ethersproject/abi": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ledgerhq/cryptoassets": "^7.0.0", + "@ledgerhq/errors": "^6.12.1", + "@ledgerhq/hw-transport": "^6.27.8", + "@ledgerhq/hw-transport-mocker": "^6.27.8", + "@ledgerhq/logs": "^6.10.1", + "axios": "^0.26.1", + "bignumber.js": "^9.1.0", + "crypto-js": "^4.1.1" + } + }, + "node_modules/@ledgerhq/hw-transport": { + "version": "6.27.8", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/devices": "^7.0.5", + "@ledgerhq/errors": "^6.12.1", + "events": "^3.3.0" + } + }, + "node_modules/@ledgerhq/hw-transport-mocker": { + "version": "6.27.8", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/hw-transport": "^6.27.8", + "@ledgerhq/logs": "^6.10.1" + } + }, + "node_modules/@ledgerhq/hw-transport-u2f": { + "version": "5.36.0-deprecated", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.36.0-deprecated.tgz", + "integrity": "sha512-T/+mGHIiUK/ZQATad6DMDmobCMZ1mVST952009jKzhaE1Et2Uy2secU+QhRkx3BfEAkvwa0zSRSYCL9d20Iqjg==", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/errors": "^5.34.0", + "@ledgerhq/hw-transport": "^5.34.0", + "@ledgerhq/logs": "^5.30.0", + "u2f-api": "0.2.7" + } + }, + "node_modules/@ledgerhq/hw-transport-u2f/node_modules/@ledgerhq/devices": { + "version": "5.51.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz", + "integrity": "sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/errors": "^5.50.0", + "@ledgerhq/logs": "^5.50.0", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "node_modules/@ledgerhq/hw-transport-u2f/node_modules/@ledgerhq/errors": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz", + "integrity": "sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==", + "license": "Apache-2.0" + }, + "node_modules/@ledgerhq/hw-transport-u2f/node_modules/@ledgerhq/hw-transport": { + "version": "5.51.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz", + "integrity": "sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/devices": "^5.51.1", + "@ledgerhq/errors": "^5.50.0", + "events": "^3.3.0" + } + }, + "node_modules/@ledgerhq/hw-transport-u2f/node_modules/@ledgerhq/logs": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz", + "integrity": "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==", + "license": "Apache-2.0" + }, + "node_modules/@ledgerhq/hw-transport-webusb": { + "version": "6.27.8", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/devices": "^7.0.5", + "@ledgerhq/errors": "^6.12.1", + "@ledgerhq/hw-transport": "^6.27.8", + "@ledgerhq/logs": "^6.10.1" + } + }, + "node_modules/@ledgerhq/logs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1.tgz", + "integrity": "sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==", + "license": "Apache-2.0" + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz", + "integrity": "sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==" + }, + "node_modules/@lit/reactive-element": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", + "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "license": "ISC", + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" + }, + "node_modules/@metamask/obs-store": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@metamask/obs-store/-/obs-store-7.0.0.tgz", + "integrity": "sha512-Tr61Uu9CGXkCg5CZwOYRMQERd+y6fbtrtLd/PzDTPHO5UJpmSbU+7MPcQK7d1DwZCOCeCIvhmZSUCvYliC8uGw==", + "license": "ISC", + "dependencies": { + "@metamask/safe-event-emitter": "^2.0.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/obs-store/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/@metamask/safe-event-emitter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", + "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==", + "license": "ISC" + }, + "node_modules/@metamask/utils": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-3.6.0.tgz", + "integrity": "sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==", + "dependencies": { + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "semver": "^7.3.8", + "superstruct": "^1.0.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@metamask/utils/node_modules/superstruct": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", + "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@motionone/animation": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz", + "integrity": "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==", + "dependencies": { + "@motionone/easing": "^10.15.1", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/animation/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/@motionone/dom": { + "version": "10.16.2", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.16.2.tgz", + "integrity": "sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==", + "dependencies": { + "@motionone/animation": "^10.15.1", + "@motionone/generators": "^10.15.1", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/dom/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/@motionone/easing": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz", + "integrity": "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==", + "dependencies": { + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/easing/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/@motionone/generators": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz", + "integrity": "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==", + "dependencies": { + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/generators/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/@motionone/svelte": { + "version": "10.16.2", + "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.16.2.tgz", + "integrity": "sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==", + "dependencies": { + "@motionone/dom": "^10.16.2", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/svelte/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/@motionone/types": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz", + "integrity": "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==" + }, + "node_modules/@motionone/utils": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz", + "integrity": "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==", + "dependencies": { + "@motionone/types": "^10.15.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/utils/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/@motionone/vue": { + "version": "10.16.2", + "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.2.tgz", + "integrity": "sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==", + "dependencies": { + "@motionone/dom": "^10.16.2", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/vue/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.10", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.10.tgz", + "integrity": "sha512-moTAhGwFfQffj7hsu61FnqcGqVcd53A1CrOhnskM9TF0Uh2rnLDMCuar4JRUWWpaJofAfQEbQBBFPadFQLI4PA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@emotion/is-prop-valid": "^1.2.1", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@mui/base/node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@mui/base/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/base/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.4.tgz", + "integrity": "sha512-pW2XghSi3hpYKX57Wu0SCWMTSpzvXZmmucj3TcOJWaCiFt4xr05w2gcwBZi36dAp9uvd9//9N51qbblmnD+GPg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.14.3", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.3.tgz", + "integrity": "sha512-XkxWPhageu1OPUm2LWjo5XqeQ0t2xfGe8EiLkRW9oz2LHMMZmijvCxulhgquUVTF1DnoSh+3KoDLSsoAFtVNVw==", + "dependencies": { + "@babel/runtime": "^7.22.6" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/icons-material/node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@mui/icons-material/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/@mui/material": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.4.tgz", + "integrity": "sha512-2XUV3KyRC07BQPPzEgd+ss3x/ezXtHeKtOGCMCNmx3MauZojPYUpSwFkE0fYgYCD9dMQMVG4DY/VF38P0KShsg==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/base": "5.0.0-beta.10", + "@mui/core-downloads-tracker": "^5.14.4", + "@mui/system": "^5.14.4", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "@types/react-transition-group": "^4.4.6", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@mui/material/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/material/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/@mui/private-theming": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.4.tgz", + "integrity": "sha512-ISXsHDiQ3z1XA4IuKn+iXDWvDjcz/UcQBiFZqtdoIsEBt8CB7wgdQf3LwcwqO81dl5ofg/vNQBEnXuKfZHrnYA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/utils": "^5.14.4", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming/node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@mui/private-theming/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/@mui/styled-engine": { + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz", + "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine/node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@mui/styled-engine/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/@mui/system": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.4.tgz", + "integrity": "sha512-oPgfWS97QNfHcDBapdkZIs4G5i85BJt69Hp6wbXF6s7vi3Evcmhdk8AbCRW6n0sX4vTj8oe0mh0RIm1G2A1KDA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/private-theming": "^5.14.4", + "@mui/styled-engine": "^5.13.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/system/node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@mui/system/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/system/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/@mui/types": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz", + "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==", + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.4.tgz", + "integrity": "sha512-4ANV0txPD3x0IcTCSEHKDWnsutg1K3m6Vz5IckkbLXVYu17oOZCVUdOKsb/txUmaCd0v0PmSRe5PW+Mlvns5dQ==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@types/prop-types": "^15.7.5", + "@types/react-is": "^18.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@mui/utils/node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@mui/utils/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/@mui/x-date-pickers": { + "version": "5.0.20", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.20.tgz", + "integrity": "sha512-ERukSeHIoNLbI1C2XRhF9wRhqfsr+Q4B1SAw2ZlU7CWgcG8UBOxgqRKDEOVAIoSWL+DWT6GRuQjOKvj6UXZceA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@date-io/core": "^2.15.0", + "@date-io/date-fns": "^2.15.0", + "@date-io/dayjs": "^2.15.0", + "@date-io/luxon": "^2.15.0", + "@date-io/moment": "^2.15.0", + "@mui/utils": "^5.10.3", + "@types/react-transition-group": "^4.4.5", + "clsx": "^1.2.1", + "prop-types": "^15.7.2", + "react-transition-group": "^4.4.5", + "rifm": "^0.12.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.4.1", + "@mui/system": "^5.4.1", + "date-fns": "^2.25.0", + "dayjs": "^1.10.7", + "luxon": "^1.28.0 || ^2.0.0 || ^3.0.0", + "moment": "^2.29.1", + "react": "^17.0.2 || ^18.0.0", + "react-dom": "^17.0.2 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } + } + }, + "node_modules/@next/bundle-analyzer": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-13.4.13.tgz", + "integrity": "sha512-XygyFn3V61vF9LkU1zM6GlAMp8h7FbApaLA40anMGhZtQt/0S1tGSNImv9T/Z3ZTbWIQTcbYxyHIM6Fv/uSGrA==", + "dev": true, + "dependencies": { + "webpack-bundle-analyzer": "4.7.0" + } + }, + "node_modules/@next/env": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.0.tgz", + "integrity": "sha512-/FCkDpL/8SodJEXvx/DYNlOD5ijTtkozf4PPulYPtkPOJaMPpBSOkzmsta4fnrnbdH6eZjbwbiXFdr6gSQCV4w==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.1.tgz", + "integrity": "sha512-SBrOFS8PC3nQ5aeZmawJkjKkWjwK9RoxvBSv/86nZp0ubdoVQoko8r8htALd9ufp16NhacCdqhu9bzZLDWtALQ==", + "dev": true, + "dependencies": { + "glob": "7.1.7" + } + }, + "node_modules/@next/eslint-plugin-next/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.0.tgz", + "integrity": "sha512-x5U5gJd7ZvrEtTFnBld9O2bUlX8opu7mIQUqRzj7KeWzBwPhrIzTTsQXAiNqsaMuaRPvyHBVW/5d/6g6+89Y8g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngraveio/bc-ur": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@ngraveio/bc-ur/-/bc-ur-1.1.6.tgz", + "integrity": "sha512-G+2XgjXde2IOcEQeCwR250aS43/Swi7gw0FuETgJy2c3HqF8f88SXDMsIGgJlZ8jXd0GeHR4aX0MfjXf523UZg==", + "license": "MIT", + "dependencies": { + "@apocentre/alias-sampling": "^0.5.3", + "assert": "^2.0.0", + "bignumber.js": "^9.0.1", + "cbor-sync": "^1.0.4", + "crc": "^3.8.0", + "jsbi": "^3.1.5", + "sha.js": "^2.4.11" + } + }, + "node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", + "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@noble/secp256k1": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@openzeppelin/contracts": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.3.tgz", + "integrity": "sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg==", + "dev": true + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@reduxjs/toolkit": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz", + "integrity": "sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==", + "dependencies": { + "immer": "^9.0.21", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.8" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.0.2" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", + "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@safe-global/safe-apps-sdk": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.11.0.tgz", + "integrity": "sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A==", + "dependencies": { + "@safe-global/safe-gateway-typescript-sdk": "^3.5.3", + "ethers": "^5.7.2" + } + }, + "node_modules/@safe-global/safe-core-sdk": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@safe-global/safe-core-sdk/-/safe-core-sdk-3.3.4.tgz", + "integrity": "sha512-tgcK7VWo66Z8632xaYDzUHQ8InPOaI10ELk1wCrO/C3QjPwxjIozbMGOMzF4RZPCSJX2YAHowAvOgmEukgSkxA==", + "dependencies": { + "@ethersproject/solidity": "^5.7.0", + "@safe-global/safe-core-sdk-types": "^1.9.2", + "@safe-global/safe-core-sdk-utils": "^1.7.4", + "@safe-global/safe-deployments": "^1.25.0", + "ethereumjs-util": "^7.1.5", + "semver": "^7.3.8", + "web3-utils": "^1.8.1" + } + }, + "node_modules/@safe-global/safe-core-sdk-types": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-1.10.1.tgz", + "integrity": "sha512-BKvuYTLOlY16Rq6qCXglmnL6KxInDuXMFqZMaCzwDKiEh+uoHu3xCumG5tVtWOkCgBF4XEZXMqwZUiLcon7IsA==", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@safe-global/safe-deployments": "^1.20.2", + "web3-core": "^1.8.1", + "web3-utils": "^1.8.1" + } + }, + "node_modules/@safe-global/safe-core-sdk-types/node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@safe-global/safe-core-sdk-utils": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@safe-global/safe-core-sdk-utils/-/safe-core-sdk-utils-1.7.4.tgz", + "integrity": "sha512-ITocwSWlFUA1K9VMP/eJiMfgbP/I9qDxAaFz7ukj5N5NZD3ihVQZkmqML6hjse5UhrfjCnfIEcLkNZhtB2XC2Q==", + "dependencies": { + "@safe-global/safe-core-sdk-types": "^1.9.2", + "semver": "^7.3.8", + "web3-utils": "^1.8.1" + } + }, + "node_modules/@safe-global/safe-core-sdk/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@safe-global/safe-deployments": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.26.0.tgz", + "integrity": "sha512-Tw89O4/paT19ieMoiWQbqRApb0Bef/DxweS9rxodXAM5EQModkbyFXGZca+YxXE67sLvWjLr2jJUOxwze8mhGw==", + "dependencies": { + "semver": "^7.3.7" + } + }, + "node_modules/@safe-global/safe-ethers-lib": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@safe-global/safe-ethers-lib/-/safe-ethers-lib-1.9.4.tgz", + "integrity": "sha512-WhzcmNun0s0VxeVQKRqaapV0vEpdm76zZBR2Du+S+58u1r57OjZkOSL2Gru0tdwkt3FIZZtE3OhDu09M70pVkA==", + "dependencies": { + "@safe-global/safe-core-sdk-types": "^1.9.2", + "@safe-global/safe-core-sdk-utils": "^1.7.4", + "ethers": "5.7.2" + } + }, + "node_modules/@safe-global/safe-gateway-typescript-sdk": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.8.0.tgz", + "integrity": "sha512-CiGWIHgIaOdICpDxp05Jw3OPslWTu8AnL0PhrCT1xZgIO86NlMMLzkGbeycJ4FHpTjA999O791Oxp4bZPIjgHA==", + "dependencies": { + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@safe-global/safe-modules-deployments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-modules-deployments/-/safe-modules-deployments-1.1.0.tgz", + "integrity": "sha512-UgSH/7Zcv6BJBBqoipKts6SKCPYPau9F1/arndsBYvb5Ayn28Q9cu/yiRbln2iI4VL21SIl9lcO/zRKJKl7QbQ==" + }, + "node_modules/@safe-global/safe-react-components": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@safe-global/safe-react-components/-/safe-react-components-2.0.6.tgz", + "integrity": "sha512-KCo/zf+xcBlXhcROQbyyscsfOExLV1dTQBoKrB2zluwQOQjbsKZu3qOpnIgU/94yHATm38IOJdC8snv6fQQe0A==", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "ethereum-blockies-base64": "^1.0.2" + }, + "peerDependencies": { + "@mui/material": "5.x.x", + "react": "17.x.x || 18.x.x", + "react-dom": "17.x.x || 18.x.x" + } + }, + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@scure/bip32": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz", + "integrity": "sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.1.1", + "@noble/secp256k1": "~1.6.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip39": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", + "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.1.1", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@sentry-internal/tracing": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.62.0.tgz", + "integrity": "sha512-LHT8i2c93JhQ1uBU1cqb5AIhmHPWlyovE4ZQjqEizk6Fk7jXc9L8kKhaIWELVPn8Xg6YtfGWhRBZk3ssj4JpfQ==", + "dependencies": { + "@sentry/core": "7.62.0", + "@sentry/types": "7.62.0", + "@sentry/utils": "7.62.0", + "tslib": "^2.4.1 || ^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/browser": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.62.0.tgz", + "integrity": "sha512-e52EPiRtPTZv+9iFIZT3n8qNozc8ymqT0ra7QwkwbVuF9fWSCOc1gzkTa9VKd/xwcGzOfglozl2O+Zz4GtoGUg==", + "dependencies": { + "@sentry-internal/tracing": "7.62.0", + "@sentry/core": "7.62.0", + "@sentry/replay": "7.62.0", + "@sentry/types": "7.62.0", + "@sentry/utils": "7.62.0", + "tslib": "^2.4.1 || ^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/core": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.62.0.tgz", + "integrity": "sha512-l6n+c3mSlWa+FhT/KBrAU1BtbaLYCljf5MuGlH6NKRpnBcrZCbzk8ZuFcSND+gr2SqxycQkhEWX1zxVHPDdZxw==", + "dependencies": { + "@sentry/types": "7.62.0", + "@sentry/utils": "7.62.0", + "tslib": "^2.4.1 || ^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/react": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.62.0.tgz", + "integrity": "sha512-jCQEs6lYGQdqj6XXWdR+i5IzJMgrSzTFI/TSMSeTdAeldmppg7uuRuJlBJGaWsxoiwed539Vn3kitRswn1ugeA==", + "dependencies": { + "@sentry/browser": "7.62.0", + "@sentry/types": "7.62.0", + "@sentry/utils": "7.62.0", + "hoist-non-react-statics": "^3.3.2", + "tslib": "^2.4.1 || ^1.9.3" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": "15.x || 16.x || 17.x || 18.x" + } + }, + "node_modules/@sentry/replay": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.62.0.tgz", + "integrity": "sha512-mSbqtV6waQAvWTG07uR211jft63HduRXdHq+1xuaKulDcZ9chOkYqOCMpL0HjRIANEiZRTDDKlIo4s+3jkY5Ug==", + "dependencies": { + "@sentry/core": "7.62.0", + "@sentry/types": "7.62.0", + "@sentry/utils": "7.62.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry/tracing": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.62.0.tgz", + "integrity": "sha512-3QuThslt43m6Ui4AVAVCjlfQYeRhlRJJpFDrQd60WfRWXEeTr00VSRmIDfPUKmBFBDiXK+xXjTb/uMUM3ZeDOg==", + "dependencies": { + "@sentry-internal/tracing": "7.62.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/types": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.62.0.tgz", + "integrity": "sha512-oPy/fIT3o2VQWLTq01R2W/jt13APYMqZCVa0IT3lF9lgxzgfTbeZl3nX2FgCcc8ntDZC0dVw03dL+wLvjPqQpQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.62.0.tgz", + "integrity": "sha512-12w+Lpvn2iaocgjf6AxhtBz7XG8iFE5aMyt9BTuQp1/7sOjtEVNHlDlGrHbtPqxNCmL2SEcmNHka1panLqWHDw==", + "dependencies": { + "@sentry/types": "7.62.0", + "tslib": "^2.4.1 || ^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@solana/buffer-layout": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "dependencies": { + "buffer": "~6.0.3" + }, + "engines": { + "node": ">=5.10" + } + }, + "node_modules/@solana/buffer-layout/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@solana/web3.js": { + "version": "1.78.3", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.78.3.tgz", + "integrity": "sha512-qhpnyIlrj/4Czw1dBFZK6KgZBk5FwuJhvMl0C7m94jhl90yDC8b6w4svKwPjhB+OOrdQAzHyRp0+ocEs/Liw7w==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@noble/curves": "^1.0.0", + "@noble/hashes": "^1.3.0", + "@solana/buffer-layout": "^4.0.0", + "agentkeepalive": "^4.3.0", + "bigint-buffer": "^1.1.5", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.3", + "fast-stable-stringify": "^1.0.0", + "jayson": "^4.1.0", + "node-fetch": "^2.6.12", + "rpc-websockets": "^7.5.1", + "superstruct": "^0.14.2" + } + }, + "node_modules/@solana/web3.js/node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@solana/web3.js/node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@solana/web3.js/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/@solana/web3.js/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@solana/web3.js/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/@stablelib/aead": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz", + "integrity": "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==" + }, + "node_modules/@stablelib/binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", + "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", + "dependencies": { + "@stablelib/int": "^1.0.1" + } + }, + "node_modules/@stablelib/bytes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", + "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" + }, + "node_modules/@stablelib/chacha": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz", + "integrity": "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/chacha20poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz", + "integrity": "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==", + "dependencies": { + "@stablelib/aead": "^1.0.1", + "@stablelib/binary": "^1.0.1", + "@stablelib/chacha": "^1.0.1", + "@stablelib/constant-time": "^1.0.1", + "@stablelib/poly1305": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", + "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" + }, + "node_modules/@stablelib/ed25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", + "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", + "dependencies": { + "@stablelib/random": "^1.0.2", + "@stablelib/sha512": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/hash": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", + "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" + }, + "node_modules/@stablelib/hkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz", + "integrity": "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==", + "dependencies": { + "@stablelib/hash": "^1.0.1", + "@stablelib/hmac": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/hmac": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz", + "integrity": "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==", + "dependencies": { + "@stablelib/constant-time": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/int": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", + "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" + }, + "node_modules/@stablelib/keyagreement": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", + "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", + "dependencies": { + "@stablelib/bytes": "^1.0.1" + } + }, + "node_modules/@stablelib/poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", + "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", + "dependencies": { + "@stablelib/constant-time": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/random": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", + "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/sha256": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz", + "integrity": "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/sha512": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", + "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/wipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", + "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" + }, + "node_modules/@stablelib/x25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", + "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", + "dependencies": { + "@stablelib/keyagreement": "^1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", + "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz", + "integrity": "sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz", + "integrity": "sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", + "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", + "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", + "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", + "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", + "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", + "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", + "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", + "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.0", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", + "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", + "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", + "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-constant-elements": "^7.18.12", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@svgr/core": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "@svgr/plugin-svgo": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@swc/helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.2.tgz", + "integrity": "sha512-556Az0VX7WR6UdoTn4htt/l3zPQ7bsQWK+HqdG4swV7beUCxo/BqmvbOpUkTIm/9ih86LIf1qsUnywNL3obGHw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@swc/helpers/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@testing-library/cypress": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/@testing-library/cypress/-/cypress-8.0.7.tgz", + "integrity": "sha512-3HTV725rOS+YHve/gD9coZp/UcPK5xhr4H0GMnq/ni6USdtzVtSOG9WBFtd8rYnrXk8rrGD+0toRFYouJNIG0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@testing-library/dom": "^8.1.0" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "cypress": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz", + "integrity": "sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^5.0.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.4.4", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.16.5", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", + "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@testing-library/user-event": { + "version": "14.4.3", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.4.3.tgz", + "integrity": "sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@trezor/analytics": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@trezor/analytics/-/analytics-1.0.3.tgz", + "integrity": "sha512-7a0bHkY/+z6cDRoh1ZkhffHGw7iaVayD1UpP3fm4lPzrRpGQeH9ksRg8ZT0mBs6Pj+TLETzZRrS5ZBpDK0Piug==", + "dependencies": { + "@trezor/utils": "9.0.9" + } + }, + "node_modules/@trezor/blockchain-link": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link/-/blockchain-link-2.1.13.tgz", + "integrity": "sha512-5yRvP8cFKjYd3FBRmUS6VJxHRLm8IuQg237hcRF8RbYRgW6ev7dwkjYmcVYz2iWXGaz+/FV8G0/xB/pmHhrpPQ==", + "dependencies": { + "@trezor/blockchain-link-types": "1.0.2", + "@trezor/blockchain-link-utils": "1.0.3", + "@trezor/utils": "9.0.9", + "@trezor/utxo-lib": "1.0.7", + "@types/web": "^0.0.99", + "bignumber.js": "^9.1.1", + "events": "^3.3.0", + "ripple-lib": "^1.10.1", + "socks-proxy-agent": "6.1.1", + "ws": "7.5.9" + } + }, + "node_modules/@trezor/blockchain-link-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-types/-/blockchain-link-types-1.0.2.tgz", + "integrity": "sha512-ON3A2Anu5k3BkMFtG0LWO48ZxikyWgSORqQ12ki3KDbTbqZV5BwAZTeFchUq8cv1kDlqkG7AtMV2nY9G3KfYOA==" + }, + "node_modules/@trezor/blockchain-link-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.0.3.tgz", + "integrity": "sha512-/mti1QY8n053P11wQwnQyBAASS+nNVBKu2kSZo8KAESwdnFGcnZwH0okXHTlUQZFud5ppg9EYJk9mpk0jf91tQ==", + "dependencies": { + "@trezor/utils": "9.0.8", + "bignumber.js": "^9.1.1" + } + }, + "node_modules/@trezor/blockchain-link-utils/node_modules/@trezor/utils": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@trezor/utils/-/utils-9.0.8.tgz", + "integrity": "sha512-XsX+VXP2UxanYo+LbY7zcjeIumEWFs5lArTAfK1fdWTIdiV8Od2htNO+D9lnCytvuu04LeJx7RihxinsQQVDvA==" + }, + "node_modules/@trezor/blockchain-link/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@trezor/connect": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/@trezor/connect/-/connect-9.0.11.tgz", + "integrity": "sha512-8fifMt3xtqIQ4122aHNb8e3l0uisVujsWXUJ/LQS6N+t6SnilohBZ8nfzUBQaCxo2JuorLuXmxQ1ngNpaL45TA==", + "dependencies": { + "@trezor/blockchain-link": "2.1.13", + "@trezor/connect-analytics": "1.0.2", + "@trezor/connect-common": "0.0.16", + "@trezor/transport": "1.1.12", + "@trezor/utils": "9.0.9", + "@trezor/utxo-lib": "1.0.7", + "bignumber.js": "^9.1.1", + "blakejs": "^1.2.1", + "cross-fetch": "^3.1.6", + "events": "^3.3.0", + "randombytes": "2.1.0", + "tslib": "2.5.2" + } + }, + "node_modules/@trezor/connect-analytics": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@trezor/connect-analytics/-/connect-analytics-1.0.2.tgz", + "integrity": "sha512-eUAWb1nc5wGAKmNVTmiOc9DlFr+mbG+1JevzVUFB2q3VLQzcjf0st+RWE5DuDnPUVJiJFxBQWTqWlzACtq/HzQ==", + "dependencies": { + "@trezor/analytics": "1.0.3" + } + }, + "node_modules/@trezor/connect-common": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@trezor/connect-common/-/connect-common-0.0.16.tgz", + "integrity": "sha512-DPGWhNYTe8SQO/XzqvVtY5YCOtRGHChN01J2Z5p3xD6aFGceou7SE0ROOcqU0ceSzMgl13+I9I0qXq/OLTGBGw==", + "dependencies": { + "@trezor/env-utils": "1.0.2" + } + }, + "node_modules/@trezor/connect-web": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/@trezor/connect-web/-/connect-web-9.0.11.tgz", + "integrity": "sha512-9398lmzxPGm/aZGM9OvkjasQ4kUQQs5bYz79eDtFz3jf24SyMM1yf2KvdvdssIyIfvcAbyJLZ+DK1qw2HxWn/Q==", + "dependencies": { + "@trezor/connect": "9.0.11", + "@trezor/utils": "9.0.9", + "events": "^3.3.0" + } + }, + "node_modules/@trezor/connect/node_modules/tslib": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + }, + "node_modules/@trezor/env-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@trezor/env-utils/-/env-utils-1.0.2.tgz", + "integrity": "sha512-fPrX6EjaMHnRwAje7h2H3Qgu5/sBoewE8441j8cbBzxfJRgRuQJYZaGCy7lDALjxEwp7g02ZZ/FWavIhWGZIcQ==", + "dependencies": { + "ua-parser-js": "^1.0.34" + } + }, + "node_modules/@trezor/transport": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@trezor/transport/-/transport-1.1.12.tgz", + "integrity": "sha512-RInOSOmgJ383QOBJbPzjyQW9BoWZ6HTneUmPkdzqydLxn9eyD3Ui13+W9fWFmxoMmljxJKct93twgxgHKUkhCg==", + "dependencies": { + "@trezor/utils": "9.0.9", + "bytebuffer": "^5.0.1", + "json-stable-stringify": "^1.0.2", + "long": "^4.0.0", + "prettier": "2.8.7", + "protobufjs": "6.11.3" + } + }, + "node_modules/@trezor/utils": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@trezor/utils/-/utils-9.0.9.tgz", + "integrity": "sha512-+jzHy+YG3zJsnB11YfudT1a5u5lcwNX/tKoW9VmPU+isuW725M6uUOL+MSgW1aHucCJPyBAp0XUUssLE/ifqBw==" + }, + "node_modules/@trezor/utxo-lib": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@trezor/utxo-lib/-/utxo-lib-1.0.7.tgz", + "integrity": "sha512-brC5xqGgT6yloHz3RWUK1CdEYkOSEjrhYM18GAzAaqS4MBULWDBPDD5Qt2XcYTOaoR/+8PKUXHdHVm+olbRSlA==", + "dependencies": { + "@trezor/utils": "9.0.9", + "bchaddrjs": "^0.5.2", + "bech32": "^2.0.0", + "bip66": "^1.1.5", + "bitcoin-ops": "^1.4.1", + "blake-hash": "^2.0.0", + "blakejs": "^1.2.1", + "bn.js": "^5.2.1", + "bs58": "^5.0.0", + "bs58check": "^3.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "int64-buffer": "^1.0.1", + "pushdata-bitcoin": "^1.0.1", + "tiny-secp256k1": "^1.1.6", + "typeforce": "^1.18.0", + "varuint-bitcoin": "^1.1.2", + "wif": "^2.0.6" + } + }, + "node_modules/@trezor/utxo-lib/node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@trezor/utxo-lib/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "node_modules/@trezor/utxo-lib/node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + }, + "node_modules/@trezor/utxo-lib/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/@trezor/utxo-lib/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@trezor/utxo-lib/node_modules/bs58check": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", + "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bs58": "^5.0.0" + } + }, + "node_modules/@truffle/hdwallet": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@truffle/hdwallet/-/hdwallet-0.1.3.tgz", + "integrity": "sha512-kuikvLE+4WvVIj91CSrRVN92QGh+1Vlx8PRkxKQlvZjjE3J5NmvwfAs7b9poTeC4c6YfoHqwike1kfd1qYXO1w==", + "dependencies": { + "ethereum-cryptography": "1.1.2", + "keccak": "3.0.2", + "secp256k1": "4.0.3" + } + }, + "node_modules/@truffle/hdwallet-provider": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-2.1.13.tgz", + "integrity": "sha512-wh93LLumxH8+pPY11DrsNVHjSO3AqMkwPNAWqEi0hRw2BH4QzDhEf2G88GDWJPZPY/zGFSxYHDACtJmUUfRwYw==", + "dependencies": { + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "@metamask/eth-sig-util": "4.0.1", + "@truffle/hdwallet": "^0.1.3", + "@types/ethereum-protocol": "^1.0.0", + "@types/web3": "1.0.20", + "@types/web3-provider-engine": "^14.0.0", + "ethereum-cryptography": "1.1.2", + "ethereum-protocol": "^1.0.1", + "ethereumjs-util": "^7.1.5", + "web3": "1.10.0", + "web3-provider-engine": "16.0.3" + } + }, + "node_modules/@truffle/hdwallet-provider/node_modules/@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@truffle/hdwallet-provider/node_modules/ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" + } + }, + "node_modules/@truffle/hdwallet/node_modules/@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@truffle/hdwallet/node_modules/ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", + "dependencies": { + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.12.3.tgz", + "integrity": "sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.7", + "minimatch": "^3.0.4", + "mkdirp": "^1.0.4", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typechain/ethers-v5": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz", + "integrity": "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "@ethersproject/abi": "^5.0.0", + "@ethersproject/providers": "^5.0.0", + "ethers": "^5.1.3", + "typechain": "^8.1.1", + "typescript": ">=4.3.0" + } + }, + "node_modules/@types/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", + "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "license": "MIT" + }, + "node_modules/@types/ethereum-protocol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/ethereum-protocol/-/ethereum-protocol-1.0.2.tgz", + "integrity": "sha512-Ri/hwt4UckZlF7eqhhAQcXsNvcgQmSJOKZteLco1/5NsRcneW/cJuQcrQNILN2Ohs9WUQjeGW3ZRRNqkEVMzuQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "7.2.1" + } + }, + "node_modules/@types/ethereum-protocol/node_modules/bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "license": "MIT", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "28.1.8", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.8.tgz", + "integrity": "sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^28.0.0", + "pretty-format": "^28.0.0" + } + }, + "node_modules/@types/js-cookie": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.2.tgz", + "integrity": "sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsdom": { + "version": "16.2.15", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz", + "integrity": "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/parse5": "^6.0.3", + "@types/tough-cookie": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.191", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==", + "license": "MIT" + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "node_modules/@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + }, + "node_modules/@types/papaparse": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.5.tgz", + "integrity": "sha512-R1icl/hrJPFRpuYj9PVG03WBAlghJj4JW9Py5QdR8FFSxaLmZRyu7xYDCCBZIJNfUv3MYaeBbhBoX958mUTAaw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "license": "MIT" + }, + "node_modules/@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-0VLab/pcLTLcfbxi6THSIMVYcw9hEUBGvjwwaGpW77mMgRXfGF+a76t7BxTGyLh1y68tBvrffp8UWnqvm76+yg==", + "dev": true, + "dependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@types/postcss-modules-scope": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.1.tgz", + "integrity": "sha512-LNkp3c4ML9EQj2dgslp4i80Jxj72YK3HjYzrTn6ftUVylW1zaKFGqrMlNIyqBmPWmIhZ/Y5r0Y4T49Hk1IuDUg==", + "dev": true, + "dependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "license": "MIT" + }, + "node_modules/@types/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/react": { + "version": "18.0.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", + "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", + "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", + "devOptional": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-gtm-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/react-gtm-module/-/react-gtm-module-2.0.1.tgz", + "integrity": "sha512-T/DN9gAbCYk5wJ1nxf4pSwmXz4d1iVjM++OoG+mwMfz9STMAotGjSb65gJHOS5bPvl6vLSsJnuC+y/43OQrltg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react-is": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.1.tgz", + "integrity": "sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-qr-reader": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/react-qr-reader/-/react-qr-reader-2.1.4.tgz", + "integrity": "sha512-2Hq+UNfsO2TVqxbFlOE0gGhQr/+C4wdgNDaaLV8K93mK/Z7Vw2D3YbMlnJAaSzM45fUtYJs0vc48wV04+OEkiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "license": "MIT" + }, + "node_modules/@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.5", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz", + "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/@jest/expect-utils": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz", + "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.2.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/@jest/schemas": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/@jest/types": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", + "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.0.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/@types/jest": { + "version": "29.2.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.4.tgz", + "integrity": "sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/diff-sequences": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz", + "integrity": "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/expect": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz", + "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.3.1", + "jest-get-type": "^29.2.0", + "jest-matcher-utils": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/jest-diff": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz", + "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/jest-get-type": { + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/jest-matcher-utils": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz", + "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/jest-message-util": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", + "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.3.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/jest-util": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", + "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.3.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/testing-library__jest-dom/node_modules/pretty-format": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", + "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", + "license": "MIT" + }, + "node_modules/@types/underscore": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz", + "integrity": "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==", + "license": "MIT" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", + "license": "MIT" + }, + "node_modules/@types/web": { + "version": "0.0.99", + "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.99.tgz", + "integrity": "sha512-xMz3tOvtkZzc7RpQrDNiLe5sfMmP+fz8bOxHIZ/U8qXyvzDX4L4Ss1HCjor/O9DSelba+1iXK1VM7lruX28hiQ==" + }, + "node_modules/@types/web3": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.0.20.tgz", + "integrity": "sha512-KTDlFuYjzCUlBDGt35Ir5QRtyV9klF84MMKUsEJK10sTWga/71V+8VYLT7yysjuBjaOx2uFYtIWNGoz3yrNDlg==", + "license": "MIT", + "dependencies": { + "@types/bn.js": "*", + "@types/underscore": "*" + } + }, + "node_modules/@types/web3-provider-engine": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@types/web3-provider-engine/-/web3-provider-engine-14.0.1.tgz", + "integrity": "sha512-SaAfLJY/40wKFDsNFwaNfwqFSL6kVhTx9JD18qM+Gaw1qdAXLYF/6E7TIqWEdoG4so6fki/zxURP5NsoCePYJw==", + "license": "MIT", + "dependencies": { + "@types/ethereum-protocol": "*" + } + }, + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.17", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.17.tgz", + "integrity": "sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.47.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.47.0", + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/typescript-estree": "5.47.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.47.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/visitor-keys": "5.47.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.47.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.47.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/visitor-keys": "5.47.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.47.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.47.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@walletconnect/browser-utils": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz", + "integrity": "sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/safe-json": "1.0.0", + "@walletconnect/types": "^1.8.0", + "@walletconnect/window-getters": "1.0.0", + "@walletconnect/window-metadata": "1.0.0", + "detect-browser": "5.2.0" + } + }, + "node_modules/@walletconnect/client": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/client/-/client-1.8.0.tgz", + "integrity": "sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/core": "^1.8.0", + "@walletconnect/iso-crypto": "^1.8.0", + "@walletconnect/types": "^1.8.0", + "@walletconnect/utils": "^1.8.0" + } + }, + "node_modules/@walletconnect/core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-1.8.0.tgz", + "integrity": "sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/socket-transport": "^1.8.0", + "@walletconnect/types": "^1.8.0", + "@walletconnect/utils": "^1.8.0" + } + }, + "node_modules/@walletconnect/crypto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@walletconnect/crypto/-/crypto-1.0.3.tgz", + "integrity": "sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==", + "license": "MIT", + "dependencies": { + "@walletconnect/encoding": "^1.0.2", + "@walletconnect/environment": "^1.0.1", + "@walletconnect/randombytes": "^1.0.3", + "aes-js": "^3.1.2", + "hash.js": "^1.1.7", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/crypto/node_modules/aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", + "license": "MIT" + }, + "node_modules/@walletconnect/encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/encoding/-/encoding-1.0.2.tgz", + "integrity": "sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==", + "license": "MIT", + "dependencies": { + "is-typedarray": "1.0.0", + "tslib": "1.14.1", + "typedarray-to-buffer": "3.1.5" + } + }, + "node_modules/@walletconnect/environment": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz", + "integrity": "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==", + "license": "MIT", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/ethereum-provider": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.8.4.tgz", + "integrity": "sha512-z7Yz4w8t3eEFv8vQ8DLCgDWPah2aIIyC0iQdwhXgJenQTVuz7JJZRrJUUntzudipHK/owA394c1qTPF0rsMSeQ==", + "dependencies": { + "@walletconnect/jsonrpc-http-connection": "^1.0.7", + "@walletconnect/jsonrpc-provider": "^1.0.13", + "@walletconnect/jsonrpc-types": "^1.0.3", + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/sign-client": "2.8.4", + "@walletconnect/types": "2.8.4", + "@walletconnect/universal-provider": "2.8.4", + "@walletconnect/utils": "2.8.4", + "events": "^3.3.0" + }, + "peerDependencies": { + "@walletconnect/modal": ">=2" + }, + "peerDependenciesMeta": { + "@walletconnect/modal": { + "optional": true + } + } + }, + "node_modules/@walletconnect/ethereum-provider/node_modules/@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/ethereum-provider/node_modules/@walletconnect/types": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.8.4.tgz", + "integrity": "sha512-Fgqe87R7rjMOGSvx28YPLTtXM6jj+oUOorx8cE+jEw2PfpWp5myF21aCdaMBR39h0QHij5H1Z0/W9e7gm4oC1Q==", + "dependencies": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/keyvaluestorage": "^1.0.2", + "@walletconnect/logger": "^2.0.1", + "events": "^3.3.0" + } + }, + "node_modules/@walletconnect/ethereum-provider/node_modules/@walletconnect/utils": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.8.4.tgz", + "integrity": "sha512-NGw6BINYNeT9JrQrnxldAPheO2ymRrwGrgfExZMyrkb1MShnIX4nzo4KirKInM4LtrY6AA/v0Lu3ooUdfO+xIg==", + "dependencies": { + "@stablelib/chacha20poly1305": "1.0.1", + "@stablelib/hkdf": "1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "1.0.1", + "@stablelib/x25519": "^1.0.3", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.8.4", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "^3.1.0" + } + }, + "node_modules/@walletconnect/ethereum-provider/node_modules/@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/ethereum-provider/node_modules/@walletconnect/window-metadata": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", + "dependencies": { + "@walletconnect/window-getters": "^1.0.1", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/ethereum-provider/node_modules/detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "node_modules/@walletconnect/ethereum-provider/node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@walletconnect/events": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz", + "integrity": "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==", + "dependencies": { + "keyvaluestorage-interface": "^1.0.0", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/heartbeat": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz", + "integrity": "sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==", + "dependencies": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/iso-crypto": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz", + "integrity": "sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/crypto": "^1.0.2", + "@walletconnect/types": "^1.8.0", + "@walletconnect/utils": "^1.8.0" + } + }, + "node_modules/@walletconnect/jsonrpc-http-connection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz", + "integrity": "sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==", + "dependencies": { + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.1", + "cross-fetch": "^3.1.4", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/jsonrpc-http-connection/node_modules/@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/jsonrpc-provider": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz", + "integrity": "sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==", + "dependencies": { + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/safe-json": "^1.0.2", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/jsonrpc-provider/node_modules/@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/jsonrpc-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz", + "integrity": "sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==", + "dependencies": { + "keyvaluestorage-interface": "^1.0.0", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/jsonrpc-utils": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz", + "integrity": "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==", + "dependencies": { + "@walletconnect/environment": "^1.0.1", + "@walletconnect/jsonrpc-types": "^1.0.3", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/jsonrpc-ws-connection": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.13.tgz", + "integrity": "sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg==", + "dependencies": { + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.2", + "events": "^3.3.0", + "tslib": "1.14.1", + "ws": "^7.5.1" + } + }, + "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@walletconnect/keyvaluestorage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz", + "integrity": "sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==", + "dependencies": { + "safe-json-utils": "^1.1.1", + "tslib": "1.14.1" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": "1.x", + "lokijs": "1.x" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + }, + "lokijs": { + "optional": true + } + } + }, + "node_modules/@walletconnect/logger": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.0.1.tgz", + "integrity": "sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==", + "dependencies": { + "pino": "7.11.0", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/mobile-registry": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz", + "integrity": "sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==", + "license": "MIT" + }, + "node_modules/@walletconnect/modal": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.5.5.tgz", + "integrity": "sha512-y1PH1xXzFDtVZErfQErPPJzPU9DKLp4M0IEaza8LfegqHfTFaGa0s3AL+i5+7FIk9+5OHSv0Wv+e5tmSZt96yA==", + "dependencies": { + "@walletconnect/modal-core": "2.5.5", + "@walletconnect/modal-ui": "2.5.5" + } + }, + "node_modules/@walletconnect/modal-core": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-core/-/modal-core-2.5.5.tgz", + "integrity": "sha512-M2BKcI5aqnGfMAz+MgTsvnTRzD25uz9YJ3/xuzy+ovgFCl2VCGH2Vdrf6Ptu+UR6UMuPdssG1TXXe1rd907Dxw==", + "dependencies": { + "buffer": "6.0.3", + "valtio": "1.10.6" + } + }, + "node_modules/@walletconnect/modal-core/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@walletconnect/modal-ui": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-ui/-/modal-ui-2.5.5.tgz", + "integrity": "sha512-g0LJ/gRhZ5E30gk4GnMpDlQzLFWyRjsJp57s9rZmlVkry5mfhCZ3Oh0mfgv2/ILVxdB4fUo1BjatKyOpSogOmg==", + "dependencies": { + "@walletconnect/modal-core": "2.5.5", + "lit": "2.7.5", + "motion": "10.16.2", + "qrcode": "1.5.3" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/@walletconnect/modal-ui/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@walletconnect/modal-ui/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@walletconnect/qrcode-modal": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz", + "integrity": "sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/browser-utils": "^1.8.0", + "@walletconnect/mobile-registry": "^1.4.0", + "@walletconnect/types": "^1.8.0", + "copy-to-clipboard": "^3.3.1", + "preact": "10.4.1", + "qrcode": "1.4.4" + } + }, + "node_modules/@walletconnect/randombytes": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@walletconnect/randombytes/-/randombytes-1.0.3.tgz", + "integrity": "sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw==", + "license": "MIT", + "dependencies": { + "@walletconnect/encoding": "^1.0.2", + "@walletconnect/environment": "^1.0.1", + "randombytes": "^2.1.0", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/relay-api": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.9.tgz", + "integrity": "sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==", + "dependencies": { + "@walletconnect/jsonrpc-types": "^1.0.2", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/relay-auth": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz", + "integrity": "sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==", + "dependencies": { + "@stablelib/ed25519": "^1.0.2", + "@stablelib/random": "^1.0.1", + "@walletconnect/safe-json": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "tslib": "1.14.1", + "uint8arrays": "^3.0.0" + } + }, + "node_modules/@walletconnect/relay-auth/node_modules/@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/safe-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.0.tgz", + "integrity": "sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg==", + "license": "MIT" + }, + "node_modules/@walletconnect/sign-client": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.8.4.tgz", + "integrity": "sha512-eRvWtKBAgzo/rbIkw+rkKco2ulSW8Wor/58UsOBsl9DKr1rIazZd4ZcUdaTjg9q8AT1476IQakCAIuv+1FvJwQ==", + "dependencies": { + "@walletconnect/core": "2.8.4", + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.8.4", + "@walletconnect/utils": "2.8.4", + "events": "^3.3.0" + } + }, + "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/core": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.8.4.tgz", + "integrity": "sha512-3CQHud4As0kPRvlW1w/wSWS2F3yXlAo5kSEJyRWLRPqXG+aSCVWM8cVM8ch5yoeyNIfOHhEINdsYMuJG1+yIJQ==", + "dependencies": { + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-provider": "1.0.13", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/jsonrpc-ws-connection": "^1.0.11", + "@walletconnect/keyvaluestorage": "^1.0.2", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/relay-auth": "^1.0.4", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.8.4", + "@walletconnect/utils": "2.8.4", + "events": "^3.3.0", + "lodash.isequal": "4.5.0", + "uint8arrays": "^3.1.0" + } + }, + "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/types": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.8.4.tgz", + "integrity": "sha512-Fgqe87R7rjMOGSvx28YPLTtXM6jj+oUOorx8cE+jEw2PfpWp5myF21aCdaMBR39h0QHij5H1Z0/W9e7gm4oC1Q==", + "dependencies": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/keyvaluestorage": "^1.0.2", + "@walletconnect/logger": "^2.0.1", + "events": "^3.3.0" + } + }, + "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/utils": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.8.4.tgz", + "integrity": "sha512-NGw6BINYNeT9JrQrnxldAPheO2ymRrwGrgfExZMyrkb1MShnIX4nzo4KirKInM4LtrY6AA/v0Lu3ooUdfO+xIg==", + "dependencies": { + "@stablelib/chacha20poly1305": "1.0.1", + "@stablelib/hkdf": "1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "1.0.1", + "@stablelib/x25519": "^1.0.3", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.8.4", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "^3.1.0" + } + }, + "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/window-metadata": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", + "dependencies": { + "@walletconnect/window-getters": "^1.0.1", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/sign-client/node_modules/detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "node_modules/@walletconnect/sign-client/node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@walletconnect/socket-transport": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz", + "integrity": "sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/types": "^1.8.0", + "@walletconnect/utils": "^1.8.0", + "ws": "7.5.3" + } + }, + "node_modules/@walletconnect/socket-transport/node_modules/ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@walletconnect/time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz", + "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/types": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-1.8.0.tgz", + "integrity": "sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg==", + "license": "Apache-2.0" + }, + "node_modules/@walletconnect/universal-provider": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.8.4.tgz", + "integrity": "sha512-JRpOXKIciRMzd03zZxM1WDsYHo/ZS86zZrZ1aCHW1d45ZLP7SbGPRHzZgBY3xrST26yTvWIlRfTUEYn50fzB1g==", + "dependencies": { + "@walletconnect/jsonrpc-http-connection": "^1.0.7", + "@walletconnect/jsonrpc-provider": "1.0.13", + "@walletconnect/jsonrpc-types": "^1.0.2", + "@walletconnect/jsonrpc-utils": "^1.0.7", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/sign-client": "2.8.4", + "@walletconnect/types": "2.8.4", + "@walletconnect/utils": "2.8.4", + "events": "^3.3.0" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/types": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.8.4.tgz", + "integrity": "sha512-Fgqe87R7rjMOGSvx28YPLTtXM6jj+oUOorx8cE+jEw2PfpWp5myF21aCdaMBR39h0QHij5H1Z0/W9e7gm4oC1Q==", + "dependencies": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/keyvaluestorage": "^1.0.2", + "@walletconnect/logger": "^2.0.1", + "events": "^3.3.0" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/utils": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.8.4.tgz", + "integrity": "sha512-NGw6BINYNeT9JrQrnxldAPheO2ymRrwGrgfExZMyrkb1MShnIX4nzo4KirKInM4LtrY6AA/v0Lu3ooUdfO+xIg==", + "dependencies": { + "@stablelib/chacha20poly1305": "1.0.1", + "@stablelib/hkdf": "1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "1.0.1", + "@stablelib/x25519": "^1.0.3", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.8.4", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "^3.1.0" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/window-metadata": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", + "dependencies": { + "@walletconnect/window-getters": "^1.0.1", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "node_modules/@walletconnect/universal-provider/node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@walletconnect/utils": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-1.8.0.tgz", + "integrity": "sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/browser-utils": "^1.8.0", + "@walletconnect/encoding": "^1.0.1", + "@walletconnect/jsonrpc-utils": "^1.0.3", + "@walletconnect/types": "^1.8.0", + "bn.js": "4.11.8", + "js-sha3": "0.8.0", + "query-string": "6.13.5" + } + }, + "node_modules/@walletconnect/utils/node_modules/bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "license": "MIT" + }, + "node_modules/@walletconnect/window-getters": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.0.tgz", + "integrity": "sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==", + "license": "MIT" + }, + "node_modules/@walletconnect/window-metadata": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz", + "integrity": "sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==", + "license": "MIT", + "dependencies": { + "@walletconnect/window-getters": "^1.0.0" + } + }, + "node_modules/@walletconnect/window-metadata/node_modules/@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "license": "MIT", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@web3-onboard/coinbase": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@web3-onboard/coinbase/-/coinbase-2.2.5.tgz", + "integrity": "sha512-mEiaK+K+nB2TwxUpkyAZmb4AHguymsJrHFbsZDdAolFTgZizCSjGHBhYlCEfxLL4fh3CpUryTa/AaNxxhdG6OQ==", + "dependencies": { + "@coinbase/wallet-sdk": "^3.7.1", + "@web3-onboard/common": "^2.3.3" + } + }, + "node_modules/@web3-onboard/common": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@web3-onboard/common/-/common-2.3.3.tgz", + "integrity": "sha512-Ytppszqe77VY8WglRdr/Lfx+HmcZ2hXQEkBA23JaVYmzKvP/mC6j+sjGUD8CgXDpRRxyKoiRj6nz95GRABie6Q==", + "dependencies": { + "bignumber.js": "^9.1.0", + "ethers": "5.5.4", + "joi": "17.9.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz", + "integrity": "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abi/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz", + "integrity": "sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-provider/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz", + "integrity": "sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/abstract-signer/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/address": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.5.0.tgz", + "integrity": "sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/rlp": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/address/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/address/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/address/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/address/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/address/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/address/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/base64": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.5.0.tgz", + "integrity": "sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/base64/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/base64/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/basex": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.5.0.tgz", + "integrity": "sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/basex/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/basex/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/basex/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/bignumber": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.5.0.tgz", + "integrity": "sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/bignumber/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/bignumber/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", + "integrity": "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/bytes/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/constants": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.5.0.tgz", + "integrity": "sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/constants/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/constants/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/constants/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/constants/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.5.0.tgz", + "integrity": "sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hash/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.5.0.tgz", + "integrity": "sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/hdnode/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz", + "integrity": "sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/json-wallets/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/keccak256": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.5.0.tgz", + "integrity": "sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/keccak256/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/keccak256/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/logger": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz", + "integrity": "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/networks": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.5.2.tgz", + "integrity": "sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/networks/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/pbkdf2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz", + "integrity": "sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/sha2": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/properties": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.5.0.tgz", + "integrity": "sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/properties/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.3.tgz", + "integrity": "sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/providers/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/random": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.5.1.tgz", + "integrity": "sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/random/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/random/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/rlp": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.5.0.tgz", + "integrity": "sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/rlp/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/rlp/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/sha2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz", + "integrity": "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/sha2/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/sha2/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/signing-key": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.5.0.tgz", + "integrity": "sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/strings": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.5.0.tgz", + "integrity": "sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/strings/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/strings/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/strings/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/strings/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/strings/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.5.0.tgz", + "integrity": "sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/transactions/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/web": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.5.1.tgz", + "integrity": "sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/web/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/web/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/web/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/web/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/web/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/web/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/web/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/web/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.5.0.tgz", + "integrity": "sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/common/node_modules/@ethersproject/wordlists/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/common/node_modules/ethers": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.5.4.tgz", + "integrity": "sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.5.0", + "@ethersproject/abstract-provider": "5.5.1", + "@ethersproject/abstract-signer": "5.5.0", + "@ethersproject/address": "5.5.0", + "@ethersproject/base64": "5.5.0", + "@ethersproject/basex": "5.5.0", + "@ethersproject/bignumber": "5.5.0", + "@ethersproject/bytes": "5.5.0", + "@ethersproject/constants": "5.5.0", + "@ethersproject/contracts": "5.5.0", + "@ethersproject/hash": "5.5.0", + "@ethersproject/hdnode": "5.5.0", + "@ethersproject/json-wallets": "5.5.0", + "@ethersproject/keccak256": "5.5.0", + "@ethersproject/logger": "5.5.0", + "@ethersproject/networks": "5.5.2", + "@ethersproject/pbkdf2": "5.5.0", + "@ethersproject/properties": "5.5.0", + "@ethersproject/providers": "5.5.3", + "@ethersproject/random": "5.5.1", + "@ethersproject/rlp": "5.5.0", + "@ethersproject/sha2": "5.5.0", + "@ethersproject/signing-key": "5.5.0", + "@ethersproject/solidity": "5.5.0", + "@ethersproject/strings": "5.5.0", + "@ethersproject/transactions": "5.5.0", + "@ethersproject/units": "5.5.0", + "@ethersproject/wallet": "5.5.0", + "@ethersproject/web": "5.5.1", + "@ethersproject/wordlists": "5.5.0" + } + }, + "node_modules/@web3-onboard/core": { + "version": "2.20.4", + "resolved": "https://registry.npmjs.org/@web3-onboard/core/-/core-2.20.4.tgz", + "integrity": "sha512-IFI3DVq5QgFj5w1TyL61gHmeOlkX8AJiBAARO3cd4zW8I3h9K2+7HeE7LbsfwefZYLILzXCfF0gMB3qRN/GWYQ==", + "dependencies": { + "@web3-onboard/common": "^2.3.3", + "bignumber.js": "^9.0.0", + "bnc-sdk": "^4.6.7", + "bowser": "^2.11.0", + "ethers": "5.5.3", + "eventemitter3": "^4.0.7", + "joi": "17.9.1", + "lodash.merge": "^4.6.2", + "lodash.partition": "^4.6.0", + "nanoid": "^4.0.0", + "rxjs": "^7.5.5", + "svelte": "^3.49.0", + "svelte-i18n": "^3.3.13" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz", + "integrity": "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abi/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz", + "integrity": "sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-provider/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz", + "integrity": "sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/abstract-signer/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/address": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.5.0.tgz", + "integrity": "sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/rlp": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/address/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/address/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/address/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/address/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/address/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/address/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/base64": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.5.0.tgz", + "integrity": "sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/base64/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/base64/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/basex": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.5.0.tgz", + "integrity": "sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/basex/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/basex/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/basex/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/bignumber": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.5.0.tgz", + "integrity": "sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/bignumber/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/bignumber/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", + "integrity": "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/bytes/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/constants": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.5.0.tgz", + "integrity": "sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/constants/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/constants/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/constants/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/constants/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.5.0.tgz", + "integrity": "sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hash/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.5.0.tgz", + "integrity": "sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/hdnode/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz", + "integrity": "sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/json-wallets/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/keccak256": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.5.0.tgz", + "integrity": "sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/keccak256/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/keccak256/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/logger": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz", + "integrity": "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/networks": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.5.2.tgz", + "integrity": "sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/networks/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/pbkdf2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz", + "integrity": "sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/sha2": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/properties": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.5.0.tgz", + "integrity": "sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/properties/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.2.tgz", + "integrity": "sha512-hkbx7x/MKcRjyrO4StKXCzCpWer6s97xnm34xkfPiarhtEUVAN4TBBpamM+z66WcTt7H5B53YwbRj1n7i8pZoQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/providers/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/random": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.5.1.tgz", + "integrity": "sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/random/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/random/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/rlp": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.5.0.tgz", + "integrity": "sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/rlp/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/rlp/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/sha2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz", + "integrity": "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/sha2/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/sha2/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/signing-key": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.5.0.tgz", + "integrity": "sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/strings": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.5.0.tgz", + "integrity": "sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/strings/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/strings/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/strings/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/strings/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/strings/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.5.0.tgz", + "integrity": "sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/transactions/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/web": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.5.1.tgz", + "integrity": "sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/web/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/web/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/web/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/web/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/web/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/web/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/web/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/web/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.5.0.tgz", + "integrity": "sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/@ethersproject/wordlists/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/ethers": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.5.3.tgz", + "integrity": "sha512-fTT4WT8/hTe/BLwRUtl7I5zlpF3XC3P/Xwqxc5AIP2HGlH15qpmjs0Ou78az93b1rLITzXLFxoNX63B8ZbUd7g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.5.0", + "@ethersproject/abstract-provider": "5.5.1", + "@ethersproject/abstract-signer": "5.5.0", + "@ethersproject/address": "5.5.0", + "@ethersproject/base64": "5.5.0", + "@ethersproject/basex": "5.5.0", + "@ethersproject/bignumber": "5.5.0", + "@ethersproject/bytes": "5.5.0", + "@ethersproject/constants": "5.5.0", + "@ethersproject/contracts": "5.5.0", + "@ethersproject/hash": "5.5.0", + "@ethersproject/hdnode": "5.5.0", + "@ethersproject/json-wallets": "5.5.0", + "@ethersproject/keccak256": "5.5.0", + "@ethersproject/logger": "5.5.0", + "@ethersproject/networks": "5.5.2", + "@ethersproject/pbkdf2": "5.5.0", + "@ethersproject/properties": "5.5.0", + "@ethersproject/providers": "5.5.2", + "@ethersproject/random": "5.5.1", + "@ethersproject/rlp": "5.5.0", + "@ethersproject/sha2": "5.5.0", + "@ethersproject/signing-key": "5.5.0", + "@ethersproject/solidity": "5.5.0", + "@ethersproject/strings": "5.5.0", + "@ethersproject/transactions": "5.5.0", + "@ethersproject/units": "5.5.0", + "@ethersproject/wallet": "5.5.0", + "@ethersproject/web": "5.5.1", + "@ethersproject/wordlists": "5.5.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/@web3-onboard/core/node_modules/nanoid": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz", + "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==", + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@web3-onboard/core/node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@web3-onboard/core/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@web3-onboard/hw-common": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@web3-onboard/hw-common/-/hw-common-2.3.0.tgz", + "integrity": "sha512-ai5gwaXHxMOgov+TKuy2yUtBf7b2Vq8c28L9tSx4Hl8Q2IM6boGZQEqfW6Hw0GHu/Ez+MxRR5+M6nfwFBf8JRw==", + "dependencies": { + "@ethereumjs/common": "2.6.2", + "@web3-onboard/common": "^2.3.3", + "ethers": "5.5.4", + "joi": "17.9.1", + "rxjs": "^7.5.2" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethereumjs/common": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.2.tgz", + "integrity": "sha512-vDwye5v0SVeuDky4MtKsu+ogkH2oFUV8pBKzH/eNBzT8oI91pKa8WyzDuYuxOQsgNgv5R34LfFDh2aaw3H4HbQ==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.4" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz", + "integrity": "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abi/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz", + "integrity": "sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-provider/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz", + "integrity": "sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/abstract-signer/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/address": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.5.0.tgz", + "integrity": "sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/rlp": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/address/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/address/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/address/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/address/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/address/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/address/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/base64": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.5.0.tgz", + "integrity": "sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/base64/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/base64/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/basex": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.5.0.tgz", + "integrity": "sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/basex/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/basex/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/basex/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/bignumber": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.5.0.tgz", + "integrity": "sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/bignumber/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/bignumber/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", + "integrity": "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/bytes/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/constants": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.5.0.tgz", + "integrity": "sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/constants/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/constants/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/constants/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/constants/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.5.0.tgz", + "integrity": "sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hash/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.5.0.tgz", + "integrity": "sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/hdnode/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz", + "integrity": "sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/json-wallets/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/keccak256": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.5.0.tgz", + "integrity": "sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/keccak256/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/keccak256/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/logger": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz", + "integrity": "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/networks": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.5.2.tgz", + "integrity": "sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/networks/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/pbkdf2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz", + "integrity": "sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/sha2": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/pbkdf2/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/properties": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.5.0.tgz", + "integrity": "sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/properties/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.3.tgz", + "integrity": "sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/providers/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/random": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.5.1.tgz", + "integrity": "sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/random/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/random/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/rlp": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.5.0.tgz", + "integrity": "sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/rlp/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/rlp/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/sha2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz", + "integrity": "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/sha2/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/sha2/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/signing-key": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.5.0.tgz", + "integrity": "sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/signing-key/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/strings": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.5.0.tgz", + "integrity": "sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/strings/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/strings/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/strings/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/strings/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/strings/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.5.0.tgz", + "integrity": "sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/transactions/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/web": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.5.1.tgz", + "integrity": "sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/web/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/web/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/web/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/web/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/web/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/web/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/web/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/web/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.5.0.tgz", + "integrity": "sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/@ethersproject/wordlists/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@web3-onboard/hw-common/node_modules/ethers": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.5.4.tgz", + "integrity": "sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.5.0", + "@ethersproject/abstract-provider": "5.5.1", + "@ethersproject/abstract-signer": "5.5.0", + "@ethersproject/address": "5.5.0", + "@ethersproject/base64": "5.5.0", + "@ethersproject/basex": "5.5.0", + "@ethersproject/bignumber": "5.5.0", + "@ethersproject/bytes": "5.5.0", + "@ethersproject/constants": "5.5.0", + "@ethersproject/contracts": "5.5.0", + "@ethersproject/hash": "5.5.0", + "@ethersproject/hdnode": "5.5.0", + "@ethersproject/json-wallets": "5.5.0", + "@ethersproject/keccak256": "5.5.0", + "@ethersproject/logger": "5.5.0", + "@ethersproject/networks": "5.5.2", + "@ethersproject/pbkdf2": "5.5.0", + "@ethersproject/properties": "5.5.0", + "@ethersproject/providers": "5.5.3", + "@ethersproject/random": "5.5.1", + "@ethersproject/rlp": "5.5.0", + "@ethersproject/sha2": "5.5.0", + "@ethersproject/signing-key": "5.5.0", + "@ethersproject/solidity": "5.5.0", + "@ethersproject/strings": "5.5.0", + "@ethersproject/transactions": "5.5.0", + "@ethersproject/units": "5.5.0", + "@ethersproject/wallet": "5.5.0", + "@ethersproject/web": "5.5.1", + "@ethersproject/wordlists": "5.5.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@web3-onboard/hw-common/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@web3-onboard/injected-wallets": { + "version": "2.10.4", + "resolved": "https://registry.npmjs.org/@web3-onboard/injected-wallets/-/injected-wallets-2.10.4.tgz", + "integrity": "sha512-A0Uawe4X7o2mZD8S2UMqAWXjC33fIepB6SKKrH1XswEUWlg+hxs9vKjB/eIa3Fhly9lYVs5XyFUAx2mv4sZ/Xw==", + "dependencies": { + "@web3-onboard/common": "^2.3.3", + "joi": "17.9.1", + "lodash.uniqby": "^4.7.0" + } + }, + "node_modules/@web3-onboard/keystone": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/@web3-onboard/keystone/-/keystone-2.3.7.tgz", + "integrity": "sha512-9KdRQJ3htg9uSF3t8o2a5T32aQ+J2VA0mKYaXns2ZgsSznd4WqvQFuyrQi015b0rn6zkXM3BKFcMhu0OJtRwHw==", + "dependencies": { + "@ethereumjs/tx": "^3.4.0", + "@ethersproject/providers": "^5.5.0", + "@keystonehq/eth-keyring": "^0.14.00.3", + "@web3-onboard/common": "^2.3.3", + "@web3-onboard/hw-common": "^2.3.0" + } + }, + "node_modules/@web3-onboard/ledger": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@web3-onboard/ledger/-/ledger-2.3.2.tgz", + "integrity": "sha512-0KLXmnXNs6iTZEhBdGDgg+L5t8rOTroZjYu8l3Qebd02hNBIeaNxgCXIOQ1Y97qvcQz/8rb6oZ1wMp7unmSA1g==", + "license": "MIT", + "dependencies": { + "@ethereumjs/tx": "^3.4.0", + "@ethersproject/providers": "^5.5.0", + "@ledgerhq/hw-app-eth": "^6.19.0", + "@ledgerhq/hw-transport-u2f": "^5.36.0-deprecated", + "@ledgerhq/hw-transport-webusb": "^6.19.0", + "@metamask/eth-sig-util": "^4.0.0", + "@web3-onboard/common": "^2.2.3", + "@web3-onboard/hw-common": "^2.0.4", + "buffer": "^6.0.3", + "ethereumjs-util": "^7.1.3" + } + }, + "node_modules/@web3-onboard/ledger/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@web3-onboard/taho": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@web3-onboard/taho/-/taho-2.0.5.tgz", + "integrity": "sha512-Z5n2UMumLNppOlDgYM9MhrM+YGyz8Emouaf7htH8l4B2r/meV4F3Wkgol2xYuwwu5SJyPaJH2GxNeh/EAfyBxg==", + "dependencies": { + "@web3-onboard/common": "^2.3.3", + "tallyho-detect-provider": "^1.0.0", + "tallyho-onboarding": "^1.0.2" + } + }, + "node_modules/@web3-onboard/trezor": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@web3-onboard/trezor/-/trezor-2.4.2.tgz", + "integrity": "sha512-XMi5xn41HhMKnZhPj9n+5WScEsgHRzXz/XYKMbKJRfndVgHgbo/kO3DxL9fwfdUoW/mewRfO5wiN1hf7qyN2VQ==", + "dependencies": { + "@ethereumjs/tx": "^3.4.0", + "@ethersproject/providers": "^5.5.0", + "@trezor/connect-web": "^9.0.8", + "@web3-onboard/common": "^2.3.3", + "@web3-onboard/hw-common": "^2.3.0", + "buffer": "^6.0.3", + "eth-crypto": "^2.1.0", + "ethereumjs-util": "^7.1.3", + "hdkey": "^2.0.1" + } + }, + "node_modules/@web3-onboard/trezor/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@web3-onboard/walletconnect": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@web3-onboard/walletconnect/-/walletconnect-2.4.0.tgz", + "integrity": "sha512-Qu3uHWsumOedHDzwqOoUrA40rNO0C6Sgw62XeIxSC+JsIB2K4Y5rXhTbMeYtO0lmWmHA8DYXxk8czYkdMZh19Q==", + "dependencies": { + "@ethersproject/providers": "5.5.0", + "@walletconnect/client": "^1.8.0", + "@walletconnect/ethereum-provider": "2.8.4", + "@walletconnect/modal": "2.5.5", + "@walletconnect/qrcode-modal": "^1.8.0", + "@web3-onboard/common": "^2.3.3", + "rxjs": "^7.5.2" + } + }, + "node_modules/@web3-onboard/walletconnect/node_modules/@ethersproject/providers": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.0.tgz", + "integrity": "sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@web3-onboard/walletconnect/node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@web3-onboard/walletconnect/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/abortcontroller-polyfill": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" + }, + "node_modules/abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals/node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "license": "MIT" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz", + "integrity": "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "license": "MIT", + "dependencies": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true, + "license": "ISC" + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "license": "MIT", + "dependencies": { + "async": "^2.4.0" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "license": "MIT" + }, + "node_modules/async-mutex": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz", + "integrity": "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/async-mutex/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "license": "MIT" + }, + "node_modules/axe-core": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.1.tgz", + "integrity": "sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "0.26.1", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/babel-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^28.1.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^28.1.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^28.1.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "license": "MIT", + "dependencies": { + "precond": "0.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bchaddrjs": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/bchaddrjs/-/bchaddrjs-0.5.2.tgz", + "integrity": "sha512-OO7gIn3m7ea4FVx4cT8gdlWQR2+++EquhdpWQJH9BQjK63tJJ6ngB3QMZDO6DiBoXiIGUsTPHjlrHVxPGcGxLQ==", + "dependencies": { + "bs58check": "2.1.2", + "buffer": "^6.0.3", + "cashaddrjs": "0.4.4", + "stream-browserify": "^3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/bchaddrjs/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.36", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", + "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bigint-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", + "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.3.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bind-decorator": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bind-decorator/-/bind-decorator-1.0.11.tgz", + "integrity": "sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==" + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bip66": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", + "integrity": "sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bitcoin-ops": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz", + "integrity": "sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow==" + }, + "node_modules/blake-hash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/blake-hash/-/blake-hash-2.0.0.tgz", + "integrity": "sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/blake-hash/node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + }, + "node_modules/blake-hash/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blake-hash/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "license": "MIT" + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/bnc-sdk": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/bnc-sdk/-/bnc-sdk-4.6.7.tgz", + "integrity": "sha512-jIQ6cmeRBgvH/YDLuYRr2+kxDGcAAi0SOvjlO5nQ5cWdbslw+ASWftd1HmxiVLNCiwEH5bSc/t8a0agZ5njTUQ==", + "dependencies": { + "crypto-es": "^1.2.2", + "nanoid": "^3.3.1", + "rxjs": "^6.6.3", + "sturdy-websocket": "^0.1.12" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "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" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/borsh/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "license": "MIT", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "license": "MIT", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "license": "MIT" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "license": "MIT" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" + }, + "node_modules/bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ==", + "dependencies": { + "long": "~3" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/bytebuffer/node_modules/long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", + "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001439", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" + }, + "node_modules/cashaddrjs": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cashaddrjs/-/cashaddrjs-0.4.4.tgz", + "integrity": "sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA==", + "dependencies": { + "big-integer": "1.6.36" + } + }, + "node_modules/cbor-sync": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cbor-sync/-/cbor-sync-1.0.4.tgz", + "integrity": "sha512-GWlXN4wiz0vdWWXBU71Dvc1q3aBo0HytqwAZnXF1wOwjqNnDWA1vZ1gDMFLlqohak31VQzmhiYfiCX5QSSfagA==", + "license": "MIT" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/checkpoint-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg==", + "license": "ISC", + "dependencies": { + "functional-red-black-tree": "^1.0.1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/ci-info": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", + "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cids": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", + "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", + "deprecated": "This module has been superseded by the multiformats module", + "dependencies": { + "buffer": "^5.5.0", + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + }, + "engines": { + "node": ">=4.0.0", + "npm": ">=3.0.0" + } + }, + "node_modules/cids/node_modules/multicodec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "deprecated": "This module has been superseded by the multiformats module", + "dependencies": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true, + "license": "MIT" + }, + "node_modules/class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" + }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==", + "license": "MIT" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "license": "MIT", + "dependencies": { + "del": "^4.1.1" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.0 <6.0.0" + } + }, + "node_modules/cli-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", + "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.61", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-block-writer": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", + "integrity": "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-args/node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/command-line-usage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/command-line-usage/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-hash": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", + "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "dependencies": { + "cids": "^0.7.1", + "multicodec": "^0.5.5", + "multihashes": "^0.4.15" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "license": "MIT", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz", + "integrity": "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "license": "MIT", + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-es": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/crypto-es/-/crypto-es-1.2.7.tgz", + "integrity": "sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ==" + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "license": "MIT" + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/cypress": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-11.2.0.tgz", + "integrity": "sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@cypress/request": "^2.88.10", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.6", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cypress-file-upload": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz", + "integrity": "sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.2.1" + }, + "peerDependencies": { + "cypress": ">3.0.0" + } + }, + "node_modules/cypress/node_modules/@types/node": { + "version": "14.18.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.35.tgz", + "integrity": "sha512-2ATO8pfhG1kDvw4Lc4C0GXIMSQFFJBCo/R1fSgTwmUlq5oy95LXyjDQinsRVgQY6gp6ghh3H91wk9ES5/5C+Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cypress/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cypress/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/cypress/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "license": "MIT", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "license": "MIT" + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-equal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz", + "integrity": "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.6.0" + } + }, + "node_modules/deferred-leveldown/node_modules/abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.2.0.tgz", + "integrity": "sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==", + "license": "MIT" + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==", + "license": "MIT" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz", + "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==", + "dev": true, + "license": "MIT" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/drbg.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", + "integrity": "sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g==", + "license": "MIT", + "optional": true, + "dependencies": { + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/eccrypto": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/eccrypto/-/eccrypto-1.1.6.tgz", + "integrity": "sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A==", + "hasInstallScript": true, + "license": "CC0-1.0", + "dependencies": { + "acorn": "7.1.1", + "elliptic": "6.5.4", + "es6-promise": "4.2.8", + "nan": "2.14.0" + }, + "optionalDependencies": { + "secp256k1": "3.7.1" + } + }, + "node_modules/eccrypto/node_modules/acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/eccrypto/node_modules/secp256k1": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz", + "integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.4.1", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eccrypto/node_modules/secp256k1/node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "license": "MIT", + "optional": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "license": "ISC" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "license": "MIT", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", + "license": "MIT" + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "license": "ISC", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", + "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "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", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "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.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.1.1.tgz", + "integrity": "sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "13.1.1", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.42.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.31.7", + "eslint-plugin-react-hooks": "^4.5.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz", + "integrity": "sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz", + "integrity": "sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.12.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "resolve": "^1.22.3", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.31.11", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz", + "integrity": "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-unused-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", + "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eth-block-tracker": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz", + "integrity": "sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-runtime": "^7.5.5", + "@babel/runtime": "^7.5.5", + "eth-query": "^2.1.0", + "json-rpc-random-id": "^1.0.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "node_modules/eth-block-tracker/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-crypto": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/eth-crypto/-/eth-crypto-2.5.0.tgz", + "integrity": "sha512-5WA3ebUs38ssNtU/U9FPzehFZnkdAwAFXq+bPF2Fcp4izV+A7bjW6489N8AB7fiQgHi1XkfnTcO64189SJil5A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "7.20.6", + "@ethereumjs/tx": "3.5.2", + "@types/bn.js": "5.1.1", + "eccrypto": "1.1.6", + "ethereumjs-util": "7.1.5", + "ethers": "5.7.2", + "secp256k1": "4.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/pubkey" + } + }, + "node_modules/eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", + "dependencies": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "node_modules/eth-ens-namehash/node_modules/js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" + }, + "node_modules/eth-json-rpc-filters": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz", + "integrity": "sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw==", + "license": "ISC", + "dependencies": { + "@metamask/safe-event-emitter": "^2.0.0", + "async-mutex": "^0.2.6", + "eth-json-rpc-middleware": "^6.0.0", + "eth-query": "^2.1.2", + "json-rpc-engine": "^6.1.0", + "pify": "^5.0.0" + } + }, + "node_modules/eth-json-rpc-filters/node_modules/eth-rpc-errors": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz", + "integrity": "sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==", + "license": "MIT", + "dependencies": { + "fast-safe-stringify": "^2.0.6" + } + }, + "node_modules/eth-json-rpc-filters/node_modules/json-rpc-engine": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", + "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", + "license": "ISC", + "dependencies": { + "@metamask/safe-event-emitter": "^2.0.0", + "eth-rpc-errors": "^4.0.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/eth-json-rpc-filters/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eth-json-rpc-infura": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz", + "integrity": "sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow==", + "license": "ISC", + "dependencies": { + "eth-json-rpc-middleware": "^6.0.0", + "eth-rpc-errors": "^3.0.0", + "json-rpc-engine": "^5.3.0", + "node-fetch": "^2.6.0" + } + }, + "node_modules/eth-json-rpc-middleware": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz", + "integrity": "sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ==", + "license": "ISC", + "dependencies": { + "btoa": "^1.2.1", + "clone": "^2.1.1", + "eth-query": "^2.1.2", + "eth-rpc-errors": "^3.0.0", + "eth-sig-util": "^1.4.2", + "ethereumjs-util": "^5.1.2", + "json-rpc-engine": "^5.3.0", + "json-stable-stringify": "^1.0.1", + "node-fetch": "^2.6.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/eth-json-rpc-middleware/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-lib": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/eth-lib/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/eth-lib/node_modules/ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/eth-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", + "license": "ISC", + "dependencies": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "node_modules/eth-rpc-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz", + "integrity": "sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==", + "license": "MIT", + "dependencies": { + "fast-safe-stringify": "^2.0.6" + } + }, + "node_modules/eth-sig-util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", + "integrity": "sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw==", + "license": "ISC", + "dependencies": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-util": "^5.1.1" + } + }, + "node_modules/eth-sig-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/eth-sig-util/node_modules/ethereumjs-abi": { + "version": "0.6.8", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/eth-sig-util/node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/eth-sig-util/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ethereum-blockies-base64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ethereum-blockies-base64/-/ethereum-blockies-base64-1.0.2.tgz", + "integrity": "sha512-Vg2HTm7slcWNKaRhCUl/L3b4KrB8ohQXdd5Pu3OI897EcR6tVRvUqdTwAyx+dnmoDzj8e2bwBLDQ50ByFmcz6w==", + "license": "MIT", + "dependencies": { + "pnglib": "0.0.1" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "license": "MIT", + "dependencies": { + "js-sha3": "^0.8.0" + } + }, + "node_modules/ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", + "license": "MIT" + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereum-protocol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz", + "integrity": "sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg==", + "license": "MIT" + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ethereumjs-account/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "license": "MPL-2.0", + "dependencies": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ethereumjs-block/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ethereumjs-common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", + "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==", + "license": "MIT" + }, + "node_modules/ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "license": "MPL-2.0", + "dependencies": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "node_modules/ethereumjs-tx/node_modules/ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==", + "license": "MIT" + }, + "node_modules/ethereumjs-tx/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethereumjs-util/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "license": "MPL-2.0", + "dependencies": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ethereumjs-vm/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-vm/node_modules/ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "license": "MPL-2.0", + "dependencies": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ethereumjs-vm/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ethereumjs-vm/node_modules/ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-vm/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/ethers/node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "license": "MIT" + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", + "license": "BSD-3-Clause" + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.0.tgz", + "integrity": "sha512-oBuz5SYz5zzyuHINoe9ooePwSu0xApKWgeNzok4hZ5YKXFh9zrQBEM15CXqoZkJJPuI2ArvqjPQd8UKJA753XA==", + "license": "Apache-2.0" + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.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" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "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.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "license": "ISC" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fake-merkle-patricia-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==", + "license": "ISC", + "dependencies": { + "checkpoint-store": "^1.1.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-redact": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-stable-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" + }, + "node_modules/fastq": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", + "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/file-selector/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "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" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/framer-motion": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.15.1.tgz", + "integrity": "sha512-6avJj/Uftblw0fMmo6jDHkKRH4TBdkMX/FiyR3G/hFe3hQHE4BUNJCqlMPKg9EzfI5jyqDOwO5oDnU+bW5y0eg==", + "dependencies": { + "tslib": "^2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/framer-motion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "node_modules/framer-motion/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-extra/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "license": "MIT" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "license": "MIT" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuse.js": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", + "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.2.tgz", + "integrity": "sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getos/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "license": "MIT" + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", + "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "1.7.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "license": "ISC" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hdkey": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-2.0.1.tgz", + "integrity": "sha512-c+tl9PHG9/XkGgG0tD7CJpRVaE0jfZizDNmnErUAKQ4EjQSOcOUcV3EN9ZEZS8pZ4usaeiiK0H7stzuzna8feA==", + "license": "MIT", + "dependencies": { + "bs58check": "^2.1.2", + "safe-buffer": "^5.1.1", + "secp256k1": "^4.0.0" + } + }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-tokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-tokenize/-/html-tokenize-2.0.1.tgz", + "integrity": "sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==", + "license": "MIT", + "dependencies": { + "buffer-from": "~0.1.1", + "inherits": "~2.0.1", + "minimist": "~1.2.5", + "readable-stream": "~1.0.27-1", + "through2": "~0.4.1" + }, + "bin": { + "html-tokenize": "bin/cmd.js" + } + }, + "node_modules/html-tokenize/node_modules/buffer-from": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", + "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==", + "license": "MIT" + }, + "node_modules/html-tokenize/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/html-tokenize/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" + }, + "node_modules/idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "dependencies": { + "punycode": "2.1.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/idna-uts46-hx/node_modules/punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "license": "MIT" + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/int64-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-1.0.1.tgz", + "integrity": "sha512-+3azY4pXrjAupJHU1V9uGERWlhoqNswJNji6aD/02xac7oxol508AsMC5lxKhEqyZeDFy3enq5OGWXF4u75hiw==", + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/intl-messageformat": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz", + "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/fast-memoize": "1.2.1", + "@formatjs/icu-messageformat-parser": "2.1.0", + "tslib": "^2.1.0" + } + }, + "node_modules/intl-messageformat/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "license": "MIT" + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "license": "MIT", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "license": "MIT", + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd/node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "license": "MIT", + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, + "license": "MIT" + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "license": "MIT" + }, + "node_modules/jayson": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", + "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "JSONStream": "^1.3.5", + "uuid": "^8.3.2", + "ws": "^7.4.5" + }, + "bin": { + "jayson": "bin/jayson.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jayson/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", + "import-local": "^3.0.2", + "jest-cli": "^28.1.3" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-cli": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-each": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz", + "integrity": "sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/jsdom": "^16.2.4", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3", + "jsdom": "^19.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-mock": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runner": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "graceful-fs": "^4.2.9", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "natural-compare": "^1.4.0", + "pretty-format": "^28.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-validate": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "leven": "^3.1.0", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/joi": { + "version": "17.9.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.1.tgz", + "integrity": "sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbi": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz", + "integrity": "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==", + "license": "Apache-2.0" + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsdom/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-rpc-engine": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz", + "integrity": "sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==", + "license": "ISC", + "dependencies": { + "eth-rpc-errors": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "node_modules/json-rpc-random-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==", + "license": "ISC" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/json-stable-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "license": "MIT", + "dependencies": { + "jsonify": "^0.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.2", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "license": "Public Domain", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsonschema": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.2.tgz", + "integrity": "sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA==", + "engines": { + "node": "*" + } + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/jsqr": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", + "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==", + "license": "Apache-2.0" + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keccak": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/keccak/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/keccak/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/keyvaluestorage-interface": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz", + "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==", + "license": "MIT" + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.7.tgz", + "integrity": "sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "> 0.8" + } + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", + "license": "MIT" + }, + "node_modules/level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "license": "MIT", + "dependencies": { + "errno": "~0.1.1" + } + }, + "node_modules/level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + } + }, + "node_modules/level-iterator-stream/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/level-iterator-stream/node_modules/level-errors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.1.2.tgz", + "integrity": "sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w==", + "license": "MIT", + "dependencies": { + "errno": "~0.1.1" + } + }, + "node_modules/level-iterator-stream/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", + "license": "MIT", + "dependencies": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + } + }, + "node_modules/level-ws/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/level-ws/node_modules/object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "license": "MIT" + }, + "node_modules/level-ws/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/level-ws/node_modules/xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dependencies": { + "object-keys": "~0.4.0" + }, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "license": "MIT", + "dependencies": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "node_modules/levelup/node_modules/semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/levn/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/levn/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/listr2/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/lit": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.7.5.tgz", + "integrity": "sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==", + "dependencies": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.3.0", + "lit-html": "^2.7.0" + } + }, + "node_modules/lit-element": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", + "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-html": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.partition": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.partition/-/lodash.partition-4.6.0.tgz", + "integrity": "sha512-35L3dSF3Q6V1w5j6V3NhNlQjzsRDC/pYKCTdYTmwqSib+Q8ponkAmt/PwEOq3EmI38DSCl+SkIVwLd+uSlVdrg==", + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "license": "MIT" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "license": "MIT", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "license": "MIT" + }, + "node_modules/lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==", + "dev": true, + "license": "WTFPL", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/memdown/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "license": "MPL-2.0", + "dependencies": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + } + }, + "node_modules/merkle-patricia-tree/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "license": "MIT" + }, + "node_modules/merkle-patricia-tree/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", + "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", + "dependencies": { + "mkdirp": "*" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mock-fs": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", + "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" + }, + "node_modules/motion": { + "version": "10.16.2", + "resolved": "https://registry.npmjs.org/motion/-/motion-10.16.2.tgz", + "integrity": "sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==", + "dependencies": { + "@motionone/animation": "^10.15.1", + "@motionone/dom": "^10.16.2", + "@motionone/svelte": "^10.16.2", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "@motionone/vue": "^10.16.2" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multibase": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", + "deprecated": "This module has been superseded by the multiformats module", + "dependencies": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "node_modules/multicodec": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", + "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", + "deprecated": "This module has been superseded by the multiformats module", + "dependencies": { + "varint": "^5.0.0" + } + }, + "node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" + }, + "node_modules/multihashes": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", + "dependencies": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" + } + }, + "node_modules/multihashes/node_modules/multibase": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", + "deprecated": "This module has been superseded by the multiformats module", + "dependencies": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "node_modules/multipipe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-1.0.2.tgz", + "integrity": "sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==", + "license": "MIT", + "dependencies": { + "duplexer2": "^0.1.2", + "object-assign": "^4.1.0" + } + }, + "node_modules/nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "license": "MIT" + }, + "node_modules/nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true, + "license": "MIT" + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/next/-/next-12.2.0.tgz", + "integrity": "sha512-B4j7D3SHYopLYx6/Ark0fenwIar9tEaZZFAaxmKjgcMMexhVJzB3jt7X+6wcdXPPMeUD6r09weUtnDpjox/vIA==", + "license": "MIT", + "dependencies": { + "@next/env": "12.2.0", + "@swc/helpers": "0.4.2", + "caniuse-lite": "^1.0.30001332", + "postcss": "8.4.5", + "styled-jsx": "5.0.2", + "use-sync-external-store": "1.1.0" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=12.22.0" + }, + "optionalDependencies": { + "@next/swc-android-arm-eabi": "12.2.0", + "@next/swc-android-arm64": "12.2.0", + "@next/swc-darwin-arm64": "12.2.0", + "@next/swc-darwin-x64": "12.2.0", + "@next/swc-freebsd-x64": "12.2.0", + "@next/swc-linux-arm-gnueabihf": "12.2.0", + "@next/swc-linux-arm64-gnu": "12.2.0", + "@next/swc-linux-arm64-musl": "12.2.0", + "@next/swc-linux-x64-gnu": "12.2.0", + "@next/swc-linux-x64-musl": "12.2.0", + "@next/swc-win32-arm64-msvc": "12.2.0", + "@next/swc-win32-ia32-msvc": "12.2.0", + "@next/swc-win32-x64-msvc": "12.2.0" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^6.0.0 || ^7.0.0", + "react": "^17.0.2 || ^18.0.0-0", + "react-dom": "^17.0.2 || ^18.0.0-0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-pwa": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/next-pwa/-/next-pwa-5.6.0.tgz", + "integrity": "sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==", + "license": "MIT", + "dependencies": { + "babel-loader": "^8.2.5", + "clean-webpack-plugin": "^4.0.0", + "globby": "^11.0.4", + "terser-webpack-plugin": "^5.3.3", + "workbox-webpack-plugin": "^6.5.4", + "workbox-window": "^6.5.4" + }, + "peerDependencies": { + "next": ">=9.0.0" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "license": "ISC" + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "license": "MIT", + "dependencies": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "license": "MIT" + }, + "node_modules/nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz", + "integrity": "sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.21.2", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/oboe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", + "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", + "dependencies": { + "http-https": "^1.0.0" + } + }, + "node_modules/on-exit-leak-free": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", + "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/papaparse": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", + "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==", + "license": "MIT" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "license": "MIT" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pino": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz", + "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.0.0", + "on-exit-leak-free": "^0.2.0", + "pino-abstract-transport": "v0.5.0", + "pino-std-serializers": "^4.0.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.1.0", + "safe-stable-stringify": "^2.1.0", + "sonic-boom": "^2.2.1", + "thread-stream": "^0.15.1" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", + "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", + "dependencies": { + "duplexify": "^4.1.2", + "split2": "^4.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pnglib": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pnglib/-/pnglib-0.0.1.tgz", + "integrity": "sha512-95ChzOoYLOPIyVmL+Y6X+abKGXUJlvOVLkB1QQkyXl7Uczc6FElUy/x01NS7r2GX6GRezloO/ecCX9h4U9KadA==", + "license": "BSD" + }, + "node_modules/postcss": { + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pre-commit": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", + "integrity": "sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^5.0.1", + "spawn-sync": "^1.0.15", + "which": "1.2.x" + } + }, + "node_modules/pre-commit/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/pre-commit/node_modules/cross-spawn/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/pre-commit/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/pre-commit/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pre-commit/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pre-commit/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "license": "ISC" + }, + "node_modules/preact": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.4.1.tgz", + "integrity": "sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + }, + "node_modules/promise-to-callback": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", + "integrity": "sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA==", + "license": "MIT", + "dependencies": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-compare": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", + "integrity": "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==" + }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "license": "MIT" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pushdata-bitcoin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz", + "integrity": "sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ==", + "dependencies": { + "bitcoin-ops": "^1.3.0" + } + }, + "node_modules/qr.js": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz", + "integrity": "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==", + "license": "MIT" + }, + "node_modules/qrcode": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz", + "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==", + "license": "MIT", + "dependencies": { + "buffer": "^5.4.3", + "buffer-alloc": "^1.2.0", + "buffer-from": "^1.1.1", + "dijkstrajs": "^1.0.1", + "isarray": "^2.0.1", + "pngjs": "^3.3.0", + "yargs": "^13.2.4" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/qrcode.react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz", + "integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==", + "license": "ISC", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/qrcode/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "license": "ISC", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/qrcode/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/qrcode/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/qrcode/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "license": "MIT" + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/qrcode/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "license": "MIT", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "6.13.5", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz", + "integrity": "sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==", + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "license": "MIT", + "dependencies": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, + "node_modules/react-gtm-module": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/react-gtm-module/-/react-gtm-module-2.0.11.tgz", + "integrity": "sha512-8gyj4TTxeP7eEyc2QKawEuQoAZdjKvMY4pgWfycGmqGByhs17fR+zEBs0JUDq4US/l+vbTl+6zvUIx27iDo/Vw==", + "license": "MIT" + }, + "node_modules/react-hook-form": { + "version": "7.41.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.41.1.tgz", + "integrity": "sha512-IHUozfwuqE+P201KIJwotMd+UCKqzIprseR8UUjz1jRupkZeubg0xyeMLIaT192zHv7vBBu9bibpNV5cIB4E9g==", + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "license": "MIT" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" + }, + "node_modules/react-papaparse": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/react-papaparse/-/react-papaparse-4.1.0.tgz", + "integrity": "sha512-sGJqK+OE2rVVQPxQUCCDW2prLIglv9kTdizhNe2awXvKo0gLShmhpRN3BwA+ujw5M2gSJ/KGNEwtgII0OsLgkg==", + "license": "MIT", + "dependencies": { + "@types/papaparse": "^5.3.1", + "papaparse": "^5.3.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/react-qr-reader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-qr-reader/-/react-qr-reader-2.2.1.tgz", + "integrity": "sha512-EL5JEj53u2yAOgtpAKAVBzD/SiKWn0Bl7AZy6ZrSf1lub7xHwtaXe6XSx36Wbhl1VMGmvmrwYMRwO1aSCT2fwA==", + "license": "MIT", + "dependencies": { + "jsqr": "^1.2.0", + "prop-types": "^15.7.2", + "webrtc-adapter": "^7.2.1" + }, + "peerDependencies": { + "react": "~16", + "react-dom": "~16" + } + }, + "node_modules/react-redux": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", + "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", + "hoist-non-react-statics": "^3.3.2", + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-redux/node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/real-require": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", + "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/redux-thunk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", + "license": "MIT", + "peerDependencies": { + "redux": "^4" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/request/node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/request/node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + }, + "node_modules/reserved-words": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", + "integrity": "sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/responselike/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rifm": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", + "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/ripple-address-codec": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.3.0.tgz", + "integrity": "sha512-Tvd81i7hpDmNqHvkj6iYlj8Tv3I1Romw5gfjni9eacewJvGV2xe+p2y0FAw39z72qfciRMhQyHvpnviBcWVBNw==", + "dependencies": { + "base-x": "^3.0.9", + "create-hash": "^1.1.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/ripple-binary-codec": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.8.0.tgz", + "integrity": "sha512-rtnLT6x1wKCRVWc/SL7jKD6lM5Nzf51HyM8A3AluBGTR8ubzAoAL3wzexCILKXbPhiBorrHRjLgB8L6IB2jhjw==", + "dependencies": { + "assert": "^2.0.0", + "big-integer": "^1.6.48", + "buffer": "6.0.3", + "create-hash": "^1.2.0", + "decimal.js": "^10.2.0", + "ripple-address-codec": "^4.3.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/ripple-binary-codec/node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ripple-binary-codec/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/ripple-keypairs": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.3.0.tgz", + "integrity": "sha512-LzM3Up9Pwz3dYqnczzNptimN3AxtjeGbDGeiOzREzbkslKiZcJ615b/ghBN4H23SC6W1GAL95juEzzimDi4THw==", + "dependencies": { + "bn.js": "^5.1.1", + "brorand": "^1.0.5", + "elliptic": "^6.5.4", + "hash.js": "^1.0.3", + "ripple-address-codec": "^4.3.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/ripple-keypairs/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/ripple-lib": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/ripple-lib/-/ripple-lib-1.10.1.tgz", + "integrity": "sha512-OQk+Syl2JfxKxV2KuF/kBMtnh012I5tNnziP3G4WDGCGSIAgeqkOgkR59IQ0YDNrs1YW8GbApxrdMSRi/QClcA==", + "dependencies": { + "@types/lodash": "^4.14.136", + "@types/ws": "^7.2.0", + "bignumber.js": "^9.0.0", + "https-proxy-agent": "^5.0.0", + "jsonschema": "1.2.2", + "lodash": "^4.17.4", + "ripple-address-codec": "^4.1.1", + "ripple-binary-codec": "^1.1.3", + "ripple-keypairs": "^1.0.3", + "ripple-lib-transactionparser": "0.8.2", + "ws": "^7.2.0" + }, + "engines": { + "node": ">=10.13.0", + "yarn": "^1.15.2" + } + }, + "node_modules/ripple-lib-transactionparser": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/ripple-lib-transactionparser/-/ripple-lib-transactionparser-0.8.2.tgz", + "integrity": "sha512-1teosQLjYHLyOQrKUQfYyMjDR3MAq/Ga+MJuLUfpBMypl4LZB4bEoMcmG99/+WVTEiZOezJmH9iCSvm/MyxD+g==", + "dependencies": { + "bignumber.js": "^9.0.0", + "lodash": "^4.17.15" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/rlp/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rpc-websockets": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.1.tgz", + "integrity": "sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "eventemitter3": "^4.0.7", + "uuid": "^8.3.2", + "ws": "^8.5.0" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" + }, + "optionalDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + } + }, + "node_modules/rpc-websockets/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/rpc-websockets/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/rtcpeerconnection-shim": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/rtcpeerconnection-shim/-/rtcpeerconnection-shim-1.2.15.tgz", + "integrity": "sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw==", + "license": "BSD-3-Clause", + "dependencies": { + "sdp": "^2.6.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "license": "(MIT OR Apache-2.0)" + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-event-emitter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", + "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", + "license": "ISC", + "dependencies": { + "events": "^3.0.0" + } + }, + "node_modules/safe-json-utils": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/safe-json-utils/-/safe-json-utils-1.1.1.tgz", + "integrity": "sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==" + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.64.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz", + "integrity": "sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==", + "devOptional": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "license": "ISC" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "license": "MIT" + }, + "node_modules/sdp": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/sdp/-/sdp-2.12.0.tgz", + "integrity": "sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==", + "license": "MIT" + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semaphore": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "dependencies": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", + "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", + "dependencies": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-get/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sonic-boom": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "license": "MIT" + }, + "node_modules/spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-browserify/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "license": "MIT" + }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "license": "WTFPL OR MIT" + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sturdy-websocket": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz", + "integrity": "sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew==", + "dependencies": { + "lodash.defaults": "^4.2.0" + } + }, + "node_modules/styled-jsx": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.2.tgz", + "integrity": "sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==", + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/stylis": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", + "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==", + "license": "MIT" + }, + "node_modules/stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/superstruct": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", + "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.0.tgz", + "integrity": "sha512-uGu2FVMlOuey4JoKHKrpZFkoYyj0VLjJdz47zX5+gVK5odxHM40RVhar9/iK2YFRVxvfg9FkhfVlR0sjeIrOiA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-i18n": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/svelte-i18n/-/svelte-i18n-3.6.0.tgz", + "integrity": "sha512-qvvcMqHVCXJ5pHoQR5uGzWAW5vS3qB9mBq+W6veLZ6jkrzZGOziR+wyOUJsc59BupMh+Ae30qjOndFrRU6v5jA==", + "license": "MIT", + "dependencies": { + "cli-color": "^2.0.3", + "deepmerge": "^4.2.2", + "estree-walker": "^2", + "intl-messageformat": "^9.13.0", + "sade": "^1.8.1", + "tiny-glob": "^0.2.9" + }, + "bin": { + "svelte-i18n": "dist/cli.js" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "svelte": "^3.25.1" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/swarm-js": { + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz", + "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", + "dependencies": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^11.8.5", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" + } + }, + "node_modules/swarm-js/node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/swarm-js/node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/swarm-js/node_modules/fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/swarm-js/node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/swarm-js/node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/swarm-js/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/swarm-js/node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tallyho-detect-provider": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tallyho-detect-provider/-/tallyho-detect-provider-1.0.2.tgz", + "integrity": "sha512-VUGZiWUrKJUUjtnkib09tuNO7Kld4UWLs54nnNYP0tewvzmeb1VWDK0UTv88bEUcuRKx2YWGDIuOuK9v270Ewg==", + "license": "ISC", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tallyho-onboarding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tallyho-onboarding/-/tallyho-onboarding-1.0.2.tgz", + "integrity": "sha512-bdFT/fNrFrq1BYVgjl/JKtwDmeS+z2u0415PoxmGmmYYRfdcKqXtEPImMoEbVwGtOeN0iFVohuS8ESrrAe+w7w==", + "license": "MIT", + "dependencies": { + "bowser": "^2.9.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", + "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thread-stream": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz", + "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==", + "dependencies": { + "real-require": "^0.1.0" + } + }, + "node_modules/throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", + "license": "MIT", + "dependencies": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + } + }, + "node_modules/through2/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/through2/node_modules/object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "license": "MIT" + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/through2/node_modules/xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dependencies": { + "object-keys": "~0.4.0" + }, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "license": "ISC", + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "license": "MIT", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tiny-secp256k1": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz", + "integrity": "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.3.0", + "bn.js": "^4.11.8", + "create-hmac": "^1.1.7", + "elliptic": "^6.4.0", + "nan": "^2.13.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", + "license": "MIT" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/true-myth": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/true-myth/-/true-myth-4.1.1.tgz", + "integrity": "sha512-rqy30BSpxPznbbTcAcci90oZ1YR4DqvKcNXNerG5gQBU2v4jk0cygheiul5J6ExIMrgDVuanv/MkGfqZbKrNNg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "10.* || >= 12.*" + } + }, + "node_modules/ts-command-line-args": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz", + "integrity": "sha512-FR3y7pLl/fuUNSmnPhfLArGqRrpojQgIEEOVzYx9DhTmfIN7C9RWSfpkJEF4J+Gk7aVx5pak8I7vWZsaN4N84g==", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/ts-morph": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-13.0.3.tgz", + "integrity": "sha512-pSOfUMx8Ld/WUreoSzvMFQG5i9uEiWIsBYjpU9+TTASOeUa89j5HykomeqVULm1oqWtBdleI3KEFRLrlA3zGIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.12.3", + "code-block-writer": "^11.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-prune": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-prune/-/ts-prune-0.10.3.tgz", + "integrity": "sha512-iS47YTbdIcvN8Nh/1BFyziyUqmjXz7GVzWu02RaZXqb+e/3Qe1B7IQ4860krOeCGUeJmterAlaM2FRH0Ue0hjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^6.2.1", + "cosmiconfig": "^7.0.1", + "json5": "^2.1.3", + "lodash": "^4.17.21", + "true-myth": "^4.1.0", + "ts-morph": "^13.0.1" + }, + "bin": { + "ts-prune": "lib/index.js" + } + }, + "node_modules/ts-prune/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense" + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "license": "Unlicense" + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "license": "ISC" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typechain": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.1.1.tgz", + "integrity": "sha512-uF/sUvnXTOVF2FHKhQYnxHk4su4JjZR8vr4mA2mBaRwHTbwh0jIlqARz9XJr1tA0l7afJGvEa1dTSi4zt039LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typeforce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", + "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" + }, + "node_modules/typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typescript-plugin-css-modules": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript-plugin-css-modules/-/typescript-plugin-css-modules-4.2.3.tgz", + "integrity": "sha512-jEEP2oUPOqR89QGgvPK2HSTZLkrCeKZQ9EwiNxm9VUcufUbNY1Tv053fPKRq6c13PMQjlBU3WrQjKN8u0j5Y6w==", + "dev": true, + "dependencies": { + "@types/postcss-modules-local-by-default": "^4.0.0", + "@types/postcss-modules-scope": "^3.0.1", + "dotenv": "^16.0.3", + "icss-utils": "^5.1.0", + "less": "^4.1.3", + "lodash.camelcase": "^4.3.0", + "postcss": "^8.4.21", + "postcss-load-config": "^3.1.4", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "reserved-words": "^0.1.2", + "sass": "^1.58.3", + "source-map-js": "^1.0.2", + "stylus": "^0.59.0", + "tsconfig-paths": "^4.1.2" + }, + "peerDependencies": { + "typescript": ">=3.9.0" + } + }, + "node_modules/typescript-plugin-css-modules/node_modules/postcss-load-config": { + "version": "3.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/typescript-plugin-css-modules/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/u2f-api": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/u2f-api/-/u2f-api-0.2.7.tgz", + "integrity": "sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg==", + "license": "MIT" + }, + "node_modules/ua-parser-js": { + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", + "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==" + }, + "node_modules/use-sync-external-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz", + "integrity": "sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "license": "MIT" + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/valtio": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.10.6.tgz", + "integrity": "sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA==", + "dependencies": { + "proxy-compare": "2.5.1", + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } + } + }, + "node_modules/valtio/node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" + }, + "node_modules/varuint-bitcoin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz", + "integrity": "sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==", + "dependencies": { + "safe-buffer": "^5.1.1" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/verror/node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/web3": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.0.tgz", + "integrity": "sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==", + "hasInstallScript": true, + "dependencies": { + "web3-bzz": "1.10.0", + "web3-core": "1.10.0", + "web3-eth": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-shh": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-bzz": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.0.tgz", + "integrity": "sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==", + "hasInstallScript": true, + "dependencies": { + "@types/node": "^12.12.6", + "got": "12.1.0", + "swarm-js": "^0.1.40" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-bzz/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/web3-core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.0.tgz", + "integrity": "sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==", + "dependencies": { + "@types/bn.js": "^5.1.1", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-requestmanager": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "dependencies": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-method": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", + "integrity": "sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==", + "dependencies": { + "@ethersproject/transactions": "^5.6.2", + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "dependencies": { + "eventemitter3": "4.0.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-requestmanager": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", + "integrity": "sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==", + "dependencies": { + "util": "^0.12.5", + "web3-core-helpers": "1.10.0", + "web3-providers-http": "1.10.0", + "web3-providers-ipc": "1.10.0", + "web3-providers-ws": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-subscriptions": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz", + "integrity": "sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==", + "dependencies": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/web3-eth": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.0.tgz", + "integrity": "sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==", + "dependencies": { + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-accounts": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-eth-ens": "1.10.0", + "web3-eth-iban": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-abi": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.0.tgz", + "integrity": "sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg==", + "dependencies": { + "@ethersproject/abi": "^5.6.3", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-accounts": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz", + "integrity": "sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==", + "dependencies": { + "@ethereumjs/common": "2.5.0", + "@ethereumjs/tx": "3.3.2", + "eth-lib": "0.2.8", + "ethereumjs-util": "^7.1.5", + "scrypt-js": "^3.0.1", + "uuid": "^9.0.0", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-accounts/node_modules/@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "node_modules/web3-eth-accounts/node_modules/@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "dependencies": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" + } + }, + "node_modules/web3-eth-accounts/node_modules/eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/web3-eth-accounts/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/web3-eth-contract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz", + "integrity": "sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==", + "dependencies": { + "@types/bn.js": "^5.1.1", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-ens": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz", + "integrity": "sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==", + "dependencies": { + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-iban/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/web3-eth-personal": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", + "integrity": "sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==", + "dependencies": { + "@types/node": "^12.12.6", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-personal/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/web3-net": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.0.tgz", + "integrity": "sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==", + "dependencies": { + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-provider-engine": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-16.0.3.tgz", + "integrity": "sha512-Q3bKhGqLfMTdLvkd4TtkGYJHcoVQ82D1l8jTIwwuJp/sAp7VHnRYb9YJ14SW/69VMWoOhSpPLZV2tWb9V0WJoA==", + "license": "MIT", + "dependencies": { + "@ethereumjs/tx": "^3.3.0", + "async": "^2.5.0", + "backoff": "^2.5.0", + "clone": "^2.0.0", + "cross-fetch": "^2.1.0", + "eth-block-tracker": "^4.4.2", + "eth-json-rpc-filters": "^4.2.1", + "eth-json-rpc-infura": "^5.1.0", + "eth-json-rpc-middleware": "^6.0.0", + "eth-rpc-errors": "^3.0.0", + "eth-sig-util": "^1.4.2", + "ethereumjs-block": "^1.2.2", + "ethereumjs-util": "^5.1.5", + "ethereumjs-vm": "^2.3.4", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "readable-stream": "^2.2.9", + "request": "^2.85.0", + "semaphore": "^1.0.3", + "ws": "^5.1.1", + "xhr": "^2.2.0", + "xtend": "^4.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/web3-provider-engine/node_modules/cross-fetch": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz", + "integrity": "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.7", + "whatwg-fetch": "^2.0.4" + } + }, + "node_modules/web3-provider-engine/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/web3-provider-engine/node_modules/whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", + "license": "MIT" + }, + "node_modules/web3-provider-engine/node_modules/ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/web3-providers-http": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.0.tgz", + "integrity": "sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==", + "dependencies": { + "abortcontroller-polyfill": "^1.7.3", + "cross-fetch": "^3.1.4", + "es6-promise": "^4.2.8", + "web3-core-helpers": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-providers-ipc": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz", + "integrity": "sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==", + "dependencies": { + "oboe": "2.1.5", + "web3-core-helpers": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-providers-ws": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz", + "integrity": "sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==", + "dependencies": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.10.0", + "websocket": "^1.0.32" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-shh": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.0.tgz", + "integrity": "sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==", + "hasInstallScript": true, + "dependencies": { + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-net": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", + "dependencies": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz", + "integrity": "sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==", + "dev": true, + "dependencies": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webrtc-adapter": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-7.7.1.tgz", + "integrity": "sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A==", + "license": "BSD-3-Clause", + "dependencies": { + "rtcpeerconnection-shim": "^1.2.15", + "sdp": "^2.12.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.10.0" + } + }, + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wif": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", + "integrity": "sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==", + "dependencies": { + "bs58check": "<3.0.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "license": "MIT", + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", + "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.5.4" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", + "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.5.4" + } + }, + "node_modules/workbox-build": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", + "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.5.4", + "workbox-broadcast-update": "6.5.4", + "workbox-cacheable-response": "6.5.4", + "workbox-core": "6.5.4", + "workbox-expiration": "6.5.4", + "workbox-google-analytics": "6.5.4", + "workbox-navigation-preload": "6.5.4", + "workbox-precaching": "6.5.4", + "workbox-range-requests": "6.5.4", + "workbox-recipes": "6.5.4", + "workbox-routing": "6.5.4", + "workbox-strategies": "6.5.4", + "workbox-streams": "6.5.4", + "workbox-sw": "6.5.4", + "workbox-window": "6.5.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "license": "BSD-2-Clause" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", + "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.5.4" + } + }, + "node_modules/workbox-core": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", + "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==", + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", + "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.5.4" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", + "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", + "license": "MIT", + "dependencies": { + "workbox-background-sync": "6.5.4", + "workbox-core": "6.5.4", + "workbox-routing": "6.5.4", + "workbox-strategies": "6.5.4" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", + "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.5.4" + } + }, + "node_modules/workbox-precaching": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", + "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.5.4", + "workbox-routing": "6.5.4", + "workbox-strategies": "6.5.4" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", + "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.5.4" + } + }, + "node_modules/workbox-recipes": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", + "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "6.5.4", + "workbox-core": "6.5.4", + "workbox-expiration": "6.5.4", + "workbox-precaching": "6.5.4", + "workbox-routing": "6.5.4", + "workbox-strategies": "6.5.4" + } + }, + "node_modules/workbox-routing": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", + "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.5.4" + } + }, + "node_modules/workbox-strategies": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", + "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.5.4" + } + }, + "node_modules/workbox-streams": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", + "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.5.4", + "workbox-routing": "6.5.4" + } + }, + "node_modules/workbox-sw": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", + "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==", + "license": "MIT" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", + "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.5.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-window": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", + "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.5.4" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "license": "MIT", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "dependencies": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "node_modules/xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "dependencies": { + "xhr-request": "^1.1.0" + } + }, + "node_modules/xhr-request/node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/xhr-request/node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@apocentre/alias-sampling": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@apocentre/alias-sampling/-/alias-sampling-0.5.3.tgz", + "integrity": "sha512-7UDWIIF9hIeJqfKXkNIzkVandlwLf1FWTSdrb9iXvOP8oF544JRXQjCbiTmCv2c9n44n/FIWtehhBfNuAx2CZA==" + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==" + }, + "@babel/core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz", + "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.5", + "@babel/parser": "^7.20.5", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/generator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", + "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "requires": { + "@babel/types": "^7.20.5", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", + "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + }, + "@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/helpers": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", + "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", + "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", + "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", + "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz", + "integrity": "sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz", + "integrity": "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.20.2", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + } + }, + "@babel/preset-typescript": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" + } + }, + "@babel/runtime": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", + "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@babel/runtime-corejs3": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.6.tgz", + "integrity": "sha512-tqeujPiuEfcH067mx+7otTQWROVMKHXEaOQcAeNV5dDdbPWvPcFA8/W9LXw2NfjNmOetqLl03dfnG2WALPlsRQ==", + "dev": true, + "requires": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.11" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", + "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.5", + "@babel/types": "^7.20.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", + "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@coinbase/wallet-sdk": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-3.7.1.tgz", + "integrity": "sha512-LjyoDCB+7p0waQXfK+fUgcAs3Ezk6S6e+LYaoFjpJ6c9VTop3NyZF40Pi7df4z7QJohCwzuIDjz0Rhtig6Y7Pg==", + "requires": { + "@metamask/safe-event-emitter": "2.0.0", + "@solana/web3.js": "^1.70.1", + "bind-decorator": "^1.0.11", + "bn.js": "^5.1.1", + "buffer": "^6.0.3", + "clsx": "^1.1.0", + "eth-block-tracker": "6.1.0", + "eth-json-rpc-filters": "5.1.0", + "eth-rpc-errors": "4.0.2", + "json-rpc-engine": "6.1.0", + "keccak": "^3.0.1", + "preact": "^10.5.9", + "qs": "^6.10.3", + "rxjs": "^6.6.3", + "sha.js": "^2.4.11", + "stream-browserify": "^3.0.0", + "util": "^0.12.4" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "eth-block-tracker": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-6.1.0.tgz", + "integrity": "sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==", + "requires": { + "@metamask/safe-event-emitter": "^2.0.0", + "@metamask/utils": "^3.0.1", + "json-rpc-random-id": "^1.0.1", + "pify": "^3.0.0" + } + }, + "eth-json-rpc-filters": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-5.1.0.tgz", + "integrity": "sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ==", + "requires": { + "@metamask/safe-event-emitter": "^2.0.0", + "async-mutex": "^0.2.6", + "eth-query": "^2.1.2", + "json-rpc-engine": "^6.1.0", + "pify": "^5.0.0" + }, + "dependencies": { + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==" + } + } + }, + "eth-rpc-errors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz", + "integrity": "sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ==", + "requires": { + "fast-safe-stringify": "^2.0.6" + } + }, + "json-rpc-engine": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", + "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", + "requires": { + "@metamask/safe-event-emitter": "^2.0.0", + "eth-rpc-errors": "^4.0.2" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + }, + "preact": { + "version": "10.16.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.16.0.tgz", + "integrity": "sha512-XTSj3dJ4roKIC93pald6rWuB2qQJO9gO2iLLyTe87MrjQN+HklueLsmskbywEWqCHlclgz3/M4YLL2iBr9UmMA==" + } + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@cypress/request": { + "version": "2.88.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", + "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + } + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@date-io/core": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.16.0.tgz", + "integrity": "sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg==" + }, + "@date-io/date-fns": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.16.0.tgz", + "integrity": "sha512-bfm5FJjucqlrnQcXDVU5RD+nlGmL3iWgkHTq3uAZWVIuBu6dDmGa3m8a6zo2VQQpu8ambq9H22UyUpn7590joA==", + "requires": { + "@date-io/core": "^2.16.0" + } + }, + "@date-io/dayjs": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.16.0.tgz", + "integrity": "sha512-y5qKyX2j/HG3zMvIxTobYZRGnd1FUW2olZLS0vTj7bEkBQkjd2RO7/FEwDY03Z1geVGlXKnzIATEVBVaGzV4Iw==", + "requires": { + "@date-io/core": "^2.16.0" + } + }, + "@date-io/luxon": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.16.1.tgz", + "integrity": "sha512-aeYp5K9PSHV28946pC+9UKUi/xMMYoaGelrpDibZSgHu2VWHXrr7zWLEr+pMPThSs5vt8Ei365PO+84pCm37WQ==", + "requires": { + "@date-io/core": "^2.16.0" + } + }, + "@date-io/moment": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.16.1.tgz", + "integrity": "sha512-JkxldQxUqZBfZtsaCcCMkm/dmytdyq5pS1RxshCQ4fHhsvP5A7gSqPD22QbVXMcJydi3d3v1Y8BQdUKEuGACZQ==", + "requires": { + "@date-io/core": "^2.16.0" + } + }, + "@emotion/babel-plugin": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz", + "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.1", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.1.3" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } + } + }, + "@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "requires": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + }, + "dependencies": { + "stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + } + } + }, + "@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "requires": { + "@emotion/memoize": "^0.8.0" + } + }, + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "@emotion/react": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz", + "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/cache": "^11.10.5", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==", + "requires": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } + }, + "@emotion/server": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/@emotion/server/-/server-11.10.0.tgz", + "integrity": "sha512-MTvJ21JPo9aS02GdjFW4nhdwOi2tNNpMmAM/YED0pkxzjDNi5WbiTwXqaCnvLc2Lr8NFtjhT0az1vTJyLIHYcw==", + "requires": { + "@emotion/utils": "^1.2.0", + "html-tokenize": "^2.0.0", + "multipipe": "^1.0.2", + "through": "^2.3.8" + } + }, + "@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "@emotion/styled": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz", + "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.5", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" + } + }, + "@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "requires": {} + }, + "@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.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" + }, + "dependencies": { + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "@ethereumjs/common": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.5" + } + }, + "@ethereumjs/tx": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "requires": { + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" + } + }, + "@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/contracts": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.5.0.tgz", + "integrity": "sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg==", + "requires": { + "@ethersproject/abi": "^5.5.0", + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/solidity": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.5.0.tgz", + "integrity": "sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw==", + "requires": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/units": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.5.0.tgz", + "integrity": "sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag==", + "requires": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + } + }, + "@ethersproject/wallet": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.5.0.tgz", + "integrity": "sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q==", + "requires": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/json-wallets": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@formatjs/ecma402-abstract": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", + "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "requires": { + "@formatjs/intl-localematcher": "0.2.25", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@formatjs/fast-memoize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz", + "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@formatjs/icu-messageformat-parser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", + "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", + "requires": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/icu-skeleton-parser": "1.3.6", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@formatjs/icu-skeleton-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", + "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", + "requires": { + "@formatjs/ecma402-abstract": "1.11.4", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@formatjs/intl-localematcher": { + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz", + "integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", + "dev": true, + "requires": { + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + } + } + }, + "@jest/environment": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" + } + }, + "@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "requires": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + } + }, + "@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "requires": { + "jest-get-type": "^28.0.2" + } + }, + "@jest/fake-timers": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + } + }, + "@jest/globals": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" + } + }, + "@jest/reporters": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^9.0.1" + } + }, + "@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, + "@jest/source-map": { + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.13", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dev": true, + "requires": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", + "dev": true, + "requires": { + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + } + }, + "@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@keystonehq/base-eth-keyring": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.6.4.tgz", + "integrity": "sha512-pHTqD9CeBdTmeMIVa5ZnK7aMDb5SsHtp4uYRxa+SyYDO3kHcrqhlds43MIx5WFeDrgOStJ11w2Zji+7hbCAZLA==", + "requires": { + "@ethereumjs/tx": "3.5.1", + "@keystonehq/bc-ur-registry-eth": "^0.11.4", + "ethereumjs-util": "^7.0.8", + "hdkey": "^2.0.1", + "uuid": "^8.3.2" + }, + "dependencies": { + "@ethereumjs/tx": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.1.tgz", + "integrity": "sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA==", + "requires": { + "@ethereumjs/common": "^2.6.3", + "ethereumjs-util": "^7.1.4" + } + } + } + }, + "@keystonehq/bc-ur-registry": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.5.4.tgz", + "integrity": "sha512-z7bZe10I5k0zz9znmDTXh+o3Rzb5XsRVpwAzexubOaLxVdZ0F7aMbe2LoEsw766Hpox/7zARi7UGmLz5C8BAzA==", + "requires": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@keystonehq/bc-ur-registry-eth": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.11.4.tgz", + "integrity": "sha512-iXf5hLd0j0VuQdWUh6h7wi5j1PAkH6AGyUr1ZAYMtPflQRW/AzXEOw5GFB3dF5xi8uVoP36gPPnYFBmcFOFzqg==", + "requires": { + "@keystonehq/bc-ur-registry": "^0.5.0-alpha.5", + "ethereumjs-util": "^7.0.8", + "hdkey": "^2.0.1", + "uuid": "^8.3.2" + } + }, + "@keystonehq/eth-keyring": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/@keystonehq/eth-keyring/-/eth-keyring-0.14.4.tgz", + "integrity": "sha512-aWEKlPGtmGhZRbkRdj26ilUKs2dG+7ov78gz4F1EqU5ES+ZQud2iIlIFKElNQw3qIDZmcObMwNfL/KcyfPKUYQ==", + "requires": { + "@ethereumjs/tx": "3.0.0", + "@keystonehq/base-eth-keyring": "^0.6.4", + "@keystonehq/bc-ur-registry-eth": "^0.11.4", + "@keystonehq/sdk": "^0.12.4", + "@metamask/obs-store": "^7.0.0", + "bs58check": "^2.1.2", + "ethereumjs-util": "^7.0.8", + "hdkey": "^2.0.1", + "uuid": "^8.3.2" + }, + "dependencies": { + "@ethereumjs/tx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.0.0.tgz", + "integrity": "sha512-H9tfy6qgYxPXvt1TSObfVmVjlF43OoQqoPQ3PJsG2JiuqaMHj5ettV1pGFEC3FamENDBkl6vD6niQEvIlXv/VQ==", + "requires": { + "@ethereumjs/common": "^2.0.0", + "ethereumjs-util": "^7.0.7" + } + } + } + }, + "@keystonehq/sdk": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@keystonehq/sdk/-/sdk-0.12.4.tgz", + "integrity": "sha512-vC/O+oSH6g9Hp8WQxd7nO5Xf4Z8q86YWKOZUZsh5ZgfWNVgsy1zGTprc1wGbhMAjkcnWTtreRZUxTOIWJRPNuw==", + "requires": { + "@ngraveio/bc-ur": "^1.0.0", + "qrcode.react": "^1.0.1", + "react": "16.13.1", + "react-dom": "16.13.1", + "react-modal": "^3.12.1", + "react-qr-reader": "^2.2.1", + "rxjs": "^6.6.3", + "typescript": "^4.6.2" + }, + "dependencies": { + "qrcode.react": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-1.0.1.tgz", + "integrity": "sha512-8d3Tackk8IRLXTo67Y+c1rpaiXjoz/Dd2HpcMdW//62/x8J1Nbho14Kh8x974t9prsLHN6XqVgcnRiBGFptQmg==", + "requires": { + "loose-envify": "^1.4.0", + "prop-types": "^15.6.0", + "qr.js": "0.0.0" + } + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-modal": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz", + "integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==", + "requires": { + "exenv": "^1.2.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.0", + "warning": "^4.0.3" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "@ledgerhq/cryptoassets": { + "version": "7.0.0", + "requires": { + "invariant": "2" + } + }, + "@ledgerhq/devices": { + "version": "7.0.5", + "requires": { + "@ledgerhq/errors": "^6.12.1", + "@ledgerhq/logs": "^6.10.1", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "@ledgerhq/errors": { + "version": "6.12.1" + }, + "@ledgerhq/hw-app-eth": { + "version": "6.30.2", + "requires": { + "@ethersproject/abi": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ledgerhq/cryptoassets": "^7.0.0", + "@ledgerhq/errors": "^6.12.1", + "@ledgerhq/hw-transport": "^6.27.8", + "@ledgerhq/hw-transport-mocker": "^6.27.8", + "@ledgerhq/logs": "^6.10.1", + "axios": "^0.26.1", + "bignumber.js": "^9.1.0", + "crypto-js": "^4.1.1" + } + }, + "@ledgerhq/hw-transport": { + "version": "6.27.8", + "requires": { + "@ledgerhq/devices": "^7.0.5", + "@ledgerhq/errors": "^6.12.1", + "events": "^3.3.0" + } + }, + "@ledgerhq/hw-transport-mocker": { + "version": "6.27.8", + "requires": { + "@ledgerhq/hw-transport": "^6.27.8", + "@ledgerhq/logs": "^6.10.1" + } + }, + "@ledgerhq/hw-transport-u2f": { + "version": "5.36.0-deprecated", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.36.0-deprecated.tgz", + "integrity": "sha512-T/+mGHIiUK/ZQATad6DMDmobCMZ1mVST952009jKzhaE1Et2Uy2secU+QhRkx3BfEAkvwa0zSRSYCL9d20Iqjg==", + "requires": { + "@ledgerhq/errors": "^5.34.0", + "@ledgerhq/hw-transport": "^5.34.0", + "@ledgerhq/logs": "^5.30.0", + "u2f-api": "0.2.7" + }, + "dependencies": { + "@ledgerhq/devices": { + "version": "5.51.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz", + "integrity": "sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==", + "requires": { + "@ledgerhq/errors": "^5.50.0", + "@ledgerhq/logs": "^5.50.0", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "@ledgerhq/errors": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz", + "integrity": "sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==" + }, + "@ledgerhq/hw-transport": { + "version": "5.51.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz", + "integrity": "sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==", + "requires": { + "@ledgerhq/devices": "^5.51.1", + "@ledgerhq/errors": "^5.50.0", + "events": "^3.3.0" + } + }, + "@ledgerhq/logs": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz", + "integrity": "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==" + } + } + }, + "@ledgerhq/hw-transport-webusb": { + "version": "6.27.8", + "requires": { + "@ledgerhq/devices": "^7.0.5", + "@ledgerhq/errors": "^6.12.1", + "@ledgerhq/hw-transport": "^6.27.8", + "@ledgerhq/logs": "^6.10.1" + } + }, + "@ledgerhq/logs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1.tgz", + "integrity": "sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==" + }, + "@lit-labs/ssr-dom-shim": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz", + "integrity": "sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==" + }, + "@lit/reactive-element": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", + "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "requires": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + } + } + }, + "@metamask/obs-store": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@metamask/obs-store/-/obs-store-7.0.0.tgz", + "integrity": "sha512-Tr61Uu9CGXkCg5CZwOYRMQERd+y6fbtrtLd/PzDTPHO5UJpmSbU+7MPcQK7d1DwZCOCeCIvhmZSUCvYliC8uGw==", + "requires": { + "@metamask/safe-event-emitter": "^2.0.0", + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "@metamask/safe-event-emitter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", + "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==" + }, + "@metamask/utils": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-3.6.0.tgz", + "integrity": "sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==", + "requires": { + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "semver": "^7.3.8", + "superstruct": "^1.0.3" + }, + "dependencies": { + "superstruct": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", + "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==" + } + } + }, + "@motionone/animation": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz", + "integrity": "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==", + "requires": { + "@motionone/easing": "^10.15.1", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "@motionone/dom": { + "version": "10.16.2", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.16.2.tgz", + "integrity": "sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==", + "requires": { + "@motionone/animation": "^10.15.1", + "@motionone/generators": "^10.15.1", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "@motionone/easing": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz", + "integrity": "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==", + "requires": { + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "@motionone/generators": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz", + "integrity": "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==", + "requires": { + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "@motionone/svelte": { + "version": "10.16.2", + "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.16.2.tgz", + "integrity": "sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==", + "requires": { + "@motionone/dom": "^10.16.2", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "@motionone/types": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz", + "integrity": "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==" + }, + "@motionone/utils": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz", + "integrity": "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==", + "requires": { + "@motionone/types": "^10.15.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "@motionone/vue": { + "version": "10.16.2", + "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.2.tgz", + "integrity": "sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==", + "requires": { + "@motionone/dom": "^10.16.2", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "@mui/base": { + "version": "5.0.0-beta.10", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.10.tgz", + "integrity": "sha512-moTAhGwFfQffj7hsu61FnqcGqVcd53A1CrOhnskM9TF0Uh2rnLDMCuar4JRUWWpaJofAfQEbQBBFPadFQLI4PA==", + "requires": { + "@babel/runtime": "^7.22.6", + "@emotion/is-prop-valid": "^1.2.1", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "requires": { + "@emotion/memoize": "^0.8.1" + } + }, + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } + } + }, + "@mui/core-downloads-tracker": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.4.tgz", + "integrity": "sha512-pW2XghSi3hpYKX57Wu0SCWMTSpzvXZmmucj3TcOJWaCiFt4xr05w2gcwBZi36dAp9uvd9//9N51qbblmnD+GPg==" + }, + "@mui/icons-material": { + "version": "5.14.3", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.3.tgz", + "integrity": "sha512-XkxWPhageu1OPUm2LWjo5XqeQ0t2xfGe8EiLkRW9oz2LHMMZmijvCxulhgquUVTF1DnoSh+3KoDLSsoAFtVNVw==", + "requires": { + "@babel/runtime": "^7.22.6" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } + } + }, + "@mui/material": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.4.tgz", + "integrity": "sha512-2XUV3KyRC07BQPPzEgd+ss3x/ezXtHeKtOGCMCNmx3MauZojPYUpSwFkE0fYgYCD9dMQMVG4DY/VF38P0KShsg==", + "requires": { + "@babel/runtime": "^7.22.6", + "@mui/base": "5.0.0-beta.10", + "@mui/core-downloads-tracker": "^5.14.4", + "@mui/system": "^5.14.4", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "@types/react-transition-group": "^4.4.6", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } + } + }, + "@mui/private-theming": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.4.tgz", + "integrity": "sha512-ISXsHDiQ3z1XA4IuKn+iXDWvDjcz/UcQBiFZqtdoIsEBt8CB7wgdQf3LwcwqO81dl5ofg/vNQBEnXuKfZHrnYA==", + "requires": { + "@babel/runtime": "^7.22.6", + "@mui/utils": "^5.14.4", + "prop-types": "^15.8.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } + } + }, + "@mui/styled-engine": { + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz", + "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==", + "requires": { + "@babel/runtime": "^7.21.0", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } + } + }, + "@mui/system": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.4.tgz", + "integrity": "sha512-oPgfWS97QNfHcDBapdkZIs4G5i85BJt69Hp6wbXF6s7vi3Evcmhdk8AbCRW6n0sX4vTj8oe0mh0RIm1G2A1KDA==", + "requires": { + "@babel/runtime": "^7.22.6", + "@mui/private-theming": "^5.14.4", + "@mui/styled-engine": "^5.13.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } + } + }, + "@mui/types": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz", + "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==", + "requires": {} + }, + "@mui/utils": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.4.tgz", + "integrity": "sha512-4ANV0txPD3x0IcTCSEHKDWnsutg1K3m6Vz5IckkbLXVYu17oOZCVUdOKsb/txUmaCd0v0PmSRe5PW+Mlvns5dQ==", + "requires": { + "@babel/runtime": "^7.22.6", + "@types/prop-types": "^15.7.5", + "@types/react-is": "^18.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } + } + }, + "@mui/x-date-pickers": { + "version": "5.0.20", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.20.tgz", + "integrity": "sha512-ERukSeHIoNLbI1C2XRhF9wRhqfsr+Q4B1SAw2ZlU7CWgcG8UBOxgqRKDEOVAIoSWL+DWT6GRuQjOKvj6UXZceA==", + "requires": { + "@babel/runtime": "^7.18.9", + "@date-io/core": "^2.15.0", + "@date-io/date-fns": "^2.15.0", + "@date-io/dayjs": "^2.15.0", + "@date-io/luxon": "^2.15.0", + "@date-io/moment": "^2.15.0", + "@mui/utils": "^5.10.3", + "@types/react-transition-group": "^4.4.5", + "clsx": "^1.2.1", + "prop-types": "^15.7.2", + "react-transition-group": "^4.4.5", + "rifm": "^0.12.1" + } + }, + "@next/bundle-analyzer": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-13.4.13.tgz", + "integrity": "sha512-XygyFn3V61vF9LkU1zM6GlAMp8h7FbApaLA40anMGhZtQt/0S1tGSNImv9T/Z3ZTbWIQTcbYxyHIM6Fv/uSGrA==", + "dev": true, + "requires": { + "webpack-bundle-analyzer": "4.7.0" + } + }, + "@next/env": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.0.tgz", + "integrity": "sha512-/FCkDpL/8SodJEXvx/DYNlOD5ijTtkozf4PPulYPtkPOJaMPpBSOkzmsta4fnrnbdH6eZjbwbiXFdr6gSQCV4w==" + }, + "@next/eslint-plugin-next": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.1.tgz", + "integrity": "sha512-SBrOFS8PC3nQ5aeZmawJkjKkWjwK9RoxvBSv/86nZp0ubdoVQoko8r8htALd9ufp16NhacCdqhu9bzZLDWtALQ==", + "dev": true, + "requires": { + "glob": "7.1.7" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "@next/swc-darwin-arm64": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.0.tgz", + "integrity": "sha512-x5U5gJd7ZvrEtTFnBld9O2bUlX8opu7mIQUqRzj7KeWzBwPhrIzTTsQXAiNqsaMuaRPvyHBVW/5d/6g6+89Y8g==", + "optional": true + }, + "@ngraveio/bc-ur": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@ngraveio/bc-ur/-/bc-ur-1.1.6.tgz", + "integrity": "sha512-G+2XgjXde2IOcEQeCwR250aS43/Swi7gw0FuETgJy2c3HqF8f88SXDMsIGgJlZ8jXd0GeHR4aX0MfjXf523UZg==", + "requires": { + "@apocentre/alias-sampling": "^0.5.3", + "assert": "^2.0.0", + "bignumber.js": "^9.0.1", + "cbor-sync": "^1.0.4", + "crc": "^3.8.0", + "jsbi": "^3.1.5", + "sha.js": "^2.4.11" + } + }, + "@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "requires": { + "@noble/hashes": "1.3.1" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + } + } + }, + "@noble/hashes": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", + "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==" + }, + "@noble/secp256k1": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@openzeppelin/contracts": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.3.tgz", + "integrity": "sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg==", + "dev": true + }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "@reduxjs/toolkit": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz", + "integrity": "sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==", + "requires": { + "immer": "^9.0.21", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.8" + } + }, + "@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + } + } + }, + "@rushstack/eslint-patch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", + "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==", + "dev": true + }, + "@safe-global/safe-apps-sdk": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.11.0.tgz", + "integrity": "sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A==", + "requires": { + "@safe-global/safe-gateway-typescript-sdk": "^3.5.3", + "ethers": "^5.7.2" + } + }, + "@safe-global/safe-core-sdk": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@safe-global/safe-core-sdk/-/safe-core-sdk-3.3.4.tgz", + "integrity": "sha512-tgcK7VWo66Z8632xaYDzUHQ8InPOaI10ELk1wCrO/C3QjPwxjIozbMGOMzF4RZPCSJX2YAHowAvOgmEukgSkxA==", + "requires": { + "@ethersproject/solidity": "^5.7.0", + "@safe-global/safe-core-sdk-types": "^1.9.2", + "@safe-global/safe-core-sdk-utils": "^1.7.4", + "@safe-global/safe-deployments": "^1.25.0", + "ethereumjs-util": "^7.1.5", + "semver": "^7.3.8", + "web3-utils": "^1.8.1" + }, + "dependencies": { + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + } + } + }, + "@safe-global/safe-core-sdk-types": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-1.10.1.tgz", + "integrity": "sha512-BKvuYTLOlY16Rq6qCXglmnL6KxInDuXMFqZMaCzwDKiEh+uoHu3xCumG5tVtWOkCgBF4XEZXMqwZUiLcon7IsA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@safe-global/safe-deployments": "^1.20.2", + "web3-core": "^1.8.1", + "web3-utils": "^1.8.1" + }, + "dependencies": { + "@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "requires": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + } + } + }, + "@safe-global/safe-core-sdk-utils": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@safe-global/safe-core-sdk-utils/-/safe-core-sdk-utils-1.7.4.tgz", + "integrity": "sha512-ITocwSWlFUA1K9VMP/eJiMfgbP/I9qDxAaFz7ukj5N5NZD3ihVQZkmqML6hjse5UhrfjCnfIEcLkNZhtB2XC2Q==", + "requires": { + "@safe-global/safe-core-sdk-types": "^1.9.2", + "semver": "^7.3.8", + "web3-utils": "^1.8.1" + } + }, + "@safe-global/safe-deployments": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.26.0.tgz", + "integrity": "sha512-Tw89O4/paT19ieMoiWQbqRApb0Bef/DxweS9rxodXAM5EQModkbyFXGZca+YxXE67sLvWjLr2jJUOxwze8mhGw==", + "requires": { + "semver": "^7.3.7" + } + }, + "@safe-global/safe-ethers-lib": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@safe-global/safe-ethers-lib/-/safe-ethers-lib-1.9.4.tgz", + "integrity": "sha512-WhzcmNun0s0VxeVQKRqaapV0vEpdm76zZBR2Du+S+58u1r57OjZkOSL2Gru0tdwkt3FIZZtE3OhDu09M70pVkA==", + "requires": { + "@safe-global/safe-core-sdk-types": "^1.9.2", + "@safe-global/safe-core-sdk-utils": "^1.7.4", + "ethers": "5.7.2" + } + }, + "@safe-global/safe-gateway-typescript-sdk": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.8.0.tgz", + "integrity": "sha512-CiGWIHgIaOdICpDxp05Jw3OPslWTu8AnL0PhrCT1xZgIO86NlMMLzkGbeycJ4FHpTjA999O791Oxp4bZPIjgHA==", + "requires": { + "cross-fetch": "^3.1.5" + } + }, + "@safe-global/safe-modules-deployments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-modules-deployments/-/safe-modules-deployments-1.1.0.tgz", + "integrity": "sha512-UgSH/7Zcv6BJBBqoipKts6SKCPYPau9F1/arndsBYvb5Ayn28Q9cu/yiRbln2iI4VL21SIl9lcO/zRKJKl7QbQ==" + }, + "@safe-global/safe-react-components": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@safe-global/safe-react-components/-/safe-react-components-2.0.6.tgz", + "integrity": "sha512-KCo/zf+xcBlXhcROQbyyscsfOExLV1dTQBoKrB2zluwQOQjbsKZu3qOpnIgU/94yHATm38IOJdC8snv6fQQe0A==", + "requires": { + "@ethersproject/address": "^5.7.0", + "ethereum-blockies-base64": "^1.0.2" + } + }, + "@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" + }, + "@scure/bip32": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz", + "integrity": "sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==", + "requires": { + "@noble/hashes": "~1.1.1", + "@noble/secp256k1": "~1.6.0", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", + "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "requires": { + "@noble/hashes": "~1.1.1", + "@scure/base": "~1.1.0" + } + }, + "@sentry-internal/tracing": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.62.0.tgz", + "integrity": "sha512-LHT8i2c93JhQ1uBU1cqb5AIhmHPWlyovE4ZQjqEizk6Fk7jXc9L8kKhaIWELVPn8Xg6YtfGWhRBZk3ssj4JpfQ==", + "requires": { + "@sentry/core": "7.62.0", + "@sentry/types": "7.62.0", + "@sentry/utils": "7.62.0", + "tslib": "^2.4.1 || ^1.9.3" + } + }, + "@sentry/browser": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.62.0.tgz", + "integrity": "sha512-e52EPiRtPTZv+9iFIZT3n8qNozc8ymqT0ra7QwkwbVuF9fWSCOc1gzkTa9VKd/xwcGzOfglozl2O+Zz4GtoGUg==", + "requires": { + "@sentry-internal/tracing": "7.62.0", + "@sentry/core": "7.62.0", + "@sentry/replay": "7.62.0", + "@sentry/types": "7.62.0", + "@sentry/utils": "7.62.0", + "tslib": "^2.4.1 || ^1.9.3" + } + }, + "@sentry/core": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.62.0.tgz", + "integrity": "sha512-l6n+c3mSlWa+FhT/KBrAU1BtbaLYCljf5MuGlH6NKRpnBcrZCbzk8ZuFcSND+gr2SqxycQkhEWX1zxVHPDdZxw==", + "requires": { + "@sentry/types": "7.62.0", + "@sentry/utils": "7.62.0", + "tslib": "^2.4.1 || ^1.9.3" + } + }, + "@sentry/react": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.62.0.tgz", + "integrity": "sha512-jCQEs6lYGQdqj6XXWdR+i5IzJMgrSzTFI/TSMSeTdAeldmppg7uuRuJlBJGaWsxoiwed539Vn3kitRswn1ugeA==", + "requires": { + "@sentry/browser": "7.62.0", + "@sentry/types": "7.62.0", + "@sentry/utils": "7.62.0", + "hoist-non-react-statics": "^3.3.2", + "tslib": "^2.4.1 || ^1.9.3" + } + }, + "@sentry/replay": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.62.0.tgz", + "integrity": "sha512-mSbqtV6waQAvWTG07uR211jft63HduRXdHq+1xuaKulDcZ9chOkYqOCMpL0HjRIANEiZRTDDKlIo4s+3jkY5Ug==", + "requires": { + "@sentry/core": "7.62.0", + "@sentry/types": "7.62.0", + "@sentry/utils": "7.62.0" + } + }, + "@sentry/tracing": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.62.0.tgz", + "integrity": "sha512-3QuThslt43m6Ui4AVAVCjlfQYeRhlRJJpFDrQd60WfRWXEeTr00VSRmIDfPUKmBFBDiXK+xXjTb/uMUM3ZeDOg==", + "requires": { + "@sentry-internal/tracing": "7.62.0" + } + }, + "@sentry/types": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.62.0.tgz", + "integrity": "sha512-oPy/fIT3o2VQWLTq01R2W/jt13APYMqZCVa0IT3lF9lgxzgfTbeZl3nX2FgCcc8ntDZC0dVw03dL+wLvjPqQpQ==" + }, + "@sentry/utils": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.62.0.tgz", + "integrity": "sha512-12w+Lpvn2iaocgjf6AxhtBz7XG8iFE5aMyt9BTuQp1/7sOjtEVNHlDlGrHbtPqxNCmL2SEcmNHka1panLqWHDw==", + "requires": { + "@sentry/types": "7.62.0", + "tslib": "^2.4.1 || ^1.9.3" + } + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "dev": true + }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + }, + "@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@solana/buffer-layout": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "requires": { + "buffer": "~6.0.3" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "@solana/web3.js": { + "version": "1.78.3", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.78.3.tgz", + "integrity": "sha512-qhpnyIlrj/4Czw1dBFZK6KgZBk5FwuJhvMl0C7m94jhl90yDC8b6w4svKwPjhB+OOrdQAzHyRp0+ocEs/Liw7w==", + "requires": { + "@babel/runtime": "^7.22.6", + "@noble/curves": "^1.0.0", + "@noble/hashes": "^1.3.0", + "@solana/buffer-layout": "^4.0.0", + "agentkeepalive": "^4.3.0", + "bigint-buffer": "^1.1.5", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.3", + "fast-stable-stringify": "^1.0.0", + "jayson": "^4.1.0", + "node-fetch": "^2.6.12", + "rpc-websockets": "^7.5.1", + "superstruct": "^0.14.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } + } + }, + "@stablelib/aead": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz", + "integrity": "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==" + }, + "@stablelib/binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", + "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", + "requires": { + "@stablelib/int": "^1.0.1" + } + }, + "@stablelib/bytes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", + "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" + }, + "@stablelib/chacha": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz", + "integrity": "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/chacha20poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz", + "integrity": "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==", + "requires": { + "@stablelib/aead": "^1.0.1", + "@stablelib/binary": "^1.0.1", + "@stablelib/chacha": "^1.0.1", + "@stablelib/constant-time": "^1.0.1", + "@stablelib/poly1305": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", + "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" + }, + "@stablelib/ed25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", + "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", + "requires": { + "@stablelib/random": "^1.0.2", + "@stablelib/sha512": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/hash": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", + "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" + }, + "@stablelib/hkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz", + "integrity": "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==", + "requires": { + "@stablelib/hash": "^1.0.1", + "@stablelib/hmac": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/hmac": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz", + "integrity": "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==", + "requires": { + "@stablelib/constant-time": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/int": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", + "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" + }, + "@stablelib/keyagreement": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", + "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", + "requires": { + "@stablelib/bytes": "^1.0.1" + } + }, + "@stablelib/poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", + "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", + "requires": { + "@stablelib/constant-time": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/random": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", + "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/sha256": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz", + "integrity": "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/sha512": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", + "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/wipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", + "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" + }, + "@stablelib/x25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", + "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", + "requires": { + "@stablelib/keyagreement": "^1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/wipe": "^1.0.1" + } + }, + "@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "requires": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", + "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "dev": true, + "requires": {} + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz", + "integrity": "sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==", + "dev": true, + "requires": {} + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz", + "integrity": "sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==", + "dev": true, + "requires": {} + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", + "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "dev": true, + "requires": {} + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", + "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "dev": true, + "requires": {} + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", + "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "dev": true, + "requires": {} + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", + "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "dev": true, + "requires": {} + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", + "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "dev": true, + "requires": {} + }, + "@svgr/babel-preset": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", + "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "dev": true, + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + } + }, + "@svgr/core": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", + "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "dev": true, + "requires": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + } + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", + "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0", + "entities": "^4.4.0" + } + }, + "@svgr/plugin-jsx": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", + "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "dev": true, + "requires": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" + } + }, + "@svgr/plugin-svgo": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", + "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" + } + }, + "@svgr/webpack": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", + "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "dev": true, + "requires": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-constant-elements": "^7.18.12", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@svgr/core": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "@svgr/plugin-svgo": "^6.5.1" + } + }, + "@swc/helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.2.tgz", + "integrity": "sha512-556Az0VX7WR6UdoTn4htt/l3zPQ7bsQWK+HqdG4swV7beUCxo/BqmvbOpUkTIm/9ih86LIf1qsUnywNL3obGHw==", + "requires": { + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "@testing-library/cypress": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/@testing-library/cypress/-/cypress-8.0.7.tgz", + "integrity": "sha512-3HTV725rOS+YHve/gD9coZp/UcPK5xhr4H0GMnq/ni6USdtzVtSOG9WBFtd8rYnrXk8rrGD+0toRFYouJNIG0Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.14.6", + "@testing-library/dom": "^8.1.0" + } + }, + "@testing-library/dom": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz", + "integrity": "sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^5.0.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.4.4", + "pretty-format": "^27.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } + } + }, + "@testing-library/jest-dom": { + "version": "5.16.5", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", + "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==", + "dev": true, + "requires": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@testing-library/react": { + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" + } + }, + "@testing-library/user-event": { + "version": "14.4.3", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.4.3.tgz", + "integrity": "sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==", + "dev": true, + "requires": {} + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@trezor/analytics": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@trezor/analytics/-/analytics-1.0.3.tgz", + "integrity": "sha512-7a0bHkY/+z6cDRoh1ZkhffHGw7iaVayD1UpP3fm4lPzrRpGQeH9ksRg8ZT0mBs6Pj+TLETzZRrS5ZBpDK0Piug==", + "requires": { + "@trezor/utils": "9.0.9" + } + }, + "@trezor/blockchain-link": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link/-/blockchain-link-2.1.13.tgz", + "integrity": "sha512-5yRvP8cFKjYd3FBRmUS6VJxHRLm8IuQg237hcRF8RbYRgW6ev7dwkjYmcVYz2iWXGaz+/FV8G0/xB/pmHhrpPQ==", + "requires": { + "@trezor/blockchain-link-types": "1.0.2", + "@trezor/blockchain-link-utils": "1.0.3", + "@trezor/utils": "9.0.9", + "@trezor/utxo-lib": "1.0.7", + "@types/web": "^0.0.99", + "bignumber.js": "^9.1.1", + "events": "^3.3.0", + "ripple-lib": "^1.10.1", + "socks-proxy-agent": "6.1.1", + "ws": "7.5.9" + }, + "dependencies": { + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} + } + } + }, + "@trezor/blockchain-link-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-types/-/blockchain-link-types-1.0.2.tgz", + "integrity": "sha512-ON3A2Anu5k3BkMFtG0LWO48ZxikyWgSORqQ12ki3KDbTbqZV5BwAZTeFchUq8cv1kDlqkG7AtMV2nY9G3KfYOA==" + }, + "@trezor/blockchain-link-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.0.3.tgz", + "integrity": "sha512-/mti1QY8n053P11wQwnQyBAASS+nNVBKu2kSZo8KAESwdnFGcnZwH0okXHTlUQZFud5ppg9EYJk9mpk0jf91tQ==", + "requires": { + "@trezor/utils": "9.0.8", + "bignumber.js": "^9.1.1" + }, + "dependencies": { + "@trezor/utils": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@trezor/utils/-/utils-9.0.8.tgz", + "integrity": "sha512-XsX+VXP2UxanYo+LbY7zcjeIumEWFs5lArTAfK1fdWTIdiV8Od2htNO+D9lnCytvuu04LeJx7RihxinsQQVDvA==" + } + } + }, + "@trezor/connect": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/@trezor/connect/-/connect-9.0.11.tgz", + "integrity": "sha512-8fifMt3xtqIQ4122aHNb8e3l0uisVujsWXUJ/LQS6N+t6SnilohBZ8nfzUBQaCxo2JuorLuXmxQ1ngNpaL45TA==", + "requires": { + "@trezor/blockchain-link": "2.1.13", + "@trezor/connect-analytics": "1.0.2", + "@trezor/connect-common": "0.0.16", + "@trezor/transport": "1.1.12", + "@trezor/utils": "9.0.9", + "@trezor/utxo-lib": "1.0.7", + "bignumber.js": "^9.1.1", + "blakejs": "^1.2.1", + "cross-fetch": "^3.1.6", + "events": "^3.3.0", + "randombytes": "2.1.0", + "tslib": "2.5.2" + }, + "dependencies": { + "tslib": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + } + } + }, + "@trezor/connect-analytics": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@trezor/connect-analytics/-/connect-analytics-1.0.2.tgz", + "integrity": "sha512-eUAWb1nc5wGAKmNVTmiOc9DlFr+mbG+1JevzVUFB2q3VLQzcjf0st+RWE5DuDnPUVJiJFxBQWTqWlzACtq/HzQ==", + "requires": { + "@trezor/analytics": "1.0.3" + } + }, + "@trezor/connect-common": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@trezor/connect-common/-/connect-common-0.0.16.tgz", + "integrity": "sha512-DPGWhNYTe8SQO/XzqvVtY5YCOtRGHChN01J2Z5p3xD6aFGceou7SE0ROOcqU0ceSzMgl13+I9I0qXq/OLTGBGw==", + "requires": { + "@trezor/env-utils": "1.0.2" + } + }, + "@trezor/connect-web": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/@trezor/connect-web/-/connect-web-9.0.11.tgz", + "integrity": "sha512-9398lmzxPGm/aZGM9OvkjasQ4kUQQs5bYz79eDtFz3jf24SyMM1yf2KvdvdssIyIfvcAbyJLZ+DK1qw2HxWn/Q==", + "requires": { + "@trezor/connect": "9.0.11", + "@trezor/utils": "9.0.9", + "events": "^3.3.0" + } + }, + "@trezor/env-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@trezor/env-utils/-/env-utils-1.0.2.tgz", + "integrity": "sha512-fPrX6EjaMHnRwAje7h2H3Qgu5/sBoewE8441j8cbBzxfJRgRuQJYZaGCy7lDALjxEwp7g02ZZ/FWavIhWGZIcQ==", + "requires": { + "ua-parser-js": "^1.0.34" + } + }, + "@trezor/transport": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@trezor/transport/-/transport-1.1.12.tgz", + "integrity": "sha512-RInOSOmgJ383QOBJbPzjyQW9BoWZ6HTneUmPkdzqydLxn9eyD3Ui13+W9fWFmxoMmljxJKct93twgxgHKUkhCg==", + "requires": { + "@trezor/utils": "9.0.9", + "bytebuffer": "^5.0.1", + "json-stable-stringify": "^1.0.2", + "long": "^4.0.0", + "prettier": "2.8.7", + "protobufjs": "6.11.3" + } + }, + "@trezor/utils": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@trezor/utils/-/utils-9.0.9.tgz", + "integrity": "sha512-+jzHy+YG3zJsnB11YfudT1a5u5lcwNX/tKoW9VmPU+isuW725M6uUOL+MSgW1aHucCJPyBAp0XUUssLE/ifqBw==" + }, + "@trezor/utxo-lib": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@trezor/utxo-lib/-/utxo-lib-1.0.7.tgz", + "integrity": "sha512-brC5xqGgT6yloHz3RWUK1CdEYkOSEjrhYM18GAzAaqS4MBULWDBPDD5Qt2XcYTOaoR/+8PKUXHdHVm+olbRSlA==", + "requires": { + "@trezor/utils": "9.0.9", + "bchaddrjs": "^0.5.2", + "bech32": "^2.0.0", + "bip66": "^1.1.5", + "bitcoin-ops": "^1.4.1", + "blake-hash": "^2.0.0", + "blakejs": "^1.2.1", + "bn.js": "^5.2.1", + "bs58": "^5.0.0", + "bs58check": "^3.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "int64-buffer": "^1.0.1", + "pushdata-bitcoin": "^1.0.1", + "tiny-secp256k1": "^1.1.6", + "typeforce": "^1.18.0", + "varuint-bitcoin": "^1.1.2", + "wif": "^2.0.6" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + }, + "base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "requires": { + "base-x": "^4.0.0" + } + }, + "bs58check": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", + "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", + "requires": { + "@noble/hashes": "^1.2.0", + "bs58": "^5.0.0" + } + } + } + }, + "@truffle/hdwallet": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@truffle/hdwallet/-/hdwallet-0.1.3.tgz", + "integrity": "sha512-kuikvLE+4WvVIj91CSrRVN92QGh+1Vlx8PRkxKQlvZjjE3J5NmvwfAs7b9poTeC4c6YfoHqwike1kfd1qYXO1w==", + "requires": { + "ethereum-cryptography": "1.1.2", + "keccak": "3.0.2", + "secp256k1": "4.0.3" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==" + }, + "ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", + "requires": { + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" + } + } + } + }, + "@truffle/hdwallet-provider": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-2.1.13.tgz", + "integrity": "sha512-wh93LLumxH8+pPY11DrsNVHjSO3AqMkwPNAWqEi0hRw2BH4QzDhEf2G88GDWJPZPY/zGFSxYHDACtJmUUfRwYw==", + "requires": { + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "@metamask/eth-sig-util": "4.0.1", + "@truffle/hdwallet": "^0.1.3", + "@types/ethereum-protocol": "^1.0.0", + "@types/web3": "1.0.20", + "@types/web3-provider-engine": "^14.0.0", + "ethereum-cryptography": "1.1.2", + "ethereum-protocol": "^1.0.1", + "ethereumjs-util": "^7.1.5", + "web3": "1.10.0", + "web3-provider-engine": "16.0.3" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==" + }, + "ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", + "requires": { + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" + } + } + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@ts-morph/common": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.12.3.tgz", + "integrity": "sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w==", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "minimatch": "^3.0.4", + "mkdirp": "^1.0.4", + "path-browserify": "^1.0.1" + } + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@typechain/ethers-v5": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz", + "integrity": "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==", + "dev": true, + "requires": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + } + }, + "@types/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", + "devOptional": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "devOptional": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "devOptional": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "devOptional": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "requires": { + "@types/node": "*" + } + }, + "@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/debug": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", + "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "requires": { + "@types/ms": "*" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + }, + "@types/ethereum-protocol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/ethereum-protocol/-/ethereum-protocol-1.0.2.tgz", + "integrity": "sha512-Ri/hwt4UckZlF7eqhhAQcXsNvcgQmSJOKZteLco1/5NsRcneW/cJuQcrQNILN2Ohs9WUQjeGW3ZRRNqkEVMzuQ==", + "requires": { + "bignumber.js": "7.2.1" + }, + "dependencies": { + "bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==" + } + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "28.1.8", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.8.tgz", + "integrity": "sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==", + "dev": true, + "requires": { + "expect": "^28.0.0", + "pretty-format": "^28.0.0" + } + }, + "@types/js-cookie": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.2.tgz", + "integrity": "sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA==", + "dev": true + }, + "@types/jsdom": { + "version": "16.2.15", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz", + "integrity": "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/parse5": "^6.0.3", + "@types/tough-cookie": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "requires": { + "@types/node": "*" + } + }, + "@types/lodash": { + "version": "4.14.191", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" + }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + }, + "@types/papaparse": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.5.tgz", + "integrity": "sha512-R1icl/hrJPFRpuYj9PVG03WBAlghJj4JW9Py5QdR8FFSxaLmZRyu7xYDCCBZIJNfUv3MYaeBbhBoX958mUTAaw==", + "requires": { + "@types/node": "*" + } + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true + }, + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-0VLab/pcLTLcfbxi6THSIMVYcw9hEUBGvjwwaGpW77mMgRXfGF+a76t7BxTGyLh1y68tBvrffp8UWnqvm76+yg==", + "dev": true, + "requires": { + "postcss": "^8.0.0" + } + }, + "@types/postcss-modules-scope": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.1.tgz", + "integrity": "sha512-LNkp3c4ML9EQj2dgslp4i80Jxj72YK3HjYzrTn6ftUVylW1zaKFGqrMlNIyqBmPWmIhZ/Y5r0Y4T49Hk1IuDUg==", + "dev": true, + "requires": { + "postcss": "^8.0.0" + } + }, + "@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "@types/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/react": { + "version": "18.0.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", + "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", + "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", + "devOptional": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-gtm-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/react-gtm-module/-/react-gtm-module-2.0.1.tgz", + "integrity": "sha512-T/DN9gAbCYk5wJ1nxf4pSwmXz4d1iVjM++OoG+mwMfz9STMAotGjSb65gJHOS5bPvl6vLSsJnuC+y/43OQrltg==", + "dev": true + }, + "@types/react-is": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.1.tgz", + "integrity": "sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-qr-reader": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/react-qr-reader/-/react-qr-reader-2.1.4.tgz", + "integrity": "sha512-2Hq+UNfsO2TVqxbFlOE0gGhQr/+C4wdgNDaaLV8K93mK/Z7Vw2D3YbMlnJAaSzM45fUtYJs0vc48wV04+OEkiA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-transition-group": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "requires": { + "@types/react": "*" + } + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "requires": { + "@types/node": "*" + } + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "requires": { + "@types/node": "*" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "requires": { + "@types/node": "*" + } + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/testing-library__jest-dom": { + "version": "5.14.5", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz", + "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==", + "dev": true, + "requires": { + "@types/jest": "*" + }, + "dependencies": { + "@jest/expect-utils": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz", + "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==", + "dev": true, + "requires": { + "jest-get-type": "^29.2.0" + } + }, + "@jest/schemas": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, + "@jest/types": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", + "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "dev": true, + "requires": { + "@jest/schemas": "^29.0.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@types/jest": { + "version": "29.2.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.4.tgz", + "integrity": "sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "diff-sequences": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz", + "integrity": "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==", + "dev": true + }, + "expect": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz", + "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==", + "dev": true, + "requires": { + "@jest/expect-utils": "^29.3.1", + "jest-get-type": "^29.2.0", + "jest-matcher-utils": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1" + } + }, + "jest-diff": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz", + "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" + } + }, + "jest-get-type": { + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", + "dev": true + }, + "jest-matcher-utils": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz", + "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" + } + }, + "jest-message-util": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", + "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.3.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-util": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", + "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "dev": true, + "requires": { + "@jest/types": "^29.3.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", + "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", + "dev": true, + "requires": { + "@jest/schemas": "^29.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "dev": true + }, + "@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" + }, + "@types/underscore": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz", + "integrity": "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==" + }, + "@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, + "@types/web": { + "version": "0.0.99", + "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.99.tgz", + "integrity": "sha512-xMz3tOvtkZzc7RpQrDNiLe5sfMmP+fz8bOxHIZ/U8qXyvzDX4L4Ss1HCjor/O9DSelba+1iXK1VM7lruX28hiQ==" + }, + "@types/web3": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.0.20.tgz", + "integrity": "sha512-KTDlFuYjzCUlBDGt35Ir5QRtyV9klF84MMKUsEJK10sTWga/71V+8VYLT7yysjuBjaOx2uFYtIWNGoz3yrNDlg==", + "requires": { + "@types/bn.js": "*", + "@types/underscore": "*" + } + }, + "@types/web3-provider-engine": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@types/web3-provider-engine/-/web3-provider-engine-14.0.1.tgz", + "integrity": "sha512-SaAfLJY/40wKFDsNFwaNfwqFSL6kVhTx9JD18qM+Gaw1qdAXLYF/6E7TIqWEdoG4so6fki/zxURP5NsoCePYJw==", + "requires": { + "@types/ethereum-protocol": "*" + } + }, + "@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "17.0.17", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.17.tgz", + "integrity": "sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.47.0", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.47.0", + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/typescript-estree": "5.47.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.47.0", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/visitor-keys": "5.47.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + } + } + }, + "@typescript-eslint/types": { + "version": "5.47.0", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.47.0", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/visitor-keys": "5.47.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.47.0", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.47.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@walletconnect/browser-utils": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz", + "integrity": "sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==", + "requires": { + "@walletconnect/safe-json": "1.0.0", + "@walletconnect/types": "^1.8.0", + "@walletconnect/window-getters": "1.0.0", + "@walletconnect/window-metadata": "1.0.0", + "detect-browser": "5.2.0" + } + }, + "@walletconnect/client": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/client/-/client-1.8.0.tgz", + "integrity": "sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ==", + "requires": { + "@walletconnect/core": "^1.8.0", + "@walletconnect/iso-crypto": "^1.8.0", + "@walletconnect/types": "^1.8.0", + "@walletconnect/utils": "^1.8.0" + } + }, + "@walletconnect/core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-1.8.0.tgz", + "integrity": "sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw==", + "requires": { + "@walletconnect/socket-transport": "^1.8.0", + "@walletconnect/types": "^1.8.0", + "@walletconnect/utils": "^1.8.0" + } + }, + "@walletconnect/crypto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@walletconnect/crypto/-/crypto-1.0.3.tgz", + "integrity": "sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==", + "requires": { + "@walletconnect/encoding": "^1.0.2", + "@walletconnect/environment": "^1.0.1", + "@walletconnect/randombytes": "^1.0.3", + "aes-js": "^3.1.2", + "hash.js": "^1.1.7", + "tslib": "1.14.1" + }, + "dependencies": { + "aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" + } + } + }, + "@walletconnect/encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/encoding/-/encoding-1.0.2.tgz", + "integrity": "sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==", + "requires": { + "is-typedarray": "1.0.0", + "tslib": "1.14.1", + "typedarray-to-buffer": "3.1.5" + } + }, + "@walletconnect/environment": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz", + "integrity": "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/ethereum-provider": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.8.4.tgz", + "integrity": "sha512-z7Yz4w8t3eEFv8vQ8DLCgDWPah2aIIyC0iQdwhXgJenQTVuz7JJZRrJUUntzudipHK/owA394c1qTPF0rsMSeQ==", + "requires": { + "@walletconnect/jsonrpc-http-connection": "^1.0.7", + "@walletconnect/jsonrpc-provider": "^1.0.13", + "@walletconnect/jsonrpc-types": "^1.0.3", + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/sign-client": "2.8.4", + "@walletconnect/types": "2.8.4", + "@walletconnect/universal-provider": "2.8.4", + "@walletconnect/utils": "2.8.4", + "events": "^3.3.0" + }, + "dependencies": { + "@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/types": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.8.4.tgz", + "integrity": "sha512-Fgqe87R7rjMOGSvx28YPLTtXM6jj+oUOorx8cE+jEw2PfpWp5myF21aCdaMBR39h0QHij5H1Z0/W9e7gm4oC1Q==", + "requires": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/keyvaluestorage": "^1.0.2", + "@walletconnect/logger": "^2.0.1", + "events": "^3.3.0" + } + }, + "@walletconnect/utils": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.8.4.tgz", + "integrity": "sha512-NGw6BINYNeT9JrQrnxldAPheO2ymRrwGrgfExZMyrkb1MShnIX4nzo4KirKInM4LtrY6AA/v0Lu3ooUdfO+xIg==", + "requires": { + "@stablelib/chacha20poly1305": "1.0.1", + "@stablelib/hkdf": "1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "1.0.1", + "@stablelib/x25519": "^1.0.3", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.8.4", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "^3.1.0" + } + }, + "@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/window-metadata": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", + "requires": { + "@walletconnect/window-getters": "^1.0.1", + "tslib": "1.14.1" + } + }, + "detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "requires": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + } + } + }, + "@walletconnect/events": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz", + "integrity": "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==", + "requires": { + "keyvaluestorage-interface": "^1.0.0", + "tslib": "1.14.1" + } + }, + "@walletconnect/heartbeat": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz", + "integrity": "sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==", + "requires": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "tslib": "1.14.1" + } + }, + "@walletconnect/iso-crypto": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz", + "integrity": "sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ==", + "requires": { + "@walletconnect/crypto": "^1.0.2", + "@walletconnect/types": "^1.8.0", + "@walletconnect/utils": "^1.8.0" + } + }, + "@walletconnect/jsonrpc-http-connection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz", + "integrity": "sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==", + "requires": { + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.1", + "cross-fetch": "^3.1.4", + "tslib": "1.14.1" + }, + "dependencies": { + "@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "requires": { + "tslib": "1.14.1" + } + } + } + }, + "@walletconnect/jsonrpc-provider": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz", + "integrity": "sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==", + "requires": { + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/safe-json": "^1.0.2", + "tslib": "1.14.1" + }, + "dependencies": { + "@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "requires": { + "tslib": "1.14.1" + } + } + } + }, + "@walletconnect/jsonrpc-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz", + "integrity": "sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==", + "requires": { + "keyvaluestorage-interface": "^1.0.0", + "tslib": "1.14.1" + } + }, + "@walletconnect/jsonrpc-utils": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz", + "integrity": "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==", + "requires": { + "@walletconnect/environment": "^1.0.1", + "@walletconnect/jsonrpc-types": "^1.0.3", + "tslib": "1.14.1" + } + }, + "@walletconnect/jsonrpc-ws-connection": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.13.tgz", + "integrity": "sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg==", + "requires": { + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.2", + "events": "^3.3.0", + "tslib": "1.14.1", + "ws": "^7.5.1" + }, + "dependencies": { + "@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "requires": { + "tslib": "1.14.1" + } + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} + } + } + }, + "@walletconnect/keyvaluestorage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz", + "integrity": "sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==", + "requires": { + "safe-json-utils": "^1.1.1", + "tslib": "1.14.1" + } + }, + "@walletconnect/logger": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.0.1.tgz", + "integrity": "sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==", + "requires": { + "pino": "7.11.0", + "tslib": "1.14.1" + } + }, + "@walletconnect/mobile-registry": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz", + "integrity": "sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==" + }, + "@walletconnect/modal": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.5.5.tgz", + "integrity": "sha512-y1PH1xXzFDtVZErfQErPPJzPU9DKLp4M0IEaza8LfegqHfTFaGa0s3AL+i5+7FIk9+5OHSv0Wv+e5tmSZt96yA==", + "requires": { + "@walletconnect/modal-core": "2.5.5", + "@walletconnect/modal-ui": "2.5.5" + } + }, + "@walletconnect/modal-core": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-core/-/modal-core-2.5.5.tgz", + "integrity": "sha512-M2BKcI5aqnGfMAz+MgTsvnTRzD25uz9YJ3/xuzy+ovgFCl2VCGH2Vdrf6Ptu+UR6UMuPdssG1TXXe1rd907Dxw==", + "requires": { + "buffer": "6.0.3", + "valtio": "1.10.6" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "@walletconnect/modal-ui": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-ui/-/modal-ui-2.5.5.tgz", + "integrity": "sha512-g0LJ/gRhZ5E30gk4GnMpDlQzLFWyRjsJp57s9rZmlVkry5mfhCZ3Oh0mfgv2/ILVxdB4fUo1BjatKyOpSogOmg==", + "requires": { + "@walletconnect/modal-core": "2.5.5", + "lit": "2.7.5", + "motion": "10.16.2", + "qrcode": "1.5.3" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" + }, + "qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "requires": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@walletconnect/qrcode-modal": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz", + "integrity": "sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==", + "requires": { + "@walletconnect/browser-utils": "^1.8.0", + "@walletconnect/mobile-registry": "^1.4.0", + "@walletconnect/types": "^1.8.0", + "copy-to-clipboard": "^3.3.1", + "preact": "10.4.1", + "qrcode": "1.4.4" + } + }, + "@walletconnect/randombytes": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@walletconnect/randombytes/-/randombytes-1.0.3.tgz", + "integrity": "sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw==", + "requires": { + "@walletconnect/encoding": "^1.0.2", + "@walletconnect/environment": "^1.0.1", + "randombytes": "^2.1.0", + "tslib": "1.14.1" + } + }, + "@walletconnect/relay-api": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.9.tgz", + "integrity": "sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==", + "requires": { + "@walletconnect/jsonrpc-types": "^1.0.2", + "tslib": "1.14.1" + } + }, + "@walletconnect/relay-auth": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz", + "integrity": "sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==", + "requires": { + "@stablelib/ed25519": "^1.0.2", + "@stablelib/random": "^1.0.1", + "@walletconnect/safe-json": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "tslib": "1.14.1", + "uint8arrays": "^3.0.0" + }, + "dependencies": { + "@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "requires": { + "tslib": "1.14.1" + } + } + } + }, + "@walletconnect/safe-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.0.tgz", + "integrity": "sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg==" + }, + "@walletconnect/sign-client": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.8.4.tgz", + "integrity": "sha512-eRvWtKBAgzo/rbIkw+rkKco2ulSW8Wor/58UsOBsl9DKr1rIazZd4ZcUdaTjg9q8AT1476IQakCAIuv+1FvJwQ==", + "requires": { + "@walletconnect/core": "2.8.4", + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.8.4", + "@walletconnect/utils": "2.8.4", + "events": "^3.3.0" + }, + "dependencies": { + "@walletconnect/core": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.8.4.tgz", + "integrity": "sha512-3CQHud4As0kPRvlW1w/wSWS2F3yXlAo5kSEJyRWLRPqXG+aSCVWM8cVM8ch5yoeyNIfOHhEINdsYMuJG1+yIJQ==", + "requires": { + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-provider": "1.0.13", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/jsonrpc-ws-connection": "^1.0.11", + "@walletconnect/keyvaluestorage": "^1.0.2", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/relay-auth": "^1.0.4", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.8.4", + "@walletconnect/utils": "2.8.4", + "events": "^3.3.0", + "lodash.isequal": "4.5.0", + "uint8arrays": "^3.1.0" + } + }, + "@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/types": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.8.4.tgz", + "integrity": "sha512-Fgqe87R7rjMOGSvx28YPLTtXM6jj+oUOorx8cE+jEw2PfpWp5myF21aCdaMBR39h0QHij5H1Z0/W9e7gm4oC1Q==", + "requires": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/keyvaluestorage": "^1.0.2", + "@walletconnect/logger": "^2.0.1", + "events": "^3.3.0" + } + }, + "@walletconnect/utils": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.8.4.tgz", + "integrity": "sha512-NGw6BINYNeT9JrQrnxldAPheO2ymRrwGrgfExZMyrkb1MShnIX4nzo4KirKInM4LtrY6AA/v0Lu3ooUdfO+xIg==", + "requires": { + "@stablelib/chacha20poly1305": "1.0.1", + "@stablelib/hkdf": "1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "1.0.1", + "@stablelib/x25519": "^1.0.3", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.8.4", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "^3.1.0" + } + }, + "@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/window-metadata": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", + "requires": { + "@walletconnect/window-getters": "^1.0.1", + "tslib": "1.14.1" + } + }, + "detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "requires": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + } + } + }, + "@walletconnect/socket-transport": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz", + "integrity": "sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ==", + "requires": { + "@walletconnect/types": "^1.8.0", + "@walletconnect/utils": "^1.8.0", + "ws": "7.5.3" + }, + "dependencies": { + "ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "requires": {} + } + } + }, + "@walletconnect/time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz", + "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/types": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-1.8.0.tgz", + "integrity": "sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg==" + }, + "@walletconnect/universal-provider": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.8.4.tgz", + "integrity": "sha512-JRpOXKIciRMzd03zZxM1WDsYHo/ZS86zZrZ1aCHW1d45ZLP7SbGPRHzZgBY3xrST26yTvWIlRfTUEYn50fzB1g==", + "requires": { + "@walletconnect/jsonrpc-http-connection": "^1.0.7", + "@walletconnect/jsonrpc-provider": "1.0.13", + "@walletconnect/jsonrpc-types": "^1.0.2", + "@walletconnect/jsonrpc-utils": "^1.0.7", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/sign-client": "2.8.4", + "@walletconnect/types": "2.8.4", + "@walletconnect/utils": "2.8.4", + "events": "^3.3.0" + }, + "dependencies": { + "@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/types": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.8.4.tgz", + "integrity": "sha512-Fgqe87R7rjMOGSvx28YPLTtXM6jj+oUOorx8cE+jEw2PfpWp5myF21aCdaMBR39h0QHij5H1Z0/W9e7gm4oC1Q==", + "requires": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/keyvaluestorage": "^1.0.2", + "@walletconnect/logger": "^2.0.1", + "events": "^3.3.0" + } + }, + "@walletconnect/utils": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.8.4.tgz", + "integrity": "sha512-NGw6BINYNeT9JrQrnxldAPheO2ymRrwGrgfExZMyrkb1MShnIX4nzo4KirKInM4LtrY6AA/v0Lu3ooUdfO+xIg==", + "requires": { + "@stablelib/chacha20poly1305": "1.0.1", + "@stablelib/hkdf": "1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "1.0.1", + "@stablelib/x25519": "^1.0.3", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.8.4", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "^3.1.0" + } + }, + "@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/window-metadata": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", + "requires": { + "@walletconnect/window-getters": "^1.0.1", + "tslib": "1.14.1" + } + }, + "detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "requires": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + } + } + }, + "@walletconnect/utils": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-1.8.0.tgz", + "integrity": "sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==", + "requires": { + "@walletconnect/browser-utils": "^1.8.0", + "@walletconnect/encoding": "^1.0.1", + "@walletconnect/jsonrpc-utils": "^1.0.3", + "@walletconnect/types": "^1.8.0", + "bn.js": "4.11.8", + "js-sha3": "0.8.0", + "query-string": "6.13.5" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + } + } + }, + "@walletconnect/window-getters": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.0.tgz", + "integrity": "sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==" + }, + "@walletconnect/window-metadata": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz", + "integrity": "sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==", + "requires": { + "@walletconnect/window-getters": "^1.0.0" + }, + "dependencies": { + "@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "requires": { + "tslib": "1.14.1" + } + } + } + }, + "@web3-onboard/coinbase": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@web3-onboard/coinbase/-/coinbase-2.2.5.tgz", + "integrity": "sha512-mEiaK+K+nB2TwxUpkyAZmb4AHguymsJrHFbsZDdAolFTgZizCSjGHBhYlCEfxLL4fh3CpUryTa/AaNxxhdG6OQ==", + "requires": { + "@coinbase/wallet-sdk": "^3.7.1", + "@web3-onboard/common": "^2.3.3" + } + }, + "@web3-onboard/common": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@web3-onboard/common/-/common-2.3.3.tgz", + "integrity": "sha512-Ytppszqe77VY8WglRdr/Lfx+HmcZ2hXQEkBA23JaVYmzKvP/mC6j+sjGUD8CgXDpRRxyKoiRj6nz95GRABie6Q==", + "requires": { + "bignumber.js": "^9.1.0", + "ethers": "5.5.4", + "joi": "17.9.1" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz", + "integrity": "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==", + "requires": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/abstract-provider": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz", + "integrity": "sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg==", + "requires": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0" + }, + "dependencies": { + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/abstract-signer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz", + "integrity": "sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA==", + "requires": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/address": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.5.0.tgz", + "integrity": "sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==", + "requires": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/rlp": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/base64": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.5.0.tgz", + "integrity": "sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA==", + "requires": { + "@ethersproject/bytes": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/basex": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.5.0.tgz", + "integrity": "sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + } + } + }, + "@ethersproject/bignumber": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.5.0.tgz", + "integrity": "sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "bn.js": "^4.11.9" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", + "integrity": "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==", + "requires": { + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/constants": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.5.0.tgz", + "integrity": "sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ==", + "requires": { + "@ethersproject/bignumber": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/hash": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.5.0.tgz", + "integrity": "sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==", + "requires": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/hdnode": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.5.0.tgz", + "integrity": "sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q==", + "requires": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/json-wallets": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz", + "integrity": "sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ==", + "requires": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/keccak256": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.5.0.tgz", + "integrity": "sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "js-sha3": "0.8.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/logger": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz", + "integrity": "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==" + }, + "@ethersproject/networks": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.5.2.tgz", + "integrity": "sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ==", + "requires": { + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/pbkdf2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz", + "integrity": "sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/sha2": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + } + } + }, + "@ethersproject/properties": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.5.0.tgz", + "integrity": "sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==", + "requires": { + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/providers": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.3.tgz", + "integrity": "sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA==", + "requires": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0", + "bech32": "1.1.4", + "ws": "7.4.6" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/random": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.5.1.tgz", + "integrity": "sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/rlp": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.5.0.tgz", + "integrity": "sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/sha2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz", + "integrity": "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "hash.js": "1.1.7" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/signing-key": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.5.0.tgz", + "integrity": "sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + } + } + }, + "@ethersproject/strings": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.5.0.tgz", + "integrity": "sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/transactions": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.5.0.tgz", + "integrity": "sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA==", + "requires": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0" + }, + "dependencies": { + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/web": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.5.1.tgz", + "integrity": "sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg==", + "requires": { + "@ethersproject/base64": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/wordlists": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.5.0.tgz", + "integrity": "sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "ethers": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.5.4.tgz", + "integrity": "sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw==", + "requires": { + "@ethersproject/abi": "5.5.0", + "@ethersproject/abstract-provider": "5.5.1", + "@ethersproject/abstract-signer": "5.5.0", + "@ethersproject/address": "5.5.0", + "@ethersproject/base64": "5.5.0", + "@ethersproject/basex": "5.5.0", + "@ethersproject/bignumber": "5.5.0", + "@ethersproject/bytes": "5.5.0", + "@ethersproject/constants": "5.5.0", + "@ethersproject/contracts": "5.5.0", + "@ethersproject/hash": "5.5.0", + "@ethersproject/hdnode": "5.5.0", + "@ethersproject/json-wallets": "5.5.0", + "@ethersproject/keccak256": "5.5.0", + "@ethersproject/logger": "5.5.0", + "@ethersproject/networks": "5.5.2", + "@ethersproject/pbkdf2": "5.5.0", + "@ethersproject/properties": "5.5.0", + "@ethersproject/providers": "5.5.3", + "@ethersproject/random": "5.5.1", + "@ethersproject/rlp": "5.5.0", + "@ethersproject/sha2": "5.5.0", + "@ethersproject/signing-key": "5.5.0", + "@ethersproject/solidity": "5.5.0", + "@ethersproject/strings": "5.5.0", + "@ethersproject/transactions": "5.5.0", + "@ethersproject/units": "5.5.0", + "@ethersproject/wallet": "5.5.0", + "@ethersproject/web": "5.5.1", + "@ethersproject/wordlists": "5.5.0" + } + } + } + }, + "@web3-onboard/core": { + "version": "2.20.4", + "resolved": "https://registry.npmjs.org/@web3-onboard/core/-/core-2.20.4.tgz", + "integrity": "sha512-IFI3DVq5QgFj5w1TyL61gHmeOlkX8AJiBAARO3cd4zW8I3h9K2+7HeE7LbsfwefZYLILzXCfF0gMB3qRN/GWYQ==", + "requires": { + "@web3-onboard/common": "^2.3.3", + "bignumber.js": "^9.0.0", + "bnc-sdk": "^4.6.7", + "bowser": "^2.11.0", + "ethers": "5.5.3", + "eventemitter3": "^4.0.7", + "joi": "17.9.1", + "lodash.merge": "^4.6.2", + "lodash.partition": "^4.6.0", + "nanoid": "^4.0.0", + "rxjs": "^7.5.5", + "svelte": "^3.49.0", + "svelte-i18n": "^3.3.13" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz", + "integrity": "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==", + "requires": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/abstract-provider": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz", + "integrity": "sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg==", + "requires": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0" + }, + "dependencies": { + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/abstract-signer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz", + "integrity": "sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA==", + "requires": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/address": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.5.0.tgz", + "integrity": "sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==", + "requires": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/rlp": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/base64": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.5.0.tgz", + "integrity": "sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA==", + "requires": { + "@ethersproject/bytes": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/basex": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.5.0.tgz", + "integrity": "sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + } + } + }, + "@ethersproject/bignumber": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.5.0.tgz", + "integrity": "sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "bn.js": "^4.11.9" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", + "integrity": "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==", + "requires": { + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/constants": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.5.0.tgz", + "integrity": "sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ==", + "requires": { + "@ethersproject/bignumber": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/hash": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.5.0.tgz", + "integrity": "sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==", + "requires": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/hdnode": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.5.0.tgz", + "integrity": "sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q==", + "requires": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/json-wallets": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz", + "integrity": "sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ==", + "requires": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/keccak256": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.5.0.tgz", + "integrity": "sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "js-sha3": "0.8.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/logger": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz", + "integrity": "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==" + }, + "@ethersproject/networks": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.5.2.tgz", + "integrity": "sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ==", + "requires": { + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/pbkdf2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz", + "integrity": "sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/sha2": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + } + } + }, + "@ethersproject/properties": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.5.0.tgz", + "integrity": "sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==", + "requires": { + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/providers": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.2.tgz", + "integrity": "sha512-hkbx7x/MKcRjyrO4StKXCzCpWer6s97xnm34xkfPiarhtEUVAN4TBBpamM+z66WcTt7H5B53YwbRj1n7i8pZoQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0", + "bech32": "1.1.4", + "ws": "7.4.6" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/random": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.5.1.tgz", + "integrity": "sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/rlp": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.5.0.tgz", + "integrity": "sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/sha2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz", + "integrity": "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "hash.js": "1.1.7" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/signing-key": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.5.0.tgz", + "integrity": "sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + } + } + }, + "@ethersproject/strings": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.5.0.tgz", + "integrity": "sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/transactions": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.5.0.tgz", + "integrity": "sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA==", + "requires": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0" + }, + "dependencies": { + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/web": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.5.1.tgz", + "integrity": "sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg==", + "requires": { + "@ethersproject/base64": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/wordlists": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.5.0.tgz", + "integrity": "sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "ethers": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.5.3.tgz", + "integrity": "sha512-fTT4WT8/hTe/BLwRUtl7I5zlpF3XC3P/Xwqxc5AIP2HGlH15qpmjs0Ou78az93b1rLITzXLFxoNX63B8ZbUd7g==", + "requires": { + "@ethersproject/abi": "5.5.0", + "@ethersproject/abstract-provider": "5.5.1", + "@ethersproject/abstract-signer": "5.5.0", + "@ethersproject/address": "5.5.0", + "@ethersproject/base64": "5.5.0", + "@ethersproject/basex": "5.5.0", + "@ethersproject/bignumber": "5.5.0", + "@ethersproject/bytes": "5.5.0", + "@ethersproject/constants": "5.5.0", + "@ethersproject/contracts": "5.5.0", + "@ethersproject/hash": "5.5.0", + "@ethersproject/hdnode": "5.5.0", + "@ethersproject/json-wallets": "5.5.0", + "@ethersproject/keccak256": "5.5.0", + "@ethersproject/logger": "5.5.0", + "@ethersproject/networks": "5.5.2", + "@ethersproject/pbkdf2": "5.5.0", + "@ethersproject/properties": "5.5.0", + "@ethersproject/providers": "5.5.2", + "@ethersproject/random": "5.5.1", + "@ethersproject/rlp": "5.5.0", + "@ethersproject/sha2": "5.5.0", + "@ethersproject/signing-key": "5.5.0", + "@ethersproject/solidity": "5.5.0", + "@ethersproject/strings": "5.5.0", + "@ethersproject/transactions": "5.5.0", + "@ethersproject/units": "5.5.0", + "@ethersproject/wallet": "5.5.0", + "@ethersproject/web": "5.5.1", + "@ethersproject/wordlists": "5.5.0" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "nanoid": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz", + "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==" + }, + "rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@web3-onboard/hw-common": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@web3-onboard/hw-common/-/hw-common-2.3.0.tgz", + "integrity": "sha512-ai5gwaXHxMOgov+TKuy2yUtBf7b2Vq8c28L9tSx4Hl8Q2IM6boGZQEqfW6Hw0GHu/Ez+MxRR5+M6nfwFBf8JRw==", + "requires": { + "@ethereumjs/common": "2.6.2", + "@web3-onboard/common": "^2.3.3", + "ethers": "5.5.4", + "joi": "17.9.1", + "rxjs": "^7.5.2" + }, + "dependencies": { + "@ethereumjs/common": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.2.tgz", + "integrity": "sha512-vDwye5v0SVeuDky4MtKsu+ogkH2oFUV8pBKzH/eNBzT8oI91pKa8WyzDuYuxOQsgNgv5R34LfFDh2aaw3H4HbQ==", + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.4" + } + }, + "@ethersproject/abi": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz", + "integrity": "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==", + "requires": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/abstract-provider": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz", + "integrity": "sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg==", + "requires": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0" + }, + "dependencies": { + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/abstract-signer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz", + "integrity": "sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA==", + "requires": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/address": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.5.0.tgz", + "integrity": "sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==", + "requires": { + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/rlp": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/base64": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.5.0.tgz", + "integrity": "sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA==", + "requires": { + "@ethersproject/bytes": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/basex": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.5.0.tgz", + "integrity": "sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/properties": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + } + } + }, + "@ethersproject/bignumber": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.5.0.tgz", + "integrity": "sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "bn.js": "^4.11.9" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", + "integrity": "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==", + "requires": { + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/constants": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.5.0.tgz", + "integrity": "sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ==", + "requires": { + "@ethersproject/bignumber": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/hash": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.5.0.tgz", + "integrity": "sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==", + "requires": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/hdnode": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.5.0.tgz", + "integrity": "sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q==", + "requires": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/wordlists": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/json-wallets": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz", + "integrity": "sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ==", + "requires": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hdnode": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/pbkdf2": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/keccak256": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.5.0.tgz", + "integrity": "sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "js-sha3": "0.8.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/logger": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz", + "integrity": "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==" + }, + "@ethersproject/networks": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.5.2.tgz", + "integrity": "sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ==", + "requires": { + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/pbkdf2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz", + "integrity": "sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/sha2": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + } + } + }, + "@ethersproject/properties": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.5.0.tgz", + "integrity": "sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==", + "requires": { + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/providers": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.3.tgz", + "integrity": "sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA==", + "requires": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0", + "bech32": "1.1.4", + "ws": "7.4.6" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/random": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.5.1.tgz", + "integrity": "sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/rlp": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.5.0.tgz", + "integrity": "sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/sha2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz", + "integrity": "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "hash.js": "1.1.7" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + } + } + }, + "@ethersproject/signing-key": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.5.0.tgz", + "integrity": "sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + }, + "dependencies": { + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + } + } + }, + "@ethersproject/strings": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.5.0.tgz", + "integrity": "sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/logger": "^5.5.0" + }, + "dependencies": { + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/transactions": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.5.0.tgz", + "integrity": "sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA==", + "requires": { + "@ethersproject/address": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/keccak256": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/signing-key": "^5.5.0" + }, + "dependencies": { + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/web": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.5.1.tgz", + "integrity": "sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg==", + "requires": { + "@ethersproject/base64": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@ethersproject/wordlists": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.5.0.tgz", + "integrity": "sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/strings": "^5.5.0" + }, + "dependencies": { + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "ethers": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.5.4.tgz", + "integrity": "sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw==", + "requires": { + "@ethersproject/abi": "5.5.0", + "@ethersproject/abstract-provider": "5.5.1", + "@ethersproject/abstract-signer": "5.5.0", + "@ethersproject/address": "5.5.0", + "@ethersproject/base64": "5.5.0", + "@ethersproject/basex": "5.5.0", + "@ethersproject/bignumber": "5.5.0", + "@ethersproject/bytes": "5.5.0", + "@ethersproject/constants": "5.5.0", + "@ethersproject/contracts": "5.5.0", + "@ethersproject/hash": "5.5.0", + "@ethersproject/hdnode": "5.5.0", + "@ethersproject/json-wallets": "5.5.0", + "@ethersproject/keccak256": "5.5.0", + "@ethersproject/logger": "5.5.0", + "@ethersproject/networks": "5.5.2", + "@ethersproject/pbkdf2": "5.5.0", + "@ethersproject/properties": "5.5.0", + "@ethersproject/providers": "5.5.3", + "@ethersproject/random": "5.5.1", + "@ethersproject/rlp": "5.5.0", + "@ethersproject/sha2": "5.5.0", + "@ethersproject/signing-key": "5.5.0", + "@ethersproject/solidity": "5.5.0", + "@ethersproject/strings": "5.5.0", + "@ethersproject/transactions": "5.5.0", + "@ethersproject/units": "5.5.0", + "@ethersproject/wallet": "5.5.0", + "@ethersproject/web": "5.5.1", + "@ethersproject/wordlists": "5.5.0" + } + }, + "rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@web3-onboard/injected-wallets": { + "version": "2.10.4", + "resolved": "https://registry.npmjs.org/@web3-onboard/injected-wallets/-/injected-wallets-2.10.4.tgz", + "integrity": "sha512-A0Uawe4X7o2mZD8S2UMqAWXjC33fIepB6SKKrH1XswEUWlg+hxs9vKjB/eIa3Fhly9lYVs5XyFUAx2mv4sZ/Xw==", + "requires": { + "@web3-onboard/common": "^2.3.3", + "joi": "17.9.1", + "lodash.uniqby": "^4.7.0" + } + }, + "@web3-onboard/keystone": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/@web3-onboard/keystone/-/keystone-2.3.7.tgz", + "integrity": "sha512-9KdRQJ3htg9uSF3t8o2a5T32aQ+J2VA0mKYaXns2ZgsSznd4WqvQFuyrQi015b0rn6zkXM3BKFcMhu0OJtRwHw==", + "requires": { + "@ethereumjs/tx": "^3.4.0", + "@ethersproject/providers": "^5.5.0", + "@keystonehq/eth-keyring": "^0.14.00.3", + "@web3-onboard/common": "^2.3.3", + "@web3-onboard/hw-common": "^2.3.0" + } + }, + "@web3-onboard/ledger": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@web3-onboard/ledger/-/ledger-2.3.2.tgz", + "integrity": "sha512-0KLXmnXNs6iTZEhBdGDgg+L5t8rOTroZjYu8l3Qebd02hNBIeaNxgCXIOQ1Y97qvcQz/8rb6oZ1wMp7unmSA1g==", + "requires": { + "@ethereumjs/tx": "^3.4.0", + "@ethersproject/providers": "^5.5.0", + "@ledgerhq/hw-app-eth": "^6.19.0", + "@ledgerhq/hw-transport-u2f": "^5.36.0-deprecated", + "@ledgerhq/hw-transport-webusb": "^6.19.0", + "@metamask/eth-sig-util": "^4.0.0", + "@web3-onboard/common": "^2.2.3", + "@web3-onboard/hw-common": "^2.0.4", + "buffer": "^6.0.3", + "ethereumjs-util": "^7.1.3" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "@web3-onboard/taho": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@web3-onboard/taho/-/taho-2.0.5.tgz", + "integrity": "sha512-Z5n2UMumLNppOlDgYM9MhrM+YGyz8Emouaf7htH8l4B2r/meV4F3Wkgol2xYuwwu5SJyPaJH2GxNeh/EAfyBxg==", + "requires": { + "@web3-onboard/common": "^2.3.3", + "tallyho-detect-provider": "^1.0.0", + "tallyho-onboarding": "^1.0.2" + } + }, + "@web3-onboard/trezor": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@web3-onboard/trezor/-/trezor-2.4.2.tgz", + "integrity": "sha512-XMi5xn41HhMKnZhPj9n+5WScEsgHRzXz/XYKMbKJRfndVgHgbo/kO3DxL9fwfdUoW/mewRfO5wiN1hf7qyN2VQ==", + "requires": { + "@ethereumjs/tx": "^3.4.0", + "@ethersproject/providers": "^5.5.0", + "@trezor/connect-web": "^9.0.8", + "@web3-onboard/common": "^2.3.3", + "@web3-onboard/hw-common": "^2.3.0", + "buffer": "^6.0.3", + "eth-crypto": "^2.1.0", + "ethereumjs-util": "^7.1.3", + "hdkey": "^2.0.1" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "@web3-onboard/walletconnect": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@web3-onboard/walletconnect/-/walletconnect-2.4.0.tgz", + "integrity": "sha512-Qu3uHWsumOedHDzwqOoUrA40rNO0C6Sgw62XeIxSC+JsIB2K4Y5rXhTbMeYtO0lmWmHA8DYXxk8czYkdMZh19Q==", + "requires": { + "@ethersproject/providers": "5.5.0", + "@walletconnect/client": "^1.8.0", + "@walletconnect/ethereum-provider": "2.8.4", + "@walletconnect/modal": "2.5.5", + "@walletconnect/qrcode-modal": "^1.8.0", + "@web3-onboard/common": "^2.3.3", + "rxjs": "^7.5.2" + }, + "dependencies": { + "@ethersproject/providers": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.0.tgz", + "integrity": "sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw==", + "requires": { + "@ethersproject/abstract-provider": "^5.5.0", + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/address": "^5.5.0", + "@ethersproject/basex": "^5.5.0", + "@ethersproject/bignumber": "^5.5.0", + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/constants": "^5.5.0", + "@ethersproject/hash": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "@ethersproject/networks": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "@ethersproject/random": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ethersproject/sha2": "^5.5.0", + "@ethersproject/strings": "^5.5.0", + "@ethersproject/transactions": "^5.5.0", + "@ethersproject/web": "^5.5.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abortcontroller-polyfill": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" + }, + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "requires": { + "xtend": "~4.0.0" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "devOptional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.5" + } + }, + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true + }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" + }, + "array.prototype.findlastindex": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz", + "integrity": "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "requires": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "requires": { + "async": "^2.4.0" + } + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "async-mutex": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz", + "integrity": "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" + }, + "attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "axe-core": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.1.tgz", + "integrity": "sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w==", + "dev": true + }, + "axios": { + "version": "0.26.1", + "requires": { + "follow-redirects": "^1.14.8" + } + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "babel-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", + "dev": true, + "requires": { + "@jest/transform": "^28.1.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^28.1.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^28.1.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "requires": { + "precond": "0.2" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bchaddrjs": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/bchaddrjs/-/bchaddrjs-0.5.2.tgz", + "integrity": "sha512-OO7gIn3m7ea4FVx4cT8gdlWQR2+++EquhdpWQJH9BQjK63tJJ6ngB3QMZDO6DiBoXiIGUsTPHjlrHVxPGcGxLQ==", + "requires": { + "bs58check": "2.1.2", + "buffer": "^6.0.3", + "cashaddrjs": "0.4.4", + "stream-browserify": "^3.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "big-integer": { + "version": "1.6.36", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", + "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "bigint-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", + "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", + "requires": { + "bindings": "^1.3.0" + } + }, + "bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "devOptional": true + }, + "bind-decorator": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bind-decorator/-/bind-decorator-1.0.11.tgz", + "integrity": "sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bip66": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", + "integrity": "sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "bitcoin-ops": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz", + "integrity": "sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow==" + }, + "blake-hash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/blake-hash/-/blake-hash-2.0.0.tgz", + "integrity": "sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w==", + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + }, + "blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "bnc-sdk": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/bnc-sdk/-/bnc-sdk-4.6.7.tgz", + "integrity": "sha512-jIQ6cmeRBgvH/YDLuYRr2+kxDGcAAi0SOvjlO5nQ5cWdbslw+ASWftd1HmxiVLNCiwEH5bSc/t8a0agZ5njTUQ==", + "requires": { + "crypto-es": "^1.2.2", + "nanoid": "^3.3.1", + "rxjs": "^6.6.3", + "sturdy-websocket": "^0.1.12" + } + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "requires": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==" + }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ==", + "requires": { + "long": "~3" + }, + "dependencies": { + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==" + } + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "cacheable-lookup": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", + "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==" + }, + "cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caniuse-lite": { + "version": "1.0.30001439" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "cashaddrjs": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cashaddrjs/-/cashaddrjs-0.4.4.tgz", + "integrity": "sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA==", + "requires": { + "big-integer": "1.6.36" + } + }, + "cbor-sync": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cbor-sync/-/cbor-sync-1.0.4.tgz", + "integrity": "sha512-GWlXN4wiz0vdWWXBU71Dvc1q3aBo0HytqwAZnXF1wOwjqNnDWA1vZ1gDMFLlqohak31VQzmhiYfiCX5QSSfagA==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true + }, + "checkpoint-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg==", + "requires": { + "functional-red-black-tree": "^1.0.1" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "devOptional": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "ci-info": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", + "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "dev": true + }, + "cids": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", + "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", + "requires": { + "buffer": "^5.5.0", + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + }, + "dependencies": { + "multicodec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "requires": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + } + } + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" + }, + "classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "requires": { + "del": "^4.1.1" + } + }, + "cli-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", + "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.61", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "code-block-writer": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", + "integrity": "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "requires": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "dependencies": { + "typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true + } + } + }, + "command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "requires": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-hash": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", + "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "requires": { + "cids": "^0.7.1", + "multicodec": "^0.5.5", + "multihashes": "^0.4.15" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "requires": { + "browserslist": "^4.21.4" + } + }, + "core-js-pure": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz", + "integrity": "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "requires": { + "buffer": "^5.1.0" + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "requires": { + "node-fetch": "^2.6.12" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "crypto-es": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/crypto-es/-/crypto-es-1.2.7.tgz", + "integrity": "sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ==" + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "cypress": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-11.2.0.tgz", + "integrity": "sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA==", + "dev": true, + "requires": { + "@cypress/request": "^2.88.10", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.6", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.35.tgz", + "integrity": "sha512-2ATO8pfhG1kDvw4Lc4C0GXIMSQFFJBCo/R1fSgTwmUlq5oy95LXyjDQinsRVgQY6gp6ghh3H91wk9ES5/5C+Tw==", + "dev": true + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cypress-file-upload": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz", + "integrity": "sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g==", + "dev": true, + "requires": {} + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } + } + }, + "date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" + }, + "dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", + "devOptional": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "deep-equal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz", + "integrity": "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.8" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "requires": { + "abstract-leveldown": "~2.6.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.2.0.tgz", + "integrity": "sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==" + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true + }, + "dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz", + "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==", + "dev": true + }, + "dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "requires": { + "webidl-conversions": "^7.0.0" + } + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true + }, + "drbg.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", + "integrity": "sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g==", + "optional": true, + "requires": { + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "eccrypto": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/eccrypto/-/eccrypto-1.1.6.tgz", + "integrity": "sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A==", + "requires": { + "acorn": "7.1.1", + "elliptic": "6.5.4", + "es6-promise": "4.2.8", + "nan": "2.14.0", + "secp256k1": "3.7.1" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" + }, + "secp256k1": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz", + "integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.4.1", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "optional": true + } + } + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "requires": { + "jake": "^10.8.5" + } + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" + } + }, + "es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + } + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + } + } + }, + "eslint": { + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", + "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "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", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "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.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.19.0", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "eslint-config-next": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.1.1.tgz", + "integrity": "sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ==", + "dev": true, + "requires": { + "@next/eslint-plugin-next": "13.1.1", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.42.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.31.7", + "eslint-plugin-react-hooks": "^4.5.0" + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-import-resolver-typescript": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz", + "integrity": "sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + } + }, + "eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz", + "integrity": "sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==", + "dev": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.12.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "resolve": "^1.22.3", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "dependencies": { + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-react": { + "version": "7.31.11", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz", + "integrity": "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==", + "dev": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "dependencies": { + "resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "requires": {} + }, + "eslint-plugin-unused-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", + "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", + "dev": true, + "requires": { + "eslint-rule-composer": "^0.3.0" + } + }, + "eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "eth-block-tracker": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz", + "integrity": "sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==", + "requires": { + "@babel/plugin-transform-runtime": "^7.5.5", + "@babel/runtime": "^7.5.5", + "eth-query": "^2.1.0", + "json-rpc-random-id": "^1.0.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + } + } + }, + "eth-crypto": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/eth-crypto/-/eth-crypto-2.5.0.tgz", + "integrity": "sha512-5WA3ebUs38ssNtU/U9FPzehFZnkdAwAFXq+bPF2Fcp4izV+A7bjW6489N8AB7fiQgHi1XkfnTcO64189SJil5A==", + "requires": { + "@babel/runtime": "7.20.6", + "@ethereumjs/tx": "3.5.2", + "@types/bn.js": "5.1.1", + "eccrypto": "1.1.6", + "ethereumjs-util": "7.1.5", + "ethers": "5.7.2", + "secp256k1": "4.0.3" + } + }, + "eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", + "requires": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + }, + "dependencies": { + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" + } + } + }, + "eth-json-rpc-filters": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz", + "integrity": "sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw==", + "requires": { + "@metamask/safe-event-emitter": "^2.0.0", + "async-mutex": "^0.2.6", + "eth-json-rpc-middleware": "^6.0.0", + "eth-query": "^2.1.2", + "json-rpc-engine": "^6.1.0", + "pify": "^5.0.0" + }, + "dependencies": { + "eth-rpc-errors": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz", + "integrity": "sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==", + "requires": { + "fast-safe-stringify": "^2.0.6" + } + }, + "json-rpc-engine": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", + "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", + "requires": { + "@metamask/safe-event-emitter": "^2.0.0", + "eth-rpc-errors": "^4.0.2" + } + }, + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==" + } + } + }, + "eth-json-rpc-infura": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz", + "integrity": "sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow==", + "requires": { + "eth-json-rpc-middleware": "^6.0.0", + "eth-rpc-errors": "^3.0.0", + "json-rpc-engine": "^5.3.0", + "node-fetch": "^2.6.0" + } + }, + "eth-json-rpc-middleware": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz", + "integrity": "sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ==", + "requires": { + "btoa": "^1.2.1", + "clone": "^2.1.1", + "eth-query": "^2.1.2", + "eth-rpc-errors": "^3.0.0", + "eth-sig-util": "^1.4.2", + "ethereumjs-util": "^5.1.2", + "json-rpc-engine": "^5.3.0", + "json-stable-stringify": "^1.0.1", + "node-fetch": "^2.6.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + } + } + }, + "eth-lib": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "eth-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", + "requires": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "eth-rpc-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz", + "integrity": "sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==", + "requires": { + "fast-safe-stringify": "^2.0.6" + } + }, + "eth-sig-util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", + "integrity": "sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw==", + "requires": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-util": "^5.1.1" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "ethereumjs-abi": { + "version": "0.6.8", + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereum-blockies-base64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ethereum-blockies-base64/-/ethereum-blockies-base64-1.0.2.tgz", + "integrity": "sha512-Vg2HTm7slcWNKaRhCUl/L3b4KrB8ohQXdd5Pu3OI897EcR6tVRvUqdTwAyx+dnmoDzj8e2bwBLDQ50ByFmcz6w==", + "requires": { + "pnglib": "0.0.1" + } + }, + "ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "requires": { + "js-sha3": "^0.8.0" + } + }, + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" + }, + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereum-protocol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz", + "integrity": "sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg==" + }, + "ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", + "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==" + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + }, + "dependencies": { + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==" + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "requires": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "requires": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + }, + "dependencies": { + "@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "requires": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + } + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + } + }, + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==" + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "dev": true, + "requires": { + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" + } + }, + "exponential-backoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.0.tgz", + "integrity": "sha512-oBuz5SYz5zzyuHINoe9ooePwSu0xApKWgeNzok4hZ5YKXFh9zrQBEM15CXqoZkJJPuI2ArvqjPQd8UKJA753XA==" + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.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" + }, + "dependencies": { + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "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.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + } + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==" + }, + "fake-merkle-patricia-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==", + "requires": { + "checkpoint-store": "^1.1.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fast-redact": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==" + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "fast-stable-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" + }, + "fastq": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", + "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "requires": { + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "requires": { + "array-back": "^3.0.1" + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "framer-motion": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.15.1.tgz", + "integrity": "sha512-6avJj/Uftblw0fMmo6jDHkKRH4TBdkMX/FiyR3G/hFe3hQHE4BUNJCqlMPKg9EzfI5jyqDOwO5oDnU+bW5y0eg==", + "requires": { + "@emotion/is-prop-valid": "^0.8.2", + "tslib": "^2.4.0" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "dependencies": { + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "fuse.js": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", + "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-tsconfig": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.2.tgz", + "integrity": "sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, + "getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "requires": { + "async": "^3.2.0" + }, + "dependencies": { + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + } + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "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" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "requires": { + "ini": "2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "requires": { + "define-properties": "^1.1.3" + } + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "got": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", + "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", + "requires": { + "@sindresorhus/is": "^4.6.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "1.7.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + } + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hdkey": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-2.0.1.tgz", + "integrity": "sha512-c+tl9PHG9/XkGgG0tD7CJpRVaE0jfZizDNmnErUAKQ4EjQSOcOUcV3EN9ZEZS8pZ4usaeiiK0H7stzuzna8feA==", + "requires": { + "bs58check": "^2.1.2", + "safe-buffer": "^5.1.1", + "secp256k1": "^4.0.0" + } + }, + "hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "html-tokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-tokenize/-/html-tokenize-2.0.1.tgz", + "integrity": "sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==", + "requires": { + "buffer-from": "~0.1.1", + "inherits": "~2.0.1", + "minimist": "~1.2.5", + "readable-stream": "~1.0.27-1", + "through2": "~0.4.1" + }, + "dependencies": { + "buffer-from": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", + "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==" + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + } + }, + "http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, + "idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==" + } + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, + "immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==" + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "devOptional": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + }, + "int64-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-1.0.1.tgz", + "integrity": "sha512-+3azY4pXrjAupJHU1V9uGERWlhoqNswJNji6aD/02xac7oxol508AsMC5lxKhEqyZeDFy3enq5OGWXF4u75hiw==" + }, + "internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "requires": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "intl-messageformat": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz", + "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==", + "requires": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/fast-memoize": "1.2.1", + "@formatjs/icu-messageformat-parser": "2.1.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, + "is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==" + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, + "is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "requires": { + "is-path-inside": "^2.1.0" + }, + "dependencies": { + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "requires": { + "path-is-inside": "^1.0.2" + } + } + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" + }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "requires": {} + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + } + } + }, + "jayson": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", + "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", + "requires": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "JSONStream": "^1.3.5", + "uuid": "^8.3.2", + "ws": "^7.4.5" + }, + "dependencies": { + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + } + } + }, + "jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", + "dev": true, + "requires": { + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", + "import-local": "^3.0.2", + "jest-cli": "^28.1.3" + } + }, + "jest-changed-files": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + } + }, + "jest-circus": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-cli": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", + "dev": true, + "requires": { + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + } + }, + "jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "jest-docblock": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" + } + }, + "jest-environment-jsdom": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz", + "integrity": "sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/jsdom": "^16.2.4", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3", + "jsdom": "^19.0.0" + } + }, + "jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + } + }, + "jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true + }, + "jest-haste-map": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-leak-detector": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", + "dev": true, + "requires": { + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "dev": true + }, + "jest-resolve": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", + "dev": true, + "requires": { + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" + } + }, + "jest-runner": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", + "dev": true, + "requires": { + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "graceful-fs": "^4.2.9", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + } + }, + "jest-runtime": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "natural-compare": "^1.4.0", + "pretty-format": "^28.1.3", + "semver": "^7.3.5" + } + }, + "jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "leven": "^3.1.0", + "pretty-format": "^28.1.3" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dev": true, + "requires": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "joi": { + "version": "17.9.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.1.tgz", + "integrity": "sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "js-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==" + }, + "js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "dev": true + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbi": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz", + "integrity": "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "jsdom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + } + }, + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-rpc-engine": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz", + "integrity": "sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==", + "requires": { + "eth-rpc-errors": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "json-rpc-random-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==" + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "requires": { + "jsonify": "^0.0.1" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "json5": { + "version": "2.2.2" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==" + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" + }, + "jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" + }, + "jsonschema": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.2.tgz", + "integrity": "sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA==" + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jsqr": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", + "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" + }, + "jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + } + }, + "keccak": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "keyvaluestorage-interface": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz", + "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "language-tags": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.7.tgz", + "integrity": "sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw==", + "dev": true, + "requires": { + "language-subtag-registry": "^0.3.20" + } + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true + }, + "less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==" + }, + "level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "level-errors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.1.2.tgz", + "integrity": "sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w==", + "requires": { + "errno": "~0.1.1" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + } + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "dependencies": { + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + } + } + }, + "lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "lit": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.7.5.tgz", + "integrity": "sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==", + "requires": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.3.0", + "lit-html": "^2.7.0" + } + }, + "lit-element": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", + "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "lit-html": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "requires": { + "@types/trusted-types": "^2.0.2" + } + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "lodash.partition": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.partition/-/lodash.partition-4.6.0.tgz", + "integrity": "sha512-35L3dSF3Q6V1w5j6V3NhNlQjzsRDC/pYKCTdYTmwqSib+Q8ponkAmt/PwEOq3EmI38DSCl+SkIVwLd+uSlVdrg==" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, + "lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "requires": { + "es5-ext": "~0.10.2" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==" + }, + "lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==", + "dev": true + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", + "requires": { + "mkdirp": "*" + } + }, + "mock-fs": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", + "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" + }, + "motion": { + "version": "10.16.2", + "resolved": "https://registry.npmjs.org/motion/-/motion-10.16.2.tgz", + "integrity": "sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==", + "requires": { + "@motionone/animation": "^10.15.1", + "@motionone/dom": "^10.16.2", + "@motionone/svelte": "^10.16.2", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "@motionone/vue": "^10.16.2" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + }, + "mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "multibase": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "multicodec": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", + "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", + "requires": { + "varint": "^5.0.0" + } + }, + "multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" + }, + "multihashes": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", + "requires": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" + }, + "dependencies": { + "multibase": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + } + } + }, + "multipipe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-1.0.2.tgz", + "integrity": "sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==", + "requires": { + "duplexer2": "^0.1.2", + "object-assign": "^4.1.0" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==" + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "next": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/next/-/next-12.2.0.tgz", + "integrity": "sha512-B4j7D3SHYopLYx6/Ark0fenwIar9tEaZZFAaxmKjgcMMexhVJzB3jt7X+6wcdXPPMeUD6r09weUtnDpjox/vIA==", + "requires": { + "@next/env": "12.2.0", + "@next/swc-android-arm-eabi": "12.2.0", + "@next/swc-android-arm64": "12.2.0", + "@next/swc-darwin-arm64": "12.2.0", + "@next/swc-darwin-x64": "12.2.0", + "@next/swc-freebsd-x64": "12.2.0", + "@next/swc-linux-arm-gnueabihf": "12.2.0", + "@next/swc-linux-arm64-gnu": "12.2.0", + "@next/swc-linux-arm64-musl": "12.2.0", + "@next/swc-linux-x64-gnu": "12.2.0", + "@next/swc-linux-x64-musl": "12.2.0", + "@next/swc-win32-arm64-msvc": "12.2.0", + "@next/swc-win32-ia32-msvc": "12.2.0", + "@next/swc-win32-x64-msvc": "12.2.0", + "@swc/helpers": "0.4.2", + "caniuse-lite": "^1.0.30001332", + "postcss": "8.4.5", + "styled-jsx": "5.0.2", + "use-sync-external-store": "1.1.0" + }, + "dependencies": { + "postcss": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "requires": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + } + } + } + }, + "next-pwa": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/next-pwa/-/next-pwa-5.6.0.tgz", + "integrity": "sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==", + "requires": { + "babel-loader": "^8.2.5", + "clean-webpack-plugin": "^4.0.0", + "globby": "^11.0.4", + "terser-webpack-plugin": "^5.3.3", + "workbox-webpack-plugin": "^6.5.4", + "workbox-window": "^6.5.4" + } + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + }, + "node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "devOptional": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" + } + } + }, + "nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.groupby": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz", + "integrity": "sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.21.2", + "get-intrinsic": "^1.2.1" + } + }, + "object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "oboe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", + "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", + "requires": { + "http-https": "^1.0.0" + } + }, + "on-exit-leak-free": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", + "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "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.3" + }, + "dependencies": { + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + } + } + }, + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", + "dev": true + }, + "ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "papaparse": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", + "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pino": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz", + "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==", + "requires": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.0.0", + "on-exit-leak-free": "^0.2.0", + "pino-abstract-transport": "v0.5.0", + "pino-std-serializers": "^4.0.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.1.0", + "safe-stable-stringify": "^2.1.0", + "sonic-boom": "^2.2.1", + "thread-stream": "^0.15.1" + } + }, + "pino-abstract-transport": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", + "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", + "requires": { + "duplexify": "^4.1.2", + "split2": "^4.0.0" + } + }, + "pino-std-serializers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + }, + "pnglib": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pnglib/-/pnglib-0.0.1.tgz", + "integrity": "sha512-95ChzOoYLOPIyVmL+Y6X+abKGXUJlvOVLkB1QQkyXl7Uczc6FElUy/x01NS7r2GX6GRezloO/ecCX9h4U9KadA==" + }, + "postcss": { + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "dev": true, + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "pre-commit": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", + "integrity": "sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA==", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "spawn-sync": "^1.0.15", + "which": "1.2.x" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "preact": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.4.1.tgz", + "integrity": "sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==" + }, + "precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==" + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + }, + "promise-to-callback": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", + "integrity": "sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA==", + "requires": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, + "protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-compare": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", + "integrity": "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==" + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "pushdata-bitcoin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz", + "integrity": "sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ==", + "requires": { + "bitcoin-ops": "^1.3.0" + } + }, + "qr.js": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz", + "integrity": "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==" + }, + "qrcode": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz", + "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==", + "requires": { + "buffer": "^5.4.3", + "buffer-alloc": "^1.2.0", + "buffer-from": "^1.1.1", + "dijkstrajs": "^1.0.1", + "isarray": "^2.0.1", + "pngjs": "^3.3.0", + "yargs": "^13.2.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "qrcode.react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz", + "integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==", + "requires": {} + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "query-string": { + "version": "6.13.5", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz", + "integrity": "sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==", + "requires": { + "decode-uri-component": "^0.2.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "requires": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + } + }, + "react-gtm-module": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/react-gtm-module/-/react-gtm-module-2.0.11.tgz", + "integrity": "sha512-8gyj4TTxeP7eEyc2QKawEuQoAZdjKvMY4pgWfycGmqGByhs17fR+zEBs0JUDq4US/l+vbTl+6zvUIx27iDo/Vw==" + }, + "react-hook-form": { + "version": "7.41.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.41.1.tgz", + "integrity": "sha512-IHUozfwuqE+P201KIJwotMd+UCKqzIprseR8UUjz1jRupkZeubg0xyeMLIaT192zHv7vBBu9bibpNV5cIB4E9g==", + "requires": {} + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-papaparse": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/react-papaparse/-/react-papaparse-4.1.0.tgz", + "integrity": "sha512-sGJqK+OE2rVVQPxQUCCDW2prLIglv9kTdizhNe2awXvKo0gLShmhpRN3BwA+ujw5M2gSJ/KGNEwtgII0OsLgkg==", + "requires": { + "@types/papaparse": "^5.3.1", + "papaparse": "^5.3.1" + } + }, + "react-qr-reader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-qr-reader/-/react-qr-reader-2.2.1.tgz", + "integrity": "sha512-EL5JEj53u2yAOgtpAKAVBzD/SiKWn0Bl7AZy6ZrSf1lub7xHwtaXe6XSx36Wbhl1VMGmvmrwYMRwO1aSCT2fwA==", + "requires": { + "jsqr": "^1.2.0", + "prop-types": "^15.7.2", + "webrtc-adapter": "^7.2.1" + } + }, + "react-redux": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", + "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", + "requires": { + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", + "hoist-non-react-statics": "^3.3.2", + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" + }, + "dependencies": { + "use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "requires": {} + } + } + }, + "react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "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" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "real-require": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", + "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==" + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true + }, + "redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "redux-thunk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", + "requires": {} + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + } + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + }, + "reserved-words": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", + "integrity": "sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==", + "dev": true + }, + "resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "requires": { + "lowercase-keys": "^2.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rifm": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", + "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==", + "requires": {} + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "ripple-address-codec": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.3.0.tgz", + "integrity": "sha512-Tvd81i7hpDmNqHvkj6iYlj8Tv3I1Romw5gfjni9eacewJvGV2xe+p2y0FAw39z72qfciRMhQyHvpnviBcWVBNw==", + "requires": { + "base-x": "^3.0.9", + "create-hash": "^1.1.2" + } + }, + "ripple-binary-codec": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.8.0.tgz", + "integrity": "sha512-rtnLT6x1wKCRVWc/SL7jKD6lM5Nzf51HyM8A3AluBGTR8ubzAoAL3wzexCILKXbPhiBorrHRjLgB8L6IB2jhjw==", + "requires": { + "assert": "^2.0.0", + "big-integer": "^1.6.48", + "buffer": "6.0.3", + "create-hash": "^1.2.0", + "decimal.js": "^10.2.0", + "ripple-address-codec": "^4.3.0" + }, + "dependencies": { + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "ripple-keypairs": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.3.0.tgz", + "integrity": "sha512-LzM3Up9Pwz3dYqnczzNptimN3AxtjeGbDGeiOzREzbkslKiZcJ615b/ghBN4H23SC6W1GAL95juEzzimDi4THw==", + "requires": { + "bn.js": "^5.1.1", + "brorand": "^1.0.5", + "elliptic": "^6.5.4", + "hash.js": "^1.0.3", + "ripple-address-codec": "^4.3.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "ripple-lib": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/ripple-lib/-/ripple-lib-1.10.1.tgz", + "integrity": "sha512-OQk+Syl2JfxKxV2KuF/kBMtnh012I5tNnziP3G4WDGCGSIAgeqkOgkR59IQ0YDNrs1YW8GbApxrdMSRi/QClcA==", + "requires": { + "@types/lodash": "^4.14.136", + "@types/ws": "^7.2.0", + "bignumber.js": "^9.0.0", + "https-proxy-agent": "^5.0.0", + "jsonschema": "1.2.2", + "lodash": "^4.17.4", + "ripple-address-codec": "^4.1.1", + "ripple-binary-codec": "^1.1.3", + "ripple-keypairs": "^1.0.3", + "ripple-lib-transactionparser": "0.8.2", + "ws": "^7.2.0" + } + }, + "ripple-lib-transactionparser": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/ripple-lib-transactionparser/-/ripple-lib-transactionparser-0.8.2.tgz", + "integrity": "sha512-1teosQLjYHLyOQrKUQfYyMjDR3MAq/Ga+MJuLUfpBMypl4LZB4bEoMcmG99/+WVTEiZOezJmH9iCSvm/MyxD+g==", + "requires": { + "bignumber.js": "^9.0.0", + "lodash": "^4.17.15" + } + }, + "rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "requires": { + "bn.js": "^5.2.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "dependencies": { + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "requires": { + "randombytes": "^2.1.0" + } + } + } + }, + "rpc-websockets": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.1.tgz", + "integrity": "sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==", + "requires": { + "@babel/runtime": "^7.17.2", + "bufferutil": "^4.0.1", + "eventemitter3": "^4.0.7", + "utf-8-validate": "^5.0.2", + "uuid": "^8.3.2", + "ws": "^8.5.0" + }, + "dependencies": { + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "requires": {} + } + } + }, + "rtcpeerconnection-shim": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/rtcpeerconnection-shim/-/rtcpeerconnection-shim-1.2.15.tgz", + "integrity": "sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw==", + "requires": { + "sdp": "^2.6.0" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "requires": { + "mri": "^1.1.0" + } + }, + "safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-event-emitter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", + "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", + "requires": { + "events": "^3.0.0" + } + }, + "safe-json-utils": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/safe-json-utils/-/safe-json-utils-1.1.1.tgz", + "integrity": "sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==" + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass": { + "version": "1.64.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz", + "integrity": "sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==", + "devOptional": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "sdp": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/sdp/-/sdp-2.12.0.tgz", + "integrity": "sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==" + }, + "secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "requires": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semaphore": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==" + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "requires": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", + "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + }, + "dependencies": { + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "requires": { + "mimic-response": "^1.0.0" + } + } + } + }, + "sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, + "sonic-boom": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", + "requires": { + "atomic-sleep": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==", + "dev": true, + "requires": { + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" + } + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "requires": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==" + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "sturdy-websocket": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz", + "integrity": "sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew==", + "requires": { + "lodash.defaults": "^4.2.0" + } + }, + "styled-jsx": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.2.tgz", + "integrity": "sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==", + "requires": {} + }, + "stylis": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", + "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" + }, + "stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "requires": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } + } + }, + "superstruct": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", + "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svelte": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.0.tgz", + "integrity": "sha512-uGu2FVMlOuey4JoKHKrpZFkoYyj0VLjJdz47zX5+gVK5odxHM40RVhar9/iK2YFRVxvfg9FkhfVlR0sjeIrOiA==" + }, + "svelte-i18n": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/svelte-i18n/-/svelte-i18n-3.6.0.tgz", + "integrity": "sha512-qvvcMqHVCXJ5pHoQR5uGzWAW5vS3qB9mBq+W6veLZ6jkrzZGOziR+wyOUJsc59BupMh+Ae30qjOndFrRU6v5jA==", + "requires": { + "cli-color": "^2.0.3", + "deepmerge": "^4.2.2", + "estree-walker": "^2", + "intl-messageformat": "^9.13.0", + "sade": "^1.8.1", + "tiny-glob": "^0.2.9" + } + }, + "svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "swarm-js": { + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz", + "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", + "requires": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^11.8.5", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" + }, + "dependencies": { + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + } + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "requires": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true + } + } + }, + "tallyho-detect-provider": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tallyho-detect-provider/-/tallyho-detect-provider-1.0.2.tgz", + "integrity": "sha512-VUGZiWUrKJUUjtnkib09tuNO7Kld4UWLs54nnNYP0tewvzmeb1VWDK0UTv88bEUcuRKx2YWGDIuOuK9v270Ewg==" + }, + "tallyho-onboarding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tallyho-onboarding/-/tallyho-onboarding-1.0.2.tgz", + "integrity": "sha512-bdFT/fNrFrq1BYVgjl/JKtwDmeS+z2u0415PoxmGmmYYRfdcKqXtEPImMoEbVwGtOeN0iFVohuS8ESrrAe+w7w==", + "requires": { + "bowser": "^2.9.0" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" + }, + "tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "requires": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", + "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "dependencies": { + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "thread-stream": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz", + "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==", + "requires": { + "real-require": "^0.1.0" + } + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==" + }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "tiny-secp256k1": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz", + "integrity": "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==", + "requires": { + "bindings": "^1.3.0", + "bn.js": "^4.11.8", + "create-hmac": "^1.1.7", + "elliptic": "^6.4.0", + "nan": "^2.13.2" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "true-myth": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/true-myth/-/true-myth-4.1.1.tgz", + "integrity": "sha512-rqy30BSpxPznbbTcAcci90oZ1YR4DqvKcNXNerG5gQBU2v4jk0cygheiul5J6ExIMrgDVuanv/MkGfqZbKrNNg==", + "dev": true + }, + "ts-command-line-args": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz", + "integrity": "sha512-FR3y7pLl/fuUNSmnPhfLArGqRrpojQgIEEOVzYx9DhTmfIN7C9RWSfpkJEF4J+Gk7aVx5pak8I7vWZsaN4N84g==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + } + }, + "ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "requires": {} + }, + "ts-morph": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-13.0.3.tgz", + "integrity": "sha512-pSOfUMx8Ld/WUreoSzvMFQG5i9uEiWIsBYjpU9+TTASOeUa89j5HykomeqVULm1oqWtBdleI3KEFRLrlA3zGIw==", + "dev": true, + "requires": { + "@ts-morph/common": "~0.12.3", + "code-block-writer": "^11.0.0" + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, + "ts-prune": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-prune/-/ts-prune-0.10.3.tgz", + "integrity": "sha512-iS47YTbdIcvN8Nh/1BFyziyUqmjXz7GVzWu02RaZXqb+e/3Qe1B7IQ4860krOeCGUeJmterAlaM2FRH0Ue0hjw==", + "dev": true, + "requires": { + "commander": "^6.2.1", + "cosmiconfig": "^7.0.1", + "json5": "^2.1.3", + "lodash": "^4.17.21", + "true-myth": "^4.1.0", + "ts-morph": "^13.0.1" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + } + } + }, + "tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typechain": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.1.1.tgz", + "integrity": "sha512-uF/sUvnXTOVF2FHKhQYnxHk4su4JjZR8vr4mA2mBaRwHTbwh0jIlqARz9XJr1tA0l7afJGvEa1dTSi4zt039LQ==", + "dev": true, + "requires": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typeforce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", + "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" + }, + "typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==" + }, + "typescript-plugin-css-modules": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript-plugin-css-modules/-/typescript-plugin-css-modules-4.2.3.tgz", + "integrity": "sha512-jEEP2oUPOqR89QGgvPK2HSTZLkrCeKZQ9EwiNxm9VUcufUbNY1Tv053fPKRq6c13PMQjlBU3WrQjKN8u0j5Y6w==", + "dev": true, + "requires": { + "@types/postcss-modules-local-by-default": "^4.0.0", + "@types/postcss-modules-scope": "^3.0.1", + "dotenv": "^16.0.3", + "icss-utils": "^5.1.0", + "less": "^4.1.3", + "lodash.camelcase": "^4.3.0", + "postcss": "^8.4.21", + "postcss-load-config": "^3.1.4", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "reserved-words": "^0.1.2", + "sass": "^1.58.3", + "source-map-js": "^1.0.2", + "stylus": "^0.59.0", + "tsconfig-paths": "^4.1.2" + }, + "dependencies": { + "postcss-load-config": { + "version": "3.1.4", + "dev": true, + "requires": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + } + }, + "tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "requires": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + } + } + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + }, + "u2f-api": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/u2f-api/-/u2f-api-0.2.7.tgz", + "integrity": "sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg==" + }, + "ua-parser-js": { + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", + "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==" + }, + "uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "requires": { + "multiformats": "^9.4.2" + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==" + }, + "use-sync-external-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz", + "integrity": "sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ==", + "requires": {} + }, + "utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "v8-to-istanbul": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + } + }, + "valtio": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.10.6.tgz", + "integrity": "sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA==", + "requires": { + "proxy-compare": "2.5.1", + "use-sync-external-store": "1.2.0" + }, + "dependencies": { + "use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "requires": {} + } + } + }, + "varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" + }, + "varuint-bitcoin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz", + "integrity": "sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==", + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==" + } + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "dev": true, + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "web3": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.0.tgz", + "integrity": "sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==", + "requires": { + "web3-bzz": "1.10.0", + "web3-core": "1.10.0", + "web3-eth": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-shh": "1.10.0", + "web3-utils": "1.10.0" + } + }, + "web3-bzz": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.0.tgz", + "integrity": "sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==", + "requires": { + "@types/node": "^12.12.6", + "got": "12.1.0", + "swarm-js": "^0.1.40" + }, + "dependencies": { + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + } + } + }, + "web3-core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.0.tgz", + "integrity": "sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==", + "requires": { + "@types/bn.js": "^5.1.1", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-requestmanager": "1.10.0", + "web3-utils": "1.10.0" + }, + "dependencies": { + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + } + } + }, + "web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "requires": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + } + }, + "web3-core-method": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", + "integrity": "sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==", + "requires": { + "@ethersproject/transactions": "^5.6.2", + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-utils": "1.10.0" + } + }, + "web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "requires": { + "eventemitter3": "4.0.4" + } + }, + "web3-core-requestmanager": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", + "integrity": "sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==", + "requires": { + "util": "^0.12.5", + "web3-core-helpers": "1.10.0", + "web3-providers-http": "1.10.0", + "web3-providers-ipc": "1.10.0", + "web3-providers-ws": "1.10.0" + } + }, + "web3-core-subscriptions": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz", + "integrity": "sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==", + "requires": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.10.0" + } + }, + "web3-eth": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.0.tgz", + "integrity": "sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==", + "requires": { + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-accounts": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-eth-ens": "1.10.0", + "web3-eth-iban": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" + } + }, + "web3-eth-abi": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.0.tgz", + "integrity": "sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg==", + "requires": { + "@ethersproject/abi": "^5.6.3", + "web3-utils": "1.10.0" + } + }, + "web3-eth-accounts": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz", + "integrity": "sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==", + "requires": { + "@ethereumjs/common": "2.5.0", + "@ethereumjs/tx": "3.3.2", + "eth-lib": "0.2.8", + "ethereumjs-util": "^7.1.5", + "scrypt-js": "^3.0.1", + "uuid": "^9.0.0", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" + }, + "dependencies": { + "@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "requires": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" + } + }, + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + } + } + }, + "web3-eth-contract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz", + "integrity": "sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==", + "requires": { + "@types/bn.js": "^5.1.1", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-utils": "1.10.0" + } + }, + "web3-eth-ens": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz", + "integrity": "sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==", + "requires": { + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-utils": "1.10.0" + } + }, + "web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "requires": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "web3-eth-personal": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", + "integrity": "sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==", + "requires": { + "@types/node": "^12.12.6", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" + }, + "dependencies": { + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + } + } + }, + "web3-net": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.0.tgz", + "integrity": "sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==", + "requires": { + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" + } + }, + "web3-provider-engine": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-16.0.3.tgz", + "integrity": "sha512-Q3bKhGqLfMTdLvkd4TtkGYJHcoVQ82D1l8jTIwwuJp/sAp7VHnRYb9YJ14SW/69VMWoOhSpPLZV2tWb9V0WJoA==", + "requires": { + "@ethereumjs/tx": "^3.3.0", + "async": "^2.5.0", + "backoff": "^2.5.0", + "clone": "^2.0.0", + "cross-fetch": "^2.1.0", + "eth-block-tracker": "^4.4.2", + "eth-json-rpc-filters": "^4.2.1", + "eth-json-rpc-infura": "^5.1.0", + "eth-json-rpc-middleware": "^6.0.0", + "eth-rpc-errors": "^3.0.0", + "eth-sig-util": "^1.4.2", + "ethereumjs-block": "^1.2.2", + "ethereumjs-util": "^5.1.5", + "ethereumjs-vm": "^2.3.4", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "readable-stream": "^2.2.9", + "request": "^2.85.0", + "semaphore": "^1.0.3", + "ws": "^5.1.1", + "xhr": "^2.2.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "cross-fetch": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz", + "integrity": "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==", + "requires": { + "node-fetch": "^2.6.7", + "whatwg-fetch": "^2.0.4" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, + "ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "web3-providers-http": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.0.tgz", + "integrity": "sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==", + "requires": { + "abortcontroller-polyfill": "^1.7.3", + "cross-fetch": "^3.1.4", + "es6-promise": "^4.2.8", + "web3-core-helpers": "1.10.0" + } + }, + "web3-providers-ipc": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz", + "integrity": "sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==", + "requires": { + "oboe": "2.1.5", + "web3-core-helpers": "1.10.0" + } + }, + "web3-providers-ws": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz", + "integrity": "sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==", + "requires": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.10.0", + "websocket": "^1.0.32" + } + }, + "web3-shh": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.0.tgz", + "integrity": "sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==", + "requires": { + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-net": "1.10.0" + } + }, + "web3-utils": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", + "requires": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "webpack-bundle-analyzer": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz", + "integrity": "sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==", + "dev": true, + "requires": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "webrtc-adapter": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-7.7.1.tgz", + "integrity": "sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A==", + "requires": { + "rtcpeerconnection-shim": "^1.2.15", + "sdp": "^2.12.0" + } + }, + "websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true + }, + "whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "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-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, + "which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "wif": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", + "integrity": "sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==", + "requires": { + "bs58check": "<3.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "requires": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + } + }, + "workbox-background-sync": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", + "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", + "requires": { + "idb": "^7.0.1", + "workbox-core": "6.5.4" + } + }, + "workbox-broadcast-update": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", + "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", + "requires": { + "workbox-core": "6.5.4" + } + }, + "workbox-build": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", + "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", + "requires": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.5.4", + "workbox-broadcast-update": "6.5.4", + "workbox-cacheable-response": "6.5.4", + "workbox-core": "6.5.4", + "workbox-expiration": "6.5.4", + "workbox-google-analytics": "6.5.4", + "workbox-navigation-preload": "6.5.4", + "workbox-precaching": "6.5.4", + "workbox-range-requests": "6.5.4", + "workbox-recipes": "6.5.4", + "workbox-routing": "6.5.4", + "workbox-strategies": "6.5.4", + "workbox-streams": "6.5.4", + "workbox-sw": "6.5.4", + "workbox-window": "6.5.4" + }, + "dependencies": { + "@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "requires": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + } + }, + "ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "workbox-cacheable-response": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", + "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", + "requires": { + "workbox-core": "6.5.4" + } + }, + "workbox-core": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", + "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==" + }, + "workbox-expiration": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", + "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", + "requires": { + "idb": "^7.0.1", + "workbox-core": "6.5.4" + } + }, + "workbox-google-analytics": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", + "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", + "requires": { + "workbox-background-sync": "6.5.4", + "workbox-core": "6.5.4", + "workbox-routing": "6.5.4", + "workbox-strategies": "6.5.4" + } + }, + "workbox-navigation-preload": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", + "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", + "requires": { + "workbox-core": "6.5.4" + } + }, + "workbox-precaching": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", + "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", + "requires": { + "workbox-core": "6.5.4", + "workbox-routing": "6.5.4", + "workbox-strategies": "6.5.4" + } + }, + "workbox-range-requests": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", + "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", + "requires": { + "workbox-core": "6.5.4" + } + }, + "workbox-recipes": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", + "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", + "requires": { + "workbox-cacheable-response": "6.5.4", + "workbox-core": "6.5.4", + "workbox-expiration": "6.5.4", + "workbox-precaching": "6.5.4", + "workbox-routing": "6.5.4", + "workbox-strategies": "6.5.4" + } + }, + "workbox-routing": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", + "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", + "requires": { + "workbox-core": "6.5.4" + } + }, + "workbox-strategies": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", + "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", + "requires": { + "workbox-core": "6.5.4" + } + }, + "workbox-streams": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", + "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", + "requires": { + "workbox-core": "6.5.4", + "workbox-routing": "6.5.4" + } + }, + "workbox-sw": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", + "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==" + }, + "workbox-webpack-plugin": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", + "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", + "requires": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.5.4" + } + }, + "workbox-window": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", + "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", + "requires": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.5.4" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} + }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "requires": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + }, + "dependencies": { + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" + } + } + }, + "xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "requires": { + "xhr-request": "^1.1.0" + } + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/public/favicons/favicon-16x16.png b/public/favicons/favicon-16x16.png index 48e8856905eece06daeee63f651b6ddd9bdaa550..9b42d219adee739f040a18d731870edf991c20c8 100644 GIT binary patch literal 784 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiaP zfk$L90|U1(2s1Lwnj--eWH0gbb!C6XB_YTo${!K#2NYWF>EaloaenPZL%$|R0oDio zz4eYgdymd*EZ~z`?{GZz$Sv)J2W)RxUtIAz$0(Y3JuAHK^I~4(v!`cIpJ{F^pqi>M znd9PY8;uiTO3}{`76s19b?>r&yl&y*@b^rcR<{0*TJd&XsqdZ0Fgue^msdWV+|Siq z|7cp1=lLg3+=I4TL{u4Fn^{?yQS-hiUe5MLY?0%n=<OHvnIpNLT?;=Kn{(#ty}j>y zJ(TYITc=9fSIe9MI$5>EHKHUXu_V<hxhNG#F&G&b8R;4t=o*=X7@Aud8d({dYa19? z85m@*nYSH9LvDUbW?Cg~4N@P~xPclJKsFTTr<If^7Ns&|l#~<{Tj}d(<|d}60&!+? zwqAZw`kwQ$bAf6lKx#uWN^_H}tX%SwOLJ56O028`fJ%!Q4441kt&gV06J&~&l}Bo3 zdPWI@p{0>SY+)!+jX07yP&MJ1DJ2;oC70JIasZV`A}R6B%uOw+EJ$SlyGp+xFWr7q z7$`!K&G8KZs$wuS0|H}1Q)6@6@|}NyO8Ak?3C^raWiW7ZnzG354Nxi!Nh&nRlOZiL zCl%;*{oK5gocwhCw8XN^<ovv1eMFG!TNor8S(q4@8JSt8np&EeB^f1}o2FPACm9+U er5c&0=mB-;0o}L7`+^S81_n=8KbLh*2~7Z+odHh( delta 481 zcmV<70UrL42Ji!r8Gi-<001BJ|6u?C010qNS#tmY3ljhU3ljkVnw%H_0004VQb$4n zuFf3k00004XF*Lt006O%3;baP0004nNkl<Zcmah|ze~eF6#gzmT%>lWAczuh5()-a z2kqeEQo%(xw~p1n!0YN{!NtwdMX-yjT^w8_gWyyQir~;8Reu*N8sF>XE<YOM2jP8p zx$nDo@9qg?PzmKah58S$MbU|-Jwe|D(0UcpPp%i5IH4@R0f$8QQ2+}#o+2Y($iNsx z;%lNVo`{`4j4KyPz|N8$c{HlAiOr*EXLt1L`5idA&EGyYa6gphK+J~H83K<Od;<4< z;Hn3ldifdL?SEyDQ?tL6lM?BjdktWE68|BjLR+CuJqa!5jBZ|v4C-71*QA(?EUaHB z-rWVNGkG44Z73HgE>ijkgQ1EmXBgem$%a|W20r2k6Qf!II@`*KIfKQ?NY_b)L<fIi zbuJe3Esevo$>EZoZ8J5kQ_Z45<=R{{rlf0GeIdKV+ghoGd13~OIV(CAJ>hmhePKsV zk}_F?z7Z}`p2>X4r2b7BCZ?In)DM=LY@z_XGmC>{GbKSrPGq!<_>uYab+}&9kqv$U X;FfjYEgzdg00000NkvXXu0mjf@c7SX diff --git a/public/favicons/favicon-32x32.png b/public/favicons/favicon-32x32.png index bb3578d1087a2b395a68ed9fad5ac8ab75479d60..6db1ff32e587e86c1986973fc26c71aff530af4b 100644 GIT binary patch literal 924 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-G$+Qd;gjJKptm- zM`SSr1Gg{;GcwGYBLNg-FY)wsWq-ycA;=@j9}(`yz`$ti>EamTas2I+gI>&r0&V+s za=C&8zxcj7sKuq-)E~4*r0Sz;4WI2R=`H20+Y<P_0$*w8+>ER0Y%j~a<Kwldy7buw z1MC0OJ=26V-Zc69EI99}8QFe4Vdp`Eh1sY5E4wF2^IVo)6zrI%cuu){d#w+b{M4sx zho>J3I6bMVD5K+IkD%qLE(yM!&pf=!zHfaZ*Q>NKW})N;kxj0Z!E07)D$O~-t^2+$ z+GhIayUsBizcF2Vq8J<C67kmTA9ISsm9IsNxm(PmFHgIs-T&!;@hRS4ii`I+W=t^+ z;A&mw|19k^zt^z|qV_fun7ibr%M=J#%`NYLcJkYtd4D2*-_G!g-^l%W#xl!o9xn`6 z>dY@>FF1CknC<v&E%~GWjn{Dng}c0AkND&(`dH(@?|4gxQ{@H;2XhsFv;L86do0g? z)fO0{swJ)wB`Jv|saDBFsX&Us$iT=**U&)M$Rxzj+{)0%%FtZfz`)ADAbZWc?I;>@ z^HVa@DsgL&`l!YY)Sv*ep*TOSq&%@Gl_8^~q@dVJUq3T9F+CNCGn2FR@{7{<oR^&o zR4V~e8<J6)n`C9>lAm0fo0?Z*WfcHaTFhX${Qqu!G&P<eQ>?5!QZv&tN*D|+jT~YN zLxF0<k<5Xr3C~O^$p9(2yhf1&s6-M;iEn0ZYDr~5Dg)S6`UQFE_M5_hi3`OX-w>cG z217F-Fg7$bHn%O``4^~!AIY5H%&Jrd11F~`i|pP2rNWS;LW4XR(lT>WfnL|o%`3^t zPuEXNEXz#J&nwnP1i8M2L9&sBiGi7snPsY}rHNURQKGqNiluRqp^;Ilk!gw^P=_AS VeOtUQ=m2eC@O1TaS?83{1OQInKF9z7 delta 767 zcmV<b0s#G-2aE=g8Gi-<0047(dh`GQ010qNS#tmY3ljhU3ljkVnw%H_0004VQb$4n zuFf3k00004XF*Lt006O%3;baP0007^Nkl<Zcmc&%yKdA#6g_s9M*+k_AR&Q}feIQ- zO%WnN6B-^3sh~@Pl<g^S{vd&hE}?-A(u9Hnf|Pz~pdzvmNPl!VfhGyT+~aZZYrGyi zj&h{gwP(h2?rUc5wO|N0@||D6tq2&CSC3uNoMbqZ7FfVQ{+EveuLH{uP1d#QCY*|V z_YW}r7kH2%G+B8505J2z@`IXrdQjta;ITaRu?yJ1>=6;9$|70;sP!iB4$913AUFt& z>#SiHJ5ENv*MBiN5i7*Civu|eRBHZa6?pg-SlfURuATuF@90KKmiTW0`n*!}r7z~> z#LBm-kyt@;l>|rv&c)ut{jIoC0cd&*i}tlmbP3tg{e%-e{%mC=ib0<*ttR9f$^}g@ z<<(BvQVRDiNBkjX_?a6$@ud94;#~=@)94W4G2om%B7euL(e!S~iTG$|42)r)z<Z?^ zsf(pKo(<Bic~*>h?;={jV-UJ%ikF{(M<4Qi6lSWiE-qbAzTqYd+7uW5x?cLE(Lt5M z>1n&4-cW5fpoQqB9ZX)5HLsVZ(E>(^Lk^>d%6*K3EVAUpi%-xXqy+*r4Me(xLhQJL z&+URRpnm`#(Pk&KBP?QI%YFPF`vl=$wznmLM4LDmhL!I|)0n*WLdn&RNB)AmPY<14 zjA|21Tu1|U;(T#*o_S)t4dr^Awd(|EOfH1aZ&nTq=M4Yjd>~XQ(j2<P=;6vC@%>!F znPx;Hkq@;c_Zq>r;zCXU#)1ejUMU0<O;gbCWq6;*<m3o5HA1N_kOajOsa~P`{E+0g zg*+Eb+QLMH;4Rf@VUlPb6bEeGY)+I9uAqa!WWaH)u%bq+Elv|_`0{uk=Ae%kxV^)+ x#i>RRXGE3f*W~pwH08Op0gqRnuAyOh{tv;z*OP|&=du6*002ovPDHLkV1oBRV+#NP diff --git a/public/favicons/favicon.ico b/public/favicons/favicon.ico index 5e6e26a3f1d4b38a47669648551f562712c7cd2c..fd34ac37e0f07a99c178b5db2088cbac25f6ea8a 100644 GIT binary patch literal 1150 zcmdUuJqp4=5QQhGh=>pn#KOYTv)Fh7vGo`pKs|_OP_Xs}T6qZDsP9V(Cj*HAD>r<b z`FU@%Y!b6XSDKpUsjb^)BQu)`l~gI}x|yjr>=)$uXPPKHiI?N1cq|6u;_7J7;$d(< zh^J`kM~esVQDnk<iR+$EA5Yw~U*oEN)&9LM#t->+Vj+5>Bj#c+=tX_Zx6<H=gBrc4 zkNGMZT~06RWB%{{U(b(s#2QP%SpYG$Chsqv=eL}1FcaT&v5$vuzv};qdY}9MM@!^u aun(`Pi_!92+a%28(K?%T?`5dPf%gr@Z@lgR literal 15406 zcmeI2d#oK*6~>2vh}E{|>~n7^<<SC7DHNon6bV?K(pr&FB5HXBHGl;KN~NWx?Y$R~ zM5-pnXe*M?m>3g~*ceF=F_idBeH29{v>=I(8Vfd**3$AQ+wZs6>^XDhoH>tsFZd5P z*_pXBv-kSebFa1bNs<GS1CvT6(RE6)=%6GyElH9oQ|$lg)g-xJ&t}d{-%m@DU-c)+ zbbX^Knqkj%>G(I~lY>|L>X`$+`t2d_wraeVjx9sJx^|@>cRJs+T4;rTU%$TjmcHM0 zr+07a>hmLgwu^80HorzXcZ0rpWA&@fUvi)GAO2F~_~_T1zwKYn^NrTn5Z3??Yua<? zSL}5Duw$KfwZ_qZnDbZu&@iQI2y1e%@#KWd-mUzv^V83Fe&W&1W6mwM#%<fex4V#) zXs^|Jb$;J;o;ARcA2&TMTw1elqVpGiHSqCfPR<Ro0?X=s&R_dW=dby>-Ln>$;0xKL zc%_%1BR}w((S!DoFfb1}Fjyz@b=XwrFa1t7Kk7F;;~l*7Epy_0)?&@b7qn9P%m+ij z1U4{&75vO&9q!Zbi`Om40Qn&kWP^;5RbF=7N50}ZCiCiA(}CNCPS7tpVvVByB42U7 zt}n0jF4(i~GyAzhYxK!hiuQvnz`=a89~bNgJI>oLHj1ql?H8NIwry_Rexo1Q8m#GF zHr^U#mOjHyoBSuPVg6hD05+-bqHP2nA!n0SYyXXF^m--EOwl+;gZMPuzw3PRE@ZIU zkDoQ*E4PY=2L`?Slg3NpWj`ame~Nc}v)WfqS>ealm^)m$lG#B+er%uCI(yJpzd7hD zTXcO<w04WmtEsMYdau4JEW7l6yWVfsSR=X4VGY*m1&6*rM08KqdTTVcvaSZa7X75` z|JQ}%<#euauvT(NHyCd7$$N)<<s8j_Og!x9k!}%>FjsfjT9tEHyB!AJ%O2-z&PLJQ z6YYKQ4d<7===_quYy7SAz~^IJNY~iInyg)h0r|jpkv1}i_L(<2f6QslPoCL+OgY8* z8S|aLVuLWelEnq~fq=niH0lETKu0F0I^WP{z&EsAUvvB^#-k8xr#OG!9nLS`QMZ>U z2WX`BklCc!D7IGJ5oI1}2l|pZe7B<2>e-=3I)B!!&for@I(^o$wS!HG*4RF50UtF# z33lGn#y|fL=ck_0J^vF9cYgNO+Ap3l49FqqLVJ~PKtn!NIm=?p*qZoWBe~!&Mf(l^ zFMrATxpx_cPWqpGvh#;e*Er7k(}V#zoVUXH%YTsCq|uN+SHF?Qms51Fc;Q|zqd&M` zx)cWF(8>O9dDi()e9!qKgaJ9Ai$f<nf84p6|Ids+V&;|@Q+2PHmAz{zgRb98#$Z4W zdD}p4V2|q%OLOsDF}41#(>?N7xu>2B+_Bqvp2d04DcWn1zP?2VVK32@*qzO9cMqMV z+nxWUWIX@N8f%>Y*!}h_V(5;3p!t+!|C0Pdxoday;T3vEpQ?Q3809k>+=B<1uuhY| zC~h2kx}GbJL^{xfw*GJMIe5Td_!d4`3)_plt=MTiLpSOd9LR!qtY7pOXrI5z){XSj zE3_NvL;E~^%N%ru-{X6%$(%r6w4fR3g9SZA`hka>zrYLYMjmn)Lhg{4Ki@(-i?xy+ z7?1<=kTJ4G=FkNP_vi%O<koI`pOZg%OJ;waYzH2&Kj^_Tat9C3TJYBfgV~?(KA=H< z5x(t2pYNapugIH$OnRdoXa)Zx1`rF{(pM}Yrci6d??!qh=2@;dewOaZiGv*yBZ-y7 zOkyW7lvqkk1q1SFH;VpJf>W`+x>@_MVn6v|O?!dqfV_phf<1%1gFS@31PsK~$?}PI zqv$WK=!;+Wx-~IJW-rwL<eB?JJ*T_{e_{W=`5D_wkwf&iw%3Bcw4jfiwf9u##QZ#! z!99{mQ~m*lIg-N!>7p&&TKzrpK}SW}@;T*U<R3NBviyS_#PY8RE%PtraISKxiOQ+E zqA&i*)yUcM^o_RLBiSqenm|6D<zFcV<)3{``6qeH<r^%gB)4p*d)`5tT$P+P(vP&o z`$nVDn14c_zn1y8d=8r=r*3EW**ozKZE|+#=V`agzYT$503&iTT{Z3xk*6-Nvb9)$ z^mVL1A_i&!(-C&!RQCmcDb3GXV8O<Tsq(4XJ*mFCs=sm=()yDc5**dd!m-`fZC8JW z8ddR(n1WyTUVlamTw{(*tcv-XFoe8CSNP1;-!84c$IpUp^zZz7@7y;^fIf*@w8^J5 zM$#wI^oBq0lLLq`(!rP^-#=0MJ6ra!SbOcgy8cAA^cUIG3)0^!_-N{<ukb8=_o(jG zcd9IA?ozFBt54p;nylSGY?S}`xK9qe-B-uo;VUy0GcFT`0rg+*6P|~4zezkiE8O_P zZsC4S*BEQKr<UNIe6O-e^B>mt>+bZ`rSgddtG%1S+Rzwf*kK=8?vtu)f7*a|^F)7@ zWci42Zxf!qy3#iSBl-URROSJ@{*OG+E5NVbuy3pTw8l=|iy!xpcv)s^kDa#Mj~A`R zePmcXNuT)Yke{Sn#LX3ryEQgyJTJ`jfO?624g6>>|HIE-t*1P%`dqs9-Fh|`njuaM z*QPY@CZD`}$d8*Uxm+t*trv|awRTT6rM_>4yX+ZjKM5^pLK_T8k36J4D*voa|AKd) zK`z3MjIa^xpp5=VpKEPsuvb(!LK_USr7>Omws__HyL|0<;asA%o{*2dAUkca73u=| z+pCnvP$vv`tlI1R!0U~52DG3FZ7>*?WK2grWHtlOZi)2xn6BiW4cPT8<iJ<|*!hds zsn)uuxqn~m=NJE<|0U-?@)gx<>z!ZpJ6kVbE2T8k9w~CHP48q&=BwkTn%)BMU~kz& zxOt27AG}F5>a2QA6M90*r@OsU<8n@N(bt{-+@DPk$R>`Iw&Fzf3BxpQYVhe6!ALfv zyk=6L`D%4zE1QYya=qaX&YyHq>$8`x@^R_{<>W`6V0rPUe`@xar@=jX01N(LK20oa zj;$8oiIE}ByqM}QlSOge>wj;u>l$mWj>*rNq%$~b!K)r_jX&~WJ`FZEm;E8H0`@%i zCh@4)ON<P0rW8ACjwb%uR|)@*%JG}*0w%>)FpixT_i5r1`?hp54;|@SVsOV8dHrVR zPnhR?t-s6qtwjF#z|2dXU-+PUAG?eP;u@n6m%y|;wWE1pPUF0K{BDMxFO%G#GhXXH zRQ5mh_Zc_Heoq`35B-xA17@qIu*7&k57-j^fKO9r=i`!aK2QFl+%MFsmiyHf2q!s6 z)~_kU9iK1#w|XbvH6G9dairHVZI1KQzSQ9GfF7_V{DE4RbJaz^DaNHx_mO)oR4f`p z{wn`oDt{%9QZCk6_I!hW;Q>8hOZY=CW6^J&zxom9=iO~Qpa*OTe`XwUy!96s+-rMe z4i|gTHjROpzf11x6nA#&8TnLOza6djgR1|R?=&9JLp~<Od-f6bJ@)njUFCe0`(o`u zE-roSD|}O&GwT1t1A4&jBIf+H96vqMP;<n(X_M@S+-&3+g^3;sv4h`DWJCYA>T|Y> z!)5plYh{yoppH|`7wV>#c|xx|p=<h~pOsv%`Gx(a<GNofmOO3!qT+hP!LK#IDu1m$ zD!W&`8tS@{*?!v3;<qI9&@UKr{_JHMOYO|`;<ffWlVHpGHu5n{{9xT~*h8&Nz1nfl ziZokYu@__v&J!<m{;2nBZ<t}@sFUm&e4(4zgJYf2eXvh)b+Vl$6#X~Fs(m)=6O7pQ zv2*N%^J(zr{g8Y3K_}Q1yha(6?Sm7JaDLiZmS0mN#P8!Z_1Dnjh|luZ7~dBE)%hF$ zn2YU-_0S~tvj@aE;OF;C*b8zm;^!Imgir8ooL9CFo_vY(9~#j2KWqFx&f|(6%IqfK z(cJU325ZH=mA#g{fxQ>nalP=puz|4@zj%YkJpQtM5Sbx6_6TGd>Ey2|c688WKj@6w z2pyu!C{OY=avpd<4{<$g0^7hwu$B0Iykb+>7B-g0ALsXaO)-bQnC3S5FFwOL96pqt z8KyZTJfH`BFVe*)@lAX*_^<G0{wscXhHvBJdHav^d%31^5B^&gKf%x5%^nhEn7?9A z#J-HKbj%#$CpeKczJNWU6Zqm?{QXTfPj)<v`&|5V>PLp$tzrM_8Gnice8?C(!PfCt z><Znm<}k3fnv?BcT94oGHRTV(#ZQiaePH9+(ElOk>)mMJH`~whhsBl))z7M-(G7lb zud>)M8aT_>sP40z(|Xv}LvGCdJK-niC4X-h-^%HaNDrK=>?G&6{JDRkayZojp(e=s zRP@!T9XR);mWXu)H3qc?brZD*JfH`Bxu;RG4|c)xUfIu9YA$LoYB1T)!a?6hO-4^S z*eEtk?M4kpEk{i^`zovPj+t#WA3UIkxVQCkE!zhp{j#goxV48kGl=INRtwkE)2B8z z{M5|U&eYJ<($v({)|Wk~n5bGC9?(NRruK4Qwhu=7<yZRbwPo}i=wr3(pTGlpV2_W3 z9tXV+YHe((7tF<PTkV78xI=!-p7l7rp4dO3j}`k@diO=mZ`;3uk1M5zQ)Ns1e!YmP z*Z-UL!Bqdvd|3a=FxLB5u@5I7uE;MgkZ-ToH>Lf<fM2#WTmJBN;TJB&m2iH%9*kg( zxZ}0nzwOgmOL_km{P@Ee@@aan#oVYD`SZK`lP<DeaI?J455ZpV-}YT=XIahtTlld4 zdB6JS{W|w(-9N`4Zj?{c^G5gh069|6W3u($>A};BZ-rmj$rIB4IhguO`{zLqU7TOU zxWt(Q`88({oJADRCp!JlnFnVdoPiMMiulcDTu<j0kq6mQ+w-Fsm#7igr-wV(Be6%; z%j1tWliEP{=SP8oBuV?a>G@s%|MC0|o9XfVF6AM~Y^h)8r}%U@J9rz<Px00MVV$2w z7U02rdQzWss<_4eP<>oOdtm5Q)9)Qw-^gO4?7aFsaSs|sYlP?5852qP{QxmH{(gY{ zTYCMz=xiky6wQ6Qr-mk8bo=`O^)N%uyUlX1+A8){Xc(>5F)|0M=UdyS-8joVY758# zC9`#DF0OuLsN?vJ2K98-6G-nl*Wuk(4SJXQ{RY4NpbuVMNDlT^{eC0QXgsqa_alFe uJ#1l69T)qNSzj#nXL7%v3H2&{*YNupdia(DzxBVL$@B5f{W}ss0{;USd2$N? diff --git a/public/favicons/logo_120x120.png b/public/favicons/logo_120x120.png index 8a7a9b3aa18d3d0ee13fbe565ae7db811d3f1b64..5bce0a8806e00d7048ac923d1b3b2e1f255f6235 100644 GIT binary patch literal 1450 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P0wgEr{)+@sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e4<xzrFv=ejtyt zz$3Dlfq`2Xgc%uT&5-~KvX^-Jy0Smxk`Uw(<&OyWV_;x*^mK6yskrra_F2E%4kE4g zvkyd<T;$!ulqsgG9n~4e^ikyPq=qZ3r@P!=tlrZ7&*NxM{DMXgkDT3awy{3aQ<9o} zW8=Z{obzYr+;lzpqRuk>xcx5XP>~HsJC+>IKEmDPr8D))^C_OM1G=xZ$bU&qU^eTF zVqdjM$xJn-&h1KJdAgqa*VuQ~kMeFkl{$N;{Mg+sr~C7A%4b=2*Zi7stW15?r)$bF zWtZ>HJk8&ue|^!a6RBGRL!T5aJyy1R=H?SiKRzuBdAe3;`qv%S#g&dVnH{T?reAdn zop`#qckOzhf|)-qiHBBdKizaM?c6Szi|wM@ED{xdRxMe~RdI+doKe|~<Mz5`ioO!; zD!Jho*GxMa&A-Rw(}7!08@HZj&c1$$@w?8O%Fc&w3G+kQY~I>^==feEcvJI%s(i$B zy?}2ki;wVWCvE+DBUvYA;fpl;n}U9=qJ=4ecdj?RyHyl<CARX8=BITEn-=W;rdK$r zS9eoqPRP^UI;}ca&V0*HSQ4{t??Kgko!vl}&tJXk>$UP@AEw@RYsmlM6H-3;*MaLM z-|rP4y8o?Fb~5`lJ^nSZauK_2Hk4H+yoEb(IxdOu+6P<N{%@JE^;;u*PV~%^bHn>{ z*}iUHY0qJjw!YDF-nky#yNb6<cLq0Sev5r~=fy*j%IlL(&y~^Jdi};+S@~_3Z_Jew zm|lMKkRZcLv6$yA6a4SUyZihIHk!E8sysOH>4f%P;YZ;vG3j=kKhL@!<F5bOReQ+C zG_3EV$M%wozm9&MWYxDLchRJGHZ~?ElW)sDXnO(<QK*9zpZna>TV&{K!C!eg@^-0- z+Tq<3-pdqTyD~SY+soqdgnUJT;)cxKa<7eK1pJ+~71KPH+<3Zjx8X^hrO9m)OHXjN zJ&fgV|8IZg_6@b%v|m;-#v$VIm(%<tXYT!Y;rXVW{!>`5iN>#7p~b{z`*CXLD%S&1 zk4`_4p8o&CgQ}XduA!0}UVlvOTCLAiX1=dz@hTaKJ3Z^0R;*%slT<U)X!5Ch6+1-Y zxfiXn+Ti^$byY|dpH1)j%YD1&2pH=0t!igrJ|a_m(d@EQY=KYA)9(KaN@pf9KAgD? zl<8DUTq8<S5=&C8l8aJ-6oZk0k&&*Ufv%BBh@rWap^=rLxwe6Um4QL_nt9t%H00)| zWTsW()*$s!jT@*z0c1mQep*R+Vo@qXMoCFQv6a4lW^Q77DiCKTXY1t`rSCZ}I~S-{ z0;D!1qck_k%E~1_ximL5uf)nK0I0N>!EpKi-TG*1JVB;dS$U*pre~Be7+M-R#1@7E z)rcdR1632AnNpGgQgV5XA_q{3B$5)}%-qzH%7Rn|u&eY7^3v@$g#n8i6mxt-fT|b_ z&49qz(A3!6wtVMbpb~y0bAmIgQW*@KoTe<YdjpgTLy`&&@?=QM%t-}$T|YOkBqu*z zKP|B=GdVx6SRWDO`W6PsMiwRpW=3X~siu}DW=Teg=B6o@#z}@oMyW=oDSAL1dO-JW T@xGt~w1L6X)z4*}Q$iB}u(ezI literal 4174 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 diff --git a/public/favicons/safari-pinned-tab.svg b/public/favicons/safari-pinned-tab.svg index 1843631e21..aa636281bb 100644 --- a/public/favicons/safari-pinned-tab.svg +++ b/public/favicons/safari-pinned-tab.svg @@ -1,33 +1,10 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> -<svg version="1.0" xmlns="http://www.w3.org/2000/svg" - width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000" - preserveAspectRatio="xMidYMid meet"> -<metadata> -Created by potrace 1.14, written by Peter Selinger 2001-2017 -</metadata> -<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)" -fill="#000000" stroke="none"> -<path d="M1704 6703 c-71 -13 -138 -48 -195 -100 -38 -35 -91 -125 -104 -178 --4 -16 -9 -181 -10 -365 -2 -297 -4 -340 -20 -380 -49 -120 -121 -189 -249 --237 -34 -13 -99 -17 -373 -18 -368 -3 -403 -6 -477 -41 -99 -46 -165 -119 --202 -219 -16 -46 -18 -99 -19 -690 -2 -662 0 -698 39 -774 26 -50 106 -126 -163 -154 88 -45 138 -49 588 -45 l420 3 67 32 c113 53 180 129 218 248 10 31 -13 164 12 585 -1 598 1 621 58 710 55 85 124 136 225 166 55 16 171 17 1565 -18 1430 2 1507 3 1555 20 110 40 196 122 237 226 22 54 22 66 23 475 0 416 0 -421 -23 481 -42 111 -144 202 -262 235 -64 17 -3141 20 -3236 2z"/> -<path d="M3067 4234 c-1 -1 -30 -4 -64 -7 -122 -9 -258 -100 -314 -208 -42 --83 -46 -123 -45 -539 l2 -395 33 -72 c56 -120 153 -198 283 -227 89 -20 808 --20 888 0 153 39 267 152 301 301 15 65 14 771 0 836 -33 144 -170 275 -316 -303 -29 5 -762 13 -768 8z"/> -<path d="M5515 3486 c-123 -41 -195 -101 -246 -203 l-34 -68 -5 -595 -5 -595 --27 -58 c-52 -111 -131 -179 -253 -218 -32 -11 -347 -14 -1540 -15 -825 -1 --1515 -4 -1534 -8 -142 -28 -270 -153 -300 -294 -5 -23 -8 -226 -7 -450 l1 --407 33 -67 c48 -98 127 -168 230 -206 43 -15 175 -17 1634 -17 1346 -1 1595 -1 1644 13 68 17 147 65 194 118 35 40 78 124 87 171 3 16 6 179 7 363 1 306 3 -340 21 389 23 63 89 141 150 176 92 55 121 58 505 60 383 3 389 3 486 60 60 -35 129 117 156 183 22 57 22 58 24 702 2 708 1 711 -58 803 -38 60 -97 108 --174 144 l-59 28 -445 2 c-350 2 -454 -1 -485 -11z"/> +<svg width="934" height="934" viewBox="0 0 934 934" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_3_2)"> +<path d="M773.786 0H159.544C97.2152 62.3249 62.3284 97.2096 0 159.534V773.742C62.3284 836.066 97.2152 870.952 159.544 933.276H405.613V679.351H326.638C298.24 650.953 282.339 635.053 253.887 606.604V326.672C282.286 298.275 298.186 282.377 326.638 253.926H606.638C635.037 282.323 650.937 298.224 679.389 326.672V606.655C650.991 635.053 635.09 650.953 606.638 679.404H533.249V933.33H773.786C836.115 871.006 871.002 836.12 933.33 773.796V159.534C871.002 97.2096 836.115 62.3249 773.786 0Z" fill="black"/> </g> +<defs> +<clipPath id="clip0_3_2"> +<rect width="933.33" height="933.33" fill="white"/> +</clipPath> +</defs> </svg> diff --git a/public/images/address-book/no-entries.svg b/public/images/address-book/no-entries.svg index cdf64b4f13..ddbf4edc33 100644 --- a/public/images/address-book/no-entries.svg +++ b/public/images/address-book/no-entries.svg @@ -12,7 +12,7 @@ <circle cx="44.5229" cy="31.5222" r="12" fill="white"/> </mask> <g mask="url(#mask0_876_38488)"> - <circle class="illustration-main-fill" cx="44.5229" cy="31.5222" r="12" fill="#12FF80"/> + <circle class="illustration-main-fill" cx="44.5229" cy="31.5222" r="12" fill="#4059FE"/> <rect x="50.4651" y="34.5569" width="3.06224" height="2.86144" fill="#636669"/> <rect x="47.6907" y="34.5569" width="5.83637" height="2.86144" fill="#636669"/> <rect x="47.6907" y="34.5569" width="5.83637" height="2.86144" fill="#636669"/> diff --git a/public/images/logo-no-text.svg b/public/images/logo-no-text.svg index c4dcffb074..504a7f45da 100644 --- a/public/images/logo-no-text.svg +++ b/public/images/logo-no-text.svg @@ -1 +1,3 @@ -<svg width="384" height="384" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M21.757 11.998h-2.485c-.742 0-1.343.579-1.343 1.293v3.47c0 .714-.602 1.293-1.344 1.293H6.699c-.743 0-1.344.578-1.344 1.292v2.391c0 .714.601 1.293 1.344 1.293h10.458c.742 0 1.335-.579 1.335-1.293V19.82c0-.714.602-1.22 1.344-1.22h1.92c.743 0 1.344-.58 1.344-1.293v-4.03c0-.714-.601-1.278-1.343-1.278ZM5.355 7.249c0-.714.6-1.293 1.343-1.293h9.88c.743 0 1.344-.579 1.344-1.293v-2.39c0-.714-.601-1.293-1.344-1.293H6.125c-.742 0-1.343.579-1.343 1.293v1.842c0 .714-.602 1.292-1.344 1.292H1.526C.784 5.407.182 5.986.182 6.7v4.034c0 .714.604 1.264 1.346 1.264h2.485c.743 0 1.344-.579 1.344-1.293L5.355 7.25ZM10.472 9.485h2.387c.778 0 1.409.608 1.409 1.356v2.296c0 .748-.632 1.356-1.41 1.356h-2.386c-.778 0-1.409-.608-1.409-1.356v-2.296c0-.749.632-1.356 1.409-1.356Z" fill="currentColor"/></svg> +<svg width="367" height="366" viewBox="0 0 367 366" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M304.008 0H62.6821C38.1943 24.4118 24.4878 38.0757 0 62.4875V303.064C24.4878 327.476 38.1943 341.14 62.6821 365.552H159.359V266.093H128.331C117.174 254.97 110.926 248.742 99.748 237.598V127.954C110.905 116.831 117.153 110.603 128.331 99.4592H238.338C249.495 110.582 255.743 116.81 266.921 127.954V237.619C255.764 248.742 249.516 254.97 238.338 266.113H209.504V365.573H304.008C328.496 341.161 342.202 327.497 366.69 303.085V62.4875C342.202 38.0757 328.496 24.4118 304.008 0Z" fill="black"/> +</svg> diff --git a/public/images/logo.svg b/public/images/logo.svg index 86df9fc8f9..665d7aa55f 100644 --- a/public/images/logo.svg +++ b/public/images/logo.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD <svg width="641" height="95" viewBox="0 0 641 95" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M223.003 14.301V80.699C223.003 82.2887 224.301 83.5781 225.901 83.5781H230.364C232.649 83.5781 234.503 85.4175 234.503 87.6899V92.1208C234.503 93.7105 235.801 95 237.401 95H246.102C247.702 95 249 93.7105 249 92.1208V85.9485C249 84.3588 247.702 83.0693 246.102 83.0693H239.151C236.867 83.0693 235.012 81.2299 235.012 78.9575V16.0393C235.012 13.7701 236.864 11.9275 239.151 11.9275H246.099C247.699 11.9275 248.997 10.6381 248.997 9.04837V2.87917C248.997 1.28946 247.699 0 246.099 0H237.398C235.798 0 234.5 1.28946 234.5 2.87917V7.31012C234.5 9.57933 232.649 11.4219 230.361 11.4219H225.898C224.298 11.4219 223 12.7113 223 14.301H223.003Z" fill="currentColor"/> <path d="M640.997 80.6936V14.3001C640.997 12.7105 639.699 11.4211 638.099 11.4211H633.635C631.351 11.4211 629.497 9.58185 629.497 7.30964V2.87898C629.497 1.28938 628.199 0 626.599 0H617.898C616.298 0 615 1.28938 615 2.87898V9.05093C615 10.6405 616.298 11.9299 617.898 11.9299H624.849C627.133 11.9299 628.988 13.7692 628.988 16.0414V78.9586C628.988 81.2277 627.136 83.0701 624.849 83.0701H617.901C616.301 83.0701 615.003 84.3595 615.003 85.9491V92.121C615.003 93.7106 616.301 95 617.901 95H626.602C628.202 95 629.5 93.7106 629.5 92.121V87.6904C629.5 85.4213 631.351 83.5789 633.639 83.5789H638.102C639.702 83.5789 641 82.2895 641 80.6999L640.997 80.6936Z" fill="currentColor"/> @@ -11,4 +12,19 @@ <path d="M458 14H470.151V68.8075H500V80H458V14Z" fill="currentColor"/> <path d="M507 14H552.328V25.0947H519.195V40.6859H548.197V51.6859H519.195V68.8075H553V80H507V14Z" fill="currentColor"/> <path d="M609 14V25.1899H589.186V80H576.814V25.1899H557V14H609Z" fill="currentColor"/> +======= +<svg width="90" height="22" viewBox="0 0 90 22" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M27.2461 10.6865C27.2461 6.11645 30.7387 2.63428 35.4685 2.63428C40.1983 2.63428 43.6909 6.16088 43.6909 10.6865C43.6909 15.2121 40.1767 18.7387 35.4685 18.7387C30.7602 18.7387 27.2461 15.2782 27.2461 10.6865V10.6865ZM40.0439 10.6865C40.0439 8.04726 38.1427 6.00598 35.4685 6.00598C32.7943 6.00598 30.8703 8.04726 30.8703 10.6865C30.8703 13.3258 32.7716 15.367 35.4685 15.367C38.1654 15.367 40.0439 13.3702 40.0439 10.6865Z" fill="currentColor"/> +<path d="M46.9629 2.92236H53.0196C56.1808 2.92236 58.502 5.00807 58.502 8.04596C58.502 10.1317 57.3306 11.7731 55.7608 12.5716L59.0548 18.4505H55.1649L52.535 13.2596H50.4567V18.4505H46.9641V2.92236H46.9629ZM52.7097 10.265C53.9696 10.265 54.9197 9.48807 54.9197 8.04717C54.9197 6.76116 54.0354 5.91824 52.6654 5.91824H50.4555V10.2662H52.7097V10.265Z" fill="currentColor"/> +<path d="M65.2207 12.4398L59.8496 2.92383H63.6736L66.8348 8.89036H67.0334L70.1719 2.92383H74.0402L68.7349 12.4182V18.4519H65.2207V12.441V12.4398Z" fill="currentColor"/> +<path d="M81.1797 12.4398L75.8086 2.92383H79.6326L82.7938 8.89036H82.9924L86.1308 2.92383H89.9992L84.6938 12.4182V18.4519H81.1797V12.441V12.4398Z" fill="currentColor"/> +<g clip-path="url(#clip0_1701_1294)"> +<path d="M17.5253 0H3.61347C2.20181 1.40728 1.41166 2.19497 0 3.60225V17.4709C1.41166 18.8782 2.20181 19.6659 3.61347 21.0732H9.18664V15.3396H7.39797C6.75478 14.6984 6.39463 14.3394 5.75023 13.697V7.37621C6.39343 6.73501 6.75357 6.37598 7.39797 5.73358H13.7396C14.3828 6.37478 14.7429 6.73381 15.3874 7.37621V13.6982C14.7442 14.3394 14.384 14.6984 13.7396 15.3408H12.0774V21.0744H17.5253C18.937 19.6671 19.7271 18.8794 21.1388 17.4721V3.60225C19.7271 2.19497 18.937 1.40728 17.5253 0Z" fill="currentColor"/> +</g> +<defs> +<clipPath id="clip0_1701_1294"> +<rect width="21.1388" height="21.0732" fill="white"/> +</clipPath> +</defs> +>>>>>>> b6f80a27 (oryy rebranding) </svg> diff --git a/public/images/safe-logo-green.png b/public/images/safe-logo-green.png index 85a43140c7da7ca3d957828a38e71337b0109c5e..e820c419a421fa0477a482d05a943fbf1d3989c3 100644 GIT binary patch literal 2682 zcmeHJX;)KO7JV;9D-6b@AgGWEF*1n^B?S^GBN2!sj3E*RDL_R;21z4`O2j;I2#7d@ zsel5(3Nnad3Is$1RM3Sifev#lECm^Y3D^mQNn$^`|3H80554-s9nRVNoO{>3`>cD@ zm|m_MHT5+C0NBW&yRhJ~b*-T`z&-2FnD5{LjAywz0S~+IQUK7jWw`A3JsTn~?7W8a z*S*TKCS&ZjE+WqX>#?}=X}6x}XoN6RYEn_8RB}3|UF&(8vgt}ODdmO|g-*G)PGl!b zFkDG${OtRn#fqC8F)EB=%Q@AvRe#M)$0tS(4IW|G8yDu*MhpdgoTlgm2<GVGjf~l( zX4OKcTz~q7z)cyNo!}*Y4$fY3-{kt?lJK=)M%(x~6Cuk@2oeY8^BQIhI<nJ|-bTTh za}~2(eJ4oK#S0eG7%R&mKMoogU+fkT=#BjgMpHq+(QdO9j;_5O9Y1|=%~+1<v;R96 zKkW`1<twqi_Jh&*Y3DU#Ir@A1-XQ!bEvhWfr6ogQ!cBAb0#hl!%kDEqvMA^$NTSN4 zvim@C%>elm1{(Tl`a=Gvx5J~%TA;0np&B%bm3+@9t%pf>Z<-`$evC77gVPFEqFDBZ z`h3#AqIs1K!;i>)Y~ZLjZq>GfcDb#@3W4F84BN9u5+=!gelWmJww1OgTys9T7SR}5 z*|anecftqW2wUZiOOL|w^{~*;LE0VPXQ@}lm<QK@1y6Q*kQv%;4Pf(x0Ul%I+Dv#? zx~r^ll0kck98TpsytzW}aTq?|6cCxR;pm~0V?BQG;*~S}tn>l{{%%dGj4^DuL+@EQ z{?JaCL^BkIe7Z-r)q#dG8?9NE7lQHTFrOuNOwXR9pmE@gyTi*e+uki5C|!*rJ+S%9 zxNb*X(Rdfi0tYrfUxx_PAW{bkBSyaIPyzjIb|8}eY}JAQPF?InVu<sqnzP8_?^rri zsPA3(C>A2nJpqu#aZGmwl8FBi*{}ZFec?^Pn-;s4M0W>b#n%G$6`<3SsWzXv0*mIo z|9c$Ys4z3()cEXv^UxVpr!zD@!84Yo2<rto=Ci33!3}znne=R;#vfYD{MAxnry#`t z{h~qc84odqVQRxOb2<*b`T1Ks!{3<V{-vwM2eQ%da&O!&^&Mc`VndHblb$ao?sPDX z$oYHF;kv|lSzfL}{Hi1daqK2ViKH9wZ8WH|VKr}Q#~4!&zNxpowrq2BIIN!Drlro? z6{Ac!e4={M>IBChDg)ume>xG$^_!0?_k+nJ1&%a)r4Q`&P?n`SKh|Ip!mYYhzql>N zc*nfsJoFo7F6}N+$e4CFS%W6jb6HDnOVb6}oaQ)t+P!72f3w@?he8GYG_G2LT=W-L z3)B+@oEIxKb8oB#YQbFC+4+l_q*m$&)3brdUt90(0?!v*2KLn*$;J}3$L~3zK7<+g zZ3SO2NzkU!Y8%AjkPUb~=B4>|>J~SX|GWMdPogC^fhIo42z^n>D#r}%lwKD;6`=c5 zgaNA$a@y(3=F(E3J6s~Q4|iFN|0-M&c+n-4s|ME^_!6X<$F-hnqu^U}2gEF7d7GVz z?qDu05snGmx_y<EK2RRA+c-FTPFv&9LUg3MS1?0&U<WBTn?KfM4*0!aa>qA%;G-<5 zX_N)Oqu#em8vWlQFnmdUbiXLVGDotWh_<xaKQA&Z0NP60jmr0_j_E?=+8Si!QE#|Z zoR!9O9M?vRikBQp@fDdqg<1V*`c^LHa2|CjBW@xzr!<3tdgMk_T6c<H5s(3QE)DMc zd9H3OOedKVFf@MdH~0k+4n%Mh)kg-Gx7&OrRcU038?22eIlhF7*cJ0lf35baK3$#6 zrmRGkroG#n9Y_e@XDU6G(XFyQwz&EuGQil6P^xZF(C6>sBVK=NCi%Qm7X0R~l0`6h z^yQKc4TBpy#Q1XQ?Fl_?OtDt&$*xsT@tu2;nm^d;@SMEiKNTKOfC7c-><!rn9>s2_ zT6lBqkg2rmfM~D0A4AmJg=kaM`a44bZU05mPDB=mRiVh_$>(;50^kPd{YQa24N^QX z9KX*&Cz`cYbRsc_9SXmcoX_^de)#fcGb76}>p)7ZK`Jn^IDa}ZQmp_{XO0_I`xrG? zN$(1ilSgP*2KPh%;7ms_HW`fw=3?cOo&SE=P4<5dc7X<_lJ<z2l#aI(JjG?F+A|Cv zx!|YkHlcbl?kHumqOvAsw^ePw>2)k$!dZu?jhNgUA1n*xmYg#bx#FYhe?axzC{R{; ziptV}@hzi0qwi9H^q=C3MB%bX^HvYU1&6-#>6qd@I~Q)phjo(>Sz&3;Z|gO|{F+mQ zCnsfrzQ8C``M?R9sQSfqW(!w>qT-|Kf>Ax!Ge4If5S2ZEl~q{35llS($>DCCOiBXc zPOQkC0e>zh^i0W6FB=%``TCX$sn-XPRW5L_B<Xi-aVU7Gy~qsKX@R`~xU5rrT9&pZ z-wQ9X#fG3md(jCPy6=K*wWdxEjbUKK0|z!CF1HbKfwpbPzt!;qWO16eDCk|_Ud_v| z2=zeT7zWX%g&}a4F~n%R6BGbih{~)%n^)VAsXDEC++|&25bWLpR*A|upiTQW<dhXe zQE6|Z=8!J~BgiRZm9{bUDm<63pR!bG@1V-#P@qJkCt9}k5R?yRx3HqliXyZTefoUN z;a%W{G)fruu*q{z#^lZ=0UCM2s#PF#6~tDpR&`C3y~ZyYo;z~9>7=_V7XC~E44RkA JL#M+j{{-`Iol^h+ literal 3684 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 Mpku84N)sFNAE>6Wr2qf` diff --git a/src/components/common/MetaTags/index.tsx b/src/components/common/MetaTags/index.tsx index a53c3f37c0..2e7cbc835b 100644 --- a/src/components/common/MetaTags/index.tsx +++ b/src/components/common/MetaTags/index.tsx @@ -3,22 +3,22 @@ import { ContentSecurityPolicy, StrictTransportSecurity } from '@/config/securit import { lightPalette, darkPalette } from '@safe-global/safe-react-components' const descriptionText = - 'Safe (prev. Gnosis Safe) is the most trusted platform to manage digital assets on Ethereum and multiple EVMs. Over $40B secured.' -const titleText = 'Safe{Wallet}' + 'Oryy (based on Gnosis Safe) is the most trusteddigital asset management platform. Customize how you manage your crypto assets.' +const titleText = 'Oryy' const MetaTags = ({ prefetchUrl }: { prefetchUrl: string }) => ( <> <meta name="description" content={descriptionText} /> {/* Social sharing */} - <meta name="og:image" content="https://app.safe.global/images/social-share.png" /> + <meta name="og:image" content="https://app.oryy.io/images/social-share.png" /> <meta name="og:description" content={descriptionText} /> <meta name="og:title" content={titleText} /> <meta name="twitter:card" content="summary_large_image" /> - <meta name="twitter:site" content="@safe" /> + <meta name="twitter:site" content="@flrfinance" /> <meta name="twitter:title" content={titleText} /> <meta name="twitter:description" content={descriptionText} /> - <meta name="twitter:image" content="https://app.safe.global/images/social-share.png" /> + <meta name="twitter:image" content="https://app.oryy.io/images/social-share.png" /> {/* CSP */} <meta httpEquiv="Content-Security-Policy" content={ContentSecurityPolicy} /> diff --git a/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css b/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css index 2ca4ef0c06..757209a779 100644 --- a/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css +++ b/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css @@ -23,7 +23,7 @@ top: 0; width: 20px; height: 20px; - background-color: #12ff80; + background-color: #4059FE; transition: background-color 0.1s; } diff --git a/src/config/constants.ts b/src/config/constants.ts index a148aa3caa..0ec6f8610c 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -3,6 +3,8 @@ import chains from './chains' export const IS_PRODUCTION = !!process.env.NEXT_PUBLIC_IS_PRODUCTION export const IS_DEV = process.env.NODE_ENV === 'development' +export const DEFAULT_CHAINID = process.env.NEXT_PUBLIC_CHAIN_ID + export const GATEWAY_URL_PRODUCTION = process.env.NEXT_PUBLIC_GATEWAY_URL_PRODUCTION || 'https://safe-client.safe.global' export const GATEWAY_URL_STAGING = process.env.NEXT_PUBLIC_GATEWAY_URL_STAGING || 'https://safe-client.staging.5afe.dev' diff --git a/src/hooks/useChainId.ts b/src/hooks/useChainId.ts index cb95e7ebd3..e47b1484aa 100644 --- a/src/hooks/useChainId.ts +++ b/src/hooks/useChainId.ts @@ -1,6 +1,6 @@ import { useRouter } from 'next/router' import { parse, type ParsedUrlQuery } from 'querystring' -import { IS_PRODUCTION } from '@/config/constants' +import { IS_PRODUCTION, DEFAULT_CHAINID } from '@/config/constants' import chains from '@/config/chains' import { useAppSelector } from '@/store' import { selectSession } from '@/store/sessionSlice' @@ -9,7 +9,7 @@ import { prefixedAddressRe } from '@/utils/url' import useWallet from './wallets/useWallet' import useChains from './useChains' -const defaultChainId = IS_PRODUCTION ? chains.eth : chains.gor +const defaultChainId = DEFAULT_CHAINID ? DEFAULT_CHAINID : IS_PRODUCTION ? chains.eth : chains.gor // Use the location object directly because Next.js's router.query is available only on mount const getLocationQuery = (): ParsedUrlQuery => { diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index d6612c4179..4a41646c1d 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -96,7 +96,7 @@ const WebCoreApp = ({ return ( <StoreHydrator> <Head> - <title key="default-title">{'Safe{Wallet}'} + Oryy diff --git a/src/pages/_offline.tsx b/src/pages/_offline.tsx index a36fda8e98..8404800cab 100644 --- a/src/pages/_offline.tsx +++ b/src/pages/_offline.tsx @@ -7,7 +7,7 @@ const Offline: NextPage = () => { return ( <> - {'Safe{Wallet} – Offline'} + Oryy – Offline
    diff --git a/src/pages/address-book.tsx b/src/pages/address-book.tsx index d1eefe0dfa..48717cb8da 100644 --- a/src/pages/address-book.tsx +++ b/src/pages/address-book.tsx @@ -6,7 +6,7 @@ const AddressBook: NextPage = () => { return ( <> - {'Safe{Wallet} – Address book'} + Oryy – Address book diff --git a/src/pages/balances/index.tsx b/src/pages/balances/index.tsx index e42868d988..cd09883893 100644 --- a/src/pages/balances/index.tsx +++ b/src/pages/balances/index.tsx @@ -20,7 +20,7 @@ const Balances: NextPage = () => { return ( <> - {'Safe{Wallet} – Assets'} + Oryy – Assets diff --git a/src/pages/balances/nfts.tsx b/src/pages/balances/nfts.tsx index 35a4d27fa7..2cb913e35b 100644 --- a/src/pages/balances/nfts.tsx +++ b/src/pages/balances/nfts.tsx @@ -43,7 +43,7 @@ const NFTs: NextPage = () => { return ( <> - {'Safe{Wallet} – NFTs'} + Oryy – NFTs diff --git a/src/pages/home.tsx b/src/pages/home.tsx index 62590cca4c..16d8476a41 100644 --- a/src/pages/home.tsx +++ b/src/pages/home.tsx @@ -7,7 +7,7 @@ const Home: NextPage = () => { return ( <> - {'Safe{Wallet} – Dashboard'} + Oryy – Dashboard
    diff --git a/src/pages/import.tsx b/src/pages/import.tsx new file mode 100644 index 0000000000..42f8c3102e --- /dev/null +++ b/src/pages/import.tsx @@ -0,0 +1,19 @@ +import DataManagement from '@/components/settings/DataManagement' +import type { NextPage } from 'next' +import Head from 'next/head' + +const Import: NextPage = () => { + return ( + <> + + Oryy – Data import + + +
    + +
    + + ) +} + +export default Import diff --git a/src/pages/new-safe/create.tsx b/src/pages/new-safe/create.tsx index d8f53e2c55..96e872fb91 100644 --- a/src/pages/new-safe/create.tsx +++ b/src/pages/new-safe/create.tsx @@ -7,7 +7,7 @@ const Open: NextPage = () => { return (
    - {'Safe{Wallet} – Create Safe Account'} + Oryy – Create Safe diff --git a/src/pages/new-safe/load.tsx b/src/pages/new-safe/load.tsx index 427436f417..f03224d7c1 100644 --- a/src/pages/new-safe/load.tsx +++ b/src/pages/new-safe/load.tsx @@ -11,7 +11,7 @@ const Load: NextPage = () => { return (
    - {'Safe{Wallet} – Add Safe Account'} + Oryy – Add Safe {safeAddress ? ( diff --git a/src/pages/settings/appearance.tsx b/src/pages/settings/appearance.tsx index 6b5bfab4d1..27a115c7c1 100644 --- a/src/pages/settings/appearance.tsx +++ b/src/pages/settings/appearance.tsx @@ -43,7 +43,7 @@ const Appearance: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Appearance'} + Oryy – Settings – Appearance diff --git a/src/pages/settings/data.tsx b/src/pages/settings/data.tsx index 65d1e44b9f..18554bb828 100644 --- a/src/pages/settings/data.tsx +++ b/src/pages/settings/data.tsx @@ -7,7 +7,7 @@ const Data: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Data'} + Oryy – Settings – Data diff --git a/src/pages/settings/modules.tsx b/src/pages/settings/modules.tsx index a25bbada52..29c7bb948e 100644 --- a/src/pages/settings/modules.tsx +++ b/src/pages/settings/modules.tsx @@ -10,7 +10,7 @@ const Modules: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Modules'} + Oryy – Settings – Modules diff --git a/src/pages/settings/safe-apps/index.tsx b/src/pages/settings/safe-apps/index.tsx index 3cb576210a..d5190cb4e2 100644 --- a/src/pages/settings/safe-apps/index.tsx +++ b/src/pages/settings/safe-apps/index.tsx @@ -9,7 +9,7 @@ const SafeAppsPermissionsPage: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Safe Apps'} + Oryy – Settings – Safe Apps permissions diff --git a/src/pages/settings/setup.tsx b/src/pages/settings/setup.tsx index a551c4a177..ecd73be056 100644 --- a/src/pages/settings/setup.tsx +++ b/src/pages/settings/setup.tsx @@ -18,7 +18,7 @@ const Setup: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Setup'} + Oryy – Settings – Setup diff --git a/src/pages/settings/spending-limits.tsx b/src/pages/settings/spending-limits.tsx index 2919ad3675..bcaebb6f7e 100644 --- a/src/pages/settings/spending-limits.tsx +++ b/src/pages/settings/spending-limits.tsx @@ -7,7 +7,7 @@ const SpendingLimitsPage: NextPage = () => { return ( <> - {'Safe{Wallet} – Settings – Spending limit'} + Oryy – Settings – Spending limit diff --git a/src/pages/transactions/history.tsx b/src/pages/transactions/history.tsx index bfa605e209..5f877d990d 100644 --- a/src/pages/transactions/history.tsx +++ b/src/pages/transactions/history.tsx @@ -24,7 +24,7 @@ const History: NextPage = () => { return ( <> - {'Safe{Wallet} – Transaction history'} + Oryy – Transaction history diff --git a/src/pages/transactions/queue.tsx b/src/pages/transactions/queue.tsx index 8c7c8d0b1f..8b8bb546ef 100644 --- a/src/pages/transactions/queue.tsx +++ b/src/pages/transactions/queue.tsx @@ -14,7 +14,7 @@ const Queue: NextPage = () => { return ( <> - {'Safe{Wallet} – Transaction queue'} + Oryy – Transaction queue diff --git a/src/pages/transactions/tx.tsx b/src/pages/transactions/tx.tsx index cc89616eea..d23a9a7699 100644 --- a/src/pages/transactions/tx.tsx +++ b/src/pages/transactions/tx.tsx @@ -8,7 +8,7 @@ const SingleTransaction: NextPage = () => { return ( <> - {'Safe{Wallet} – Transaction details'} + Oryy – Transaction details
    diff --git a/src/pages/welcome.tsx b/src/pages/welcome.tsx index 6a6506b4d6..d729e810a4 100644 --- a/src/pages/welcome.tsx +++ b/src/pages/welcome.tsx @@ -6,7 +6,7 @@ const Welcome: NextPage = () => { return ( <> - {'Safe{Wallet} – Welcome'} + Oryy – Welcome diff --git a/src/styles/colors-dark.ts b/src/styles/colors-dark.ts new file mode 100644 index 0000000000..44f73c42a2 --- /dev/null +++ b/src/styles/colors-dark.ts @@ -0,0 +1,64 @@ +const darkPalette = { + text: { + primary: '#FFFFFF', + secondary: '#636669', + disabled: '#636669', + }, + primary: { + dark: '#5800FF', + main: '#4059FE', + light: '#A1A3A7', + }, + secondary: { + dark: '#636669', + main: '#FFFFFF', + light: '#4059FE', + background: '#303033', + }, + border: { + main: '#636669', + light: '#303033', + background: '#121312', + }, + error: { + dark: '#AC2C3B', + main: '#FF5F72', + light: '#FFB4BD', + background: '#2F2527', + }, + success: { + dark: '#028D4C', + main: '#00B460', + light: '#81C784', + background: '#1F2920', + }, + info: { + dark: '#52BFDC', + main: '#5FDDFF', + light: '#B7F0FF', + background: '#19252C', + }, + warning: { + dark: '#CD674E', + main: '#FF8061', + light: '#FFB7A6', + background: '#2F2318', + }, + background: { + default: '#121312', + main: '#121312', + paper: '#1C1C1C', + light: '#1B2A22', + }, + backdrop: { + main: '#636669', + }, + logo: { + main: '#FFFFFF', + background: '#303033', + }, + static: { + main: '#121312', + }, +} +export default darkPalette diff --git a/src/styles/colors.ts b/src/styles/colors.ts new file mode 100644 index 0000000000..e8a6bc47e3 --- /dev/null +++ b/src/styles/colors.ts @@ -0,0 +1,64 @@ +const palette = { + text: { + primary: '#121312', + secondary: '#A1A3A7', + disabled: '#DDDEE0', + }, + primary: { + dark: '#3c3c3c', + main: '#121312', + light: '#636669', + }, + secondary: { + dark: '#0FDA6D', + main: '#4059FE', + light: '#B0FFC9', + background: '#EFFFF4', + }, + border: { + main: '#A1A3A7', + light: '#DCDEE0', + background: '#F4F4F4', + }, + error: { + dark: '#AC2C3B', + main: '#FF5F72', + light: '#FFB4BD', + background: '#FFE6EA', + }, + success: { + dark: '#028D4C', + main: '#00B460', + light: '#72F5B8', + background: '#F2FFF9', + }, + info: { + dark: '#52BFDC', + main: '#5FDDFF', + light: '#B7F0FF', + background: '#EFFCFF', + }, + warning: { + dark: '#CD674E', + main: '#FF8061', + light: '#FFB7A6', + background: '#FFF0ED', + }, + background: { + default: '#F4F4F4', + main: '#F4F4F4', + paper: '#FFFFFF', + light: '#EFFFF4', + }, + backdrop: { + main: '#636669', + }, + logo: { + main: '#121312', + background: '#EEEFF0', + }, + static: { + main: '#121312', + }, +} +export default palette diff --git a/yarn.lock b/yarn.lock index 970cab1ae0..38edf3b890 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,48 +3,48 @@ "@adobe/css-tools@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd" - integrity sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g== + "integrity" "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==" + "resolved" "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz" + "version" "4.0.1" "@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" + "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + "version" "2.2.0" dependencies: "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" "@apideck/better-ajv-errors@^0.3.1": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" - integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== + "integrity" "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==" + "resolved" "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz" + "version" "0.3.6" dependencies: - json-schema "^0.4.0" - jsonpointer "^5.0.0" - leven "^3.1.0" + "json-schema" "^0.4.0" + "jsonpointer" "^5.0.0" + "leven" "^3.1.0" "@apocentre/alias-sampling@^0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@apocentre/alias-sampling/-/alias-sampling-0.5.3.tgz#897ff181b48ad7b2bcb4ecf29400214888244f08" - integrity sha512-7UDWIIF9hIeJqfKXkNIzkVandlwLf1FWTSdrb9iXvOP8oF544JRXQjCbiTmCv2c9n44n/FIWtehhBfNuAx2CZA== + "integrity" "sha512-7UDWIIF9hIeJqfKXkNIzkVandlwLf1FWTSdrb9iXvOP8oF544JRXQjCbiTmCv2c9n44n/FIWtehhBfNuAx2CZA==" + "resolved" "https://registry.npmjs.org/@apocentre/alias-sampling/-/alias-sampling-0.5.3.tgz" + "version" "0.5.3" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/highlight" "^7.18.6" "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733" - integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g== + "integrity" "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz" + "version" "7.20.5" -"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113" - integrity sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ== +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.19.6", "@babel/core@^7.4.0-0", "@babel/core@^7.8.0": + "integrity" "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz" + "version" "7.20.5" dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" @@ -56,50 +56,50 @@ "@babel/template" "^7.18.10" "@babel/traverse" "^7.20.5" "@babel/types" "^7.20.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" + "convert-source-map" "^1.7.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.2.1" + "semver" "^6.3.0" "@babel/generator@^7.20.5", "@babel/generator@^7.7.2": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95" - integrity sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA== + "integrity" "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/types" "^7.20.5" "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" + "jsesc" "^2.5.1" "@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" + "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/types" "^7.18.6" "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" - integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + "integrity" "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==" + "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" - integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== + "integrity" "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz" + "version" "7.20.0" dependencies: "@babel/compat-data" "^7.20.0" "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" + "browserslist" "^4.21.3" + "semver" "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.2", "@babel/helper-create-class-features-plugin@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz#327154eedfb12e977baa4ecc72e5806720a85a06" - integrity sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww== + "integrity" "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" @@ -110,70 +110,70 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca" - integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w== + "integrity" "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.2.1" + "regexpu-core" "^5.2.1" "@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + "integrity" "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==" + "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" + "version" "0.3.3" dependencies: "@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" + "debug" "^4.1.1" + "lodash.debounce" "^4.0.8" + "resolve" "^1.14.2" + "semver" "^6.1.2" "@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" + "version" "7.18.9" "@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" - integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + "integrity" "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==" + "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/types" "^7.18.6" "@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + "integrity" "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" + "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" + "version" "7.19.0" dependencies: "@babel/template" "^7.18.10" "@babel/types" "^7.19.0" "@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" + "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/types" "^7.18.6" "@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + "integrity" "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==" + "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/types" "^7.18.9" "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/types" "^7.18.6" "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" - integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== + "integrity" "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz" + "version" "7.20.2" dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" @@ -185,21 +185,21 @@ "@babel/types" "^7.20.2" "@babel/helper-optimise-call-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" - integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + "integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" + "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/types" "^7.18.6" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + "integrity" "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" + "version" "7.20.2" "@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" - integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + "integrity" "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==" + "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" @@ -207,9 +207,9 @@ "@babel/types" "^7.18.9" "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" - integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== + "integrity" "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==" + "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz" + "version" "7.19.1" dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-member-expression-to-functions" "^7.18.9" @@ -218,45 +218,45 @@ "@babel/types" "^7.19.0" "@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" - integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + "integrity" "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==" + "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" + "version" "7.20.2" dependencies: "@babel/types" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" - integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + "integrity" "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==" + "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" + "version" "7.20.0" dependencies: "@babel/types" "^7.20.0" "@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" + "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/types" "^7.18.6" "@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + "integrity" "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" + "version" "7.19.4" "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + "version" "7.19.1" "@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + "version" "7.18.6" "@babel/helper-wrap-function@^7.18.9": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" - integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== + "integrity" "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==" + "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/helper-function-name" "^7.19.0" "@babel/template" "^7.18.10" @@ -264,48 +264,48 @@ "@babel/types" "^7.20.5" "@babel/helpers@^7.20.5": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763" - integrity sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w== + "integrity" "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz" + "version" "7.20.6" dependencies: "@babel/template" "^7.18.10" "@babel/traverse" "^7.20.5" "@babel/types" "^7.20.5" "@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" + "chalk" "^2.0.0" + "js-tokens" "^4.0.0" "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" - integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA== + "integrity" "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz" + "version" "7.20.5" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" - integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + "integrity" "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== + "integrity" "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions@^7.20.1": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz#352f02baa5d69f4e7529bdac39aaa02d41146af9" - integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g== + "integrity" "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz" + "version" "7.20.1" dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-plugin-utils" "^7.19.0" @@ -313,74 +313,74 @@ "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + "integrity" "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== + "integrity" "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-dynamic-import@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + "integrity" "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + "integrity" "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + "integrity" "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== + "integrity" "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + "integrity" "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + "integrity" "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d" - integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ== + "integrity" "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz" + "version" "7.20.2" dependencies: "@babel/compat-data" "^7.20.1" "@babel/helper-compilation-targets" "^7.20.0" @@ -389,34 +389,34 @@ "@babel/plugin-transform-parameters" "^7.20.1" "@babel/plugin-proposal-optional-catch-binding@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + "integrity" "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== + "integrity" "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-proposal-private-methods@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + "integrity" "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz#309c7668f2263f1c711aa399b5a9a6291eef6135" - integrity sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ== + "integrity" "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-create-class-features-plugin" "^7.20.5" @@ -424,180 +424,180 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + "integrity" "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + "version" "7.8.4" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + "version" "7.12.13" dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-import-assertions@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" - integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== + "integrity" "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" + "version" "7.20.0" dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + "version" "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + "integrity" "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + "version" "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + "version" "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" - integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== + "integrity" "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz" + "version" "7.20.0" dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== + "integrity" "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + "integrity" "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-module-imports" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-remap-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" - integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + "integrity" "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.20.2": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz#401215f9dc13dc5262940e2e527c9536b3d7f237" - integrity sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA== + "integrity" "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-classes@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz#c0033cf1916ccf78202d04be4281d161f6709bb2" - integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g== + "integrity" "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz" + "version" "7.20.2" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-compilation-targets" "^7.20.0" @@ -607,96 +607,96 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-replace-supers" "^7.19.1" "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" + "globals" "^11.1.0" "@babel/plugin-transform-computed-properties@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== + "integrity" "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-destructuring@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792" - integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw== + "integrity" "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz" + "version" "7.20.2" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" - integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + "integrity" "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-duplicate-keys@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" - integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== + "integrity" "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" - integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== + "integrity" "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-for-of@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== + "integrity" "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" + "version" "7.18.8" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" - integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + "integrity" "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" - integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + "integrity" "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" - integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== + "integrity" "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd" - integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== + "integrity" "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz" + "version" "7.19.6" dependencies: "@babel/helper-module-transforms" "^7.19.6" "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-modules-commonjs@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c" - integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== + "integrity" "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz" + "version" "7.19.6" dependencies: "@babel/helper-module-transforms" "^7.19.6" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-simple-access" "^7.19.4" "@babel/plugin-transform-modules-systemjs@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d" - integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== + "integrity" "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz" + "version" "7.19.6" dependencies: "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-module-transforms" "^7.19.6" @@ -704,75 +704,75 @@ "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" - integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== + "integrity" "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" - integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== + "integrity" "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/helper-create-regexp-features-plugin" "^7.20.5" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-new-target@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" - integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + "integrity" "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" - integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + "integrity" "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" "@babel/plugin-transform-parameters@^7.20.1": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz#f8f9186c681d10c3de7620c916156d893c8a019e" - integrity sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ== + "integrity" "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" - integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== + "integrity" "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-constant-elements@^7.18.12": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz#3f02c784e0b711970d7d8ccc96c4359d64e27ac7" - integrity sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g== + "integrity" "sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz" + "version" "7.20.2" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-react-display-name@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" - integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + "integrity" "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-development@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" - integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + "integrity" "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" "@babel/plugin-transform-react-jsx@^7.18.6": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" - integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== + "integrity" "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz" + "version" "7.19.0" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-module-imports" "^7.18.6" @@ -781,104 +781,104 @@ "@babel/types" "^7.19.0" "@babel/plugin-transform-react-pure-annotations@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" - integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== + "integrity" "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-regenerator@^7.18.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" - integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== + "integrity" "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/helper-plugin-utils" "^7.20.2" - regenerator-transform "^0.15.1" + "regenerator-transform" "^0.15.1" "@babel/plugin-transform-reserved-words@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" - integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + "integrity" "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-runtime@^7.5.5": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" - integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== + "integrity" "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz" + "version" "7.19.6" dependencies: "@babel/helper-module-imports" "^7.18.6" "@babel/helper-plugin-utils" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - semver "^6.3.0" + "babel-plugin-polyfill-corejs2" "^0.3.3" + "babel-plugin-polyfill-corejs3" "^0.6.0" + "babel-plugin-polyfill-regenerator" "^0.4.1" + "semver" "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" - integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + "integrity" "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" - integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== + "integrity" "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" + "version" "7.19.0" dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-transform-sticky-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" - integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + "integrity" "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-template-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" - integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + "integrity" "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typeof-symbol@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" - integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + "integrity" "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" + "version" "7.18.9" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.18.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz#91515527b376fc122ba83b13d70b01af8fe98f3f" - integrity sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag== + "integrity" "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz" + "version" "7.20.2" dependencies: "@babel/helper-create-class-features-plugin" "^7.20.2" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-typescript" "^7.20.0" "@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + "integrity" "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" + "version" "7.18.10" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" - integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + "integrity" "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.19.4": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" - integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== + "integrity" "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==" + "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz" + "version" "7.20.2" dependencies: "@babel/compat-data" "^7.20.1" "@babel/helper-compilation-targets" "^7.20.0" @@ -950,27 +950,27 @@ "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" "@babel/types" "^7.20.2" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - core-js-compat "^3.25.1" - semver "^6.3.0" + "babel-plugin-polyfill-corejs2" "^0.3.3" + "babel-plugin-polyfill-corejs3" "^0.6.0" + "babel-plugin-polyfill-regenerator" "^0.4.1" + "core-js-compat" "^3.25.1" + "semver" "^6.3.0" "@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + "integrity" "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==" + "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" + "version" "0.1.5" dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" - esutils "^2.0.2" + "esutils" "^2.0.2" "@babel/preset-react@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" - integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== + "integrity" "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==" + "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-validator-option" "^7.18.6" @@ -980,56 +980,56 @@ "@babel/plugin-transform-react-pure-annotations" "^7.18.6" "@babel/preset-typescript@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" - integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== + "integrity" "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==" + "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-transform-typescript" "^7.18.6" "@babel/runtime-corejs3@^7.10.2": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.20.6.tgz#63dae945963539ab0ad578efbf3eff271e7067ae" - integrity sha512-tqeujPiuEfcH067mx+7otTQWROVMKHXEaOQcAeNV5dDdbPWvPcFA8/W9LXw2NfjNmOetqLl03dfnG2WALPlsRQ== + "integrity" "sha512-tqeujPiuEfcH067mx+7otTQWROVMKHXEaOQcAeNV5dDdbPWvPcFA8/W9LXw2NfjNmOetqLl03dfnG2WALPlsRQ==" + "resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.6.tgz" + "version" "7.20.6" dependencies: - core-js-pure "^3.25.1" - regenerator-runtime "^0.13.11" + "core-js-pure" "^3.25.1" + "regenerator-runtime" "^0.13.11" -"@babel/runtime@7.20.6", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" - integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== +"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2", "@babel/runtime@7.20.6": + "integrity" "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz" + "version" "7.20.6" dependencies: - regenerator-runtime "^0.13.11" + "regenerator-runtime" "^0.13.11" "@babel/runtime@^7.21.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" - integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== + "integrity" "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz" + "version" "7.22.10" dependencies: - regenerator-runtime "^0.13.11" + "regenerator-runtime" "^0.14.0" -"@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" - integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== +"@babel/runtime@^7.22.6": + "integrity" "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz" + "version" "7.22.10" dependencies: - regenerator-runtime "^0.13.11" + "regenerator-runtime" "^0.14.0" "@babel/template@^7.18.10", "@babel/template@^7.3.3": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + "integrity" "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" + "version" "7.18.10" dependencies: "@babel/code-frame" "^7.18.6" "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.7.2": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133" - integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ== + "integrity" "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/code-frame" "^7.18.6" "@babel/generator" "^7.20.5" @@ -1039,127 +1039,127 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/parser" "^7.20.5" "@babel/types" "^7.20.5" - debug "^4.1.0" - globals "^11.1.0" + "debug" "^4.1.0" + "globals" "^11.1.0" "@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84" - integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg== + "integrity" "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" + "to-fast-properties" "^2.0.0" "@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + "version" "0.2.3" -"@coinbase/wallet-sdk@^3.6.0": - version "3.6.3" - resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.6.3.tgz#fd96f6f19d5a0090520c1b014ad4737bbc8e1267" - integrity sha512-XUR4poOJE+dKzwBTdlM693CdLFitr046oZOVY3iDnbFcRrrQswhbDji7q4CmUcD4HxbfViX7PFoIwl79YQcukg== +"@coinbase/wallet-sdk@^3.7.1": + "integrity" "sha512-LjyoDCB+7p0waQXfK+fUgcAs3Ezk6S6e+LYaoFjpJ6c9VTop3NyZF40Pi7df4z7QJohCwzuIDjz0Rhtig6Y7Pg==" + "resolved" "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-3.7.1.tgz" + "version" "3.7.1" dependencies: "@metamask/safe-event-emitter" "2.0.0" "@solana/web3.js" "^1.70.1" - bind-decorator "^1.0.11" - bn.js "^5.1.1" - buffer "^6.0.3" - clsx "^1.1.0" - eth-block-tracker "4.4.3" - eth-json-rpc-filters "4.2.2" - eth-rpc-errors "4.0.2" - json-rpc-engine "6.1.0" - keccak "^3.0.1" - preact "^10.5.9" - qs "^6.10.3" - rxjs "^6.6.3" - sha.js "^2.4.11" - stream-browserify "^3.0.0" - util "^0.12.4" + "bind-decorator" "^1.0.11" + "bn.js" "^5.1.1" + "buffer" "^6.0.3" + "clsx" "^1.1.0" + "eth-block-tracker" "6.1.0" + "eth-json-rpc-filters" "5.1.0" + "eth-rpc-errors" "4.0.2" + "json-rpc-engine" "6.1.0" + "keccak" "^3.0.1" + "preact" "^10.5.9" + "qs" "^6.10.3" + "rxjs" "^6.6.3" + "sha.js" "^2.4.11" + "stream-browserify" "^3.0.0" + "util" "^0.12.4" "@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + "version" "1.5.0" "@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + "integrity" "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==" + "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + "version" "0.8.1" dependencies: "@jridgewell/trace-mapping" "0.3.9" "@cypress/request@^2.88.10": - version "2.88.10" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" - integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - http-signature "~1.3.6" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^8.3.2" + "integrity" "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==" + "resolved" "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz" + "version" "2.88.10" + dependencies: + "aws-sign2" "~0.7.0" + "aws4" "^1.8.0" + "caseless" "~0.12.0" + "combined-stream" "~1.0.6" + "extend" "~3.0.2" + "forever-agent" "~0.6.1" + "form-data" "~2.3.2" + "http-signature" "~1.3.6" + "is-typedarray" "~1.0.0" + "isstream" "~0.1.2" + "json-stringify-safe" "~5.0.1" + "mime-types" "~2.1.19" + "performance-now" "^2.1.0" + "qs" "~6.5.2" + "safe-buffer" "^5.1.2" + "tough-cookie" "~2.5.0" + "tunnel-agent" "^0.6.0" + "uuid" "^8.3.2" "@cypress/xvfb@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" - integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== + "integrity" "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==" + "resolved" "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz" + "version" "1.2.4" dependencies: - debug "^3.1.0" - lodash.once "^4.1.1" + "debug" "^3.1.0" + "lodash.once" "^4.1.1" "@date-io/core@^2.15.0", "@date-io/core@^2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@date-io/core/-/core-2.16.0.tgz#7871bfc1d9bca9aa35ad444a239505589d0f22f6" - integrity sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg== + "integrity" "sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg==" + "resolved" "https://registry.npmjs.org/@date-io/core/-/core-2.16.0.tgz" + "version" "2.16.0" "@date-io/date-fns@^2.15.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@date-io/date-fns/-/date-fns-2.16.0.tgz#bd5e09b6ecb47ee55e593fc3a87e7b2caaa3da40" - integrity sha512-bfm5FJjucqlrnQcXDVU5RD+nlGmL3iWgkHTq3uAZWVIuBu6dDmGa3m8a6zo2VQQpu8ambq9H22UyUpn7590joA== + "integrity" "sha512-bfm5FJjucqlrnQcXDVU5RD+nlGmL3iWgkHTq3uAZWVIuBu6dDmGa3m8a6zo2VQQpu8ambq9H22UyUpn7590joA==" + "resolved" "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.16.0.tgz" + "version" "2.16.0" dependencies: "@date-io/core" "^2.16.0" "@date-io/dayjs@^2.15.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@date-io/dayjs/-/dayjs-2.16.0.tgz#0d2c254ad8db1306fdc4b8eda197cb53c9af89dc" - integrity sha512-y5qKyX2j/HG3zMvIxTobYZRGnd1FUW2olZLS0vTj7bEkBQkjd2RO7/FEwDY03Z1geVGlXKnzIATEVBVaGzV4Iw== + "integrity" "sha512-y5qKyX2j/HG3zMvIxTobYZRGnd1FUW2olZLS0vTj7bEkBQkjd2RO7/FEwDY03Z1geVGlXKnzIATEVBVaGzV4Iw==" + "resolved" "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.16.0.tgz" + "version" "2.16.0" dependencies: "@date-io/core" "^2.16.0" "@date-io/luxon@^2.15.0": - version "2.16.1" - resolved "https://registry.yarnpkg.com/@date-io/luxon/-/luxon-2.16.1.tgz#b08786614cb58831c729a15807753011e4acb966" - integrity sha512-aeYp5K9PSHV28946pC+9UKUi/xMMYoaGelrpDibZSgHu2VWHXrr7zWLEr+pMPThSs5vt8Ei365PO+84pCm37WQ== + "integrity" "sha512-aeYp5K9PSHV28946pC+9UKUi/xMMYoaGelrpDibZSgHu2VWHXrr7zWLEr+pMPThSs5vt8Ei365PO+84pCm37WQ==" + "resolved" "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.16.1.tgz" + "version" "2.16.1" dependencies: "@date-io/core" "^2.16.0" "@date-io/moment@^2.15.0": - version "2.16.1" - resolved "https://registry.yarnpkg.com/@date-io/moment/-/moment-2.16.1.tgz#ec6e0daa486871e0e6412036c6f806842a0eeed4" - integrity sha512-JkxldQxUqZBfZtsaCcCMkm/dmytdyq5pS1RxshCQ4fHhsvP5A7gSqPD22QbVXMcJydi3d3v1Y8BQdUKEuGACZQ== + "integrity" "sha512-JkxldQxUqZBfZtsaCcCMkm/dmytdyq5pS1RxshCQ4fHhsvP5A7gSqPD22QbVXMcJydi3d3v1Y8BQdUKEuGACZQ==" + "resolved" "https://registry.npmjs.org/@date-io/moment/-/moment-2.16.1.tgz" + "version" "2.16.1" dependencies: "@date-io/core" "^2.16.0" "@emotion/babel-plugin@^11.10.5": - version "11.10.5" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c" - integrity sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA== + "integrity" "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==" + "resolved" "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz" + "version" "11.10.5" dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/plugin-syntax-jsx" "^7.17.12" @@ -1167,80 +1167,64 @@ "@emotion/hash" "^0.9.0" "@emotion/memoize" "^0.8.0" "@emotion/serialize" "^1.1.1" - babel-plugin-macros "^3.1.0" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.1.3" - -"@emotion/cache@^11.10.1", "@emotion/cache@^11.10.5": - version "11.10.5" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" - integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA== - dependencies: - "@emotion/memoize" "^0.8.0" - "@emotion/sheet" "^1.2.1" - "@emotion/utils" "^1.2.0" - "@emotion/weak-memoize" "^0.3.0" - stylis "4.1.3" - -"@emotion/cache@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" - integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== + "babel-plugin-macros" "^3.1.0" + "convert-source-map" "^1.5.0" + "escape-string-regexp" "^4.0.0" + "find-root" "^1.1.0" + "source-map" "^0.5.7" + "stylis" "4.1.3" + +"@emotion/cache@^11.10.1", "@emotion/cache@^11.10.5", "@emotion/cache@^11.11.0": + "integrity" "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==" + "resolved" "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz" + "version" "11.11.0" dependencies: "@emotion/memoize" "^0.8.1" "@emotion/sheet" "^1.2.2" "@emotion/utils" "^1.2.1" "@emotion/weak-memoize" "^0.3.1" - stylis "4.2.0" + "stylis" "4.2.0" "@emotion/hash@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" - integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== + "integrity" "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + "resolved" "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz" + "version" "0.9.0" "@emotion/is-prop-valid@^0.8.2": - version "0.8.8" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + "integrity" "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + "version" "0.8.8" dependencies: "@emotion/memoize" "0.7.4" "@emotion/is-prop-valid@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" - integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== + "integrity" "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz" + "version" "1.2.0" dependencies: "@emotion/memoize" "^0.8.0" "@emotion/is-prop-valid@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" - integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== + "integrity" "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz" + "version" "1.2.1" dependencies: "@emotion/memoize" "^0.8.1" -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== - -"@emotion/memoize@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" - integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== +"@emotion/memoize@^0.8.0", "@emotion/memoize@^0.8.1": + "integrity" "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" + "version" "0.8.1" -"@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== +"@emotion/memoize@0.7.4": + "integrity" "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" + "version" "0.7.4" -"@emotion/react@^11.10.0": - version "11.10.5" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.5.tgz#95fff612a5de1efa9c0d535384d3cfa115fe175d" - integrity sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A== +"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.10.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.9.0": + "integrity" "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==" + "resolved" "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz" + "version" "11.10.5" dependencies: "@babel/runtime" "^7.18.3" "@emotion/babel-plugin" "^11.10.5" @@ -1249,43 +1233,38 @@ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" "@emotion/utils" "^1.2.0" "@emotion/weak-memoize" "^0.3.0" - hoist-non-react-statics "^3.3.1" + "hoist-non-react-statics" "^3.3.1" "@emotion/serialize@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" - integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA== + "integrity" "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==" + "resolved" "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz" + "version" "1.1.1" dependencies: "@emotion/hash" "^0.9.0" "@emotion/memoize" "^0.8.0" "@emotion/unitless" "^0.8.0" "@emotion/utils" "^1.2.0" - csstype "^3.0.2" + "csstype" "^3.0.2" "@emotion/server@^11.10.0": - version "11.10.0" - resolved "https://registry.yarnpkg.com/@emotion/server/-/server-11.10.0.tgz#3edc075b672c75426f682d56aadc6404fb1f6648" - integrity sha512-MTvJ21JPo9aS02GdjFW4nhdwOi2tNNpMmAM/YED0pkxzjDNi5WbiTwXqaCnvLc2Lr8NFtjhT0az1vTJyLIHYcw== + "integrity" "sha512-MTvJ21JPo9aS02GdjFW4nhdwOi2tNNpMmAM/YED0pkxzjDNi5WbiTwXqaCnvLc2Lr8NFtjhT0az1vTJyLIHYcw==" + "resolved" "https://registry.npmjs.org/@emotion/server/-/server-11.10.0.tgz" + "version" "11.10.0" dependencies: "@emotion/utils" "^1.2.0" - html-tokenize "^2.0.0" - multipipe "^1.0.2" - through "^2.3.8" - -"@emotion/sheet@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" - integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== + "html-tokenize" "^2.0.0" + "multipipe" "^1.0.2" + "through" "^2.3.8" "@emotion/sheet@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" - integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + "integrity" "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + "resolved" "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz" + "version" "1.2.2" -"@emotion/styled@^11.10.0": - version "11.10.5" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.5.tgz#1fe7bf941b0909802cb826457e362444e7e96a79" - integrity sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw== +"@emotion/styled@^11.10.0", "@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1": + "integrity" "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==" + "resolved" "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz" + "version" "11.10.5" dependencies: "@babel/runtime" "^7.18.3" "@emotion/babel-plugin" "^11.10.5" @@ -1295,110 +1274,127 @@ "@emotion/utils" "^1.2.0" "@emotion/unitless@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" - integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== + "integrity" "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + "resolved" "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz" + "version" "0.8.0" "@emotion/use-insertion-effect-with-fallbacks@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" - integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== - -"@emotion/utils@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" - integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== - -"@emotion/utils@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" - integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== - -"@emotion/weak-memoize@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" - integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== - -"@emotion/weak-memoize@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" - integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + "integrity" "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==" + "resolved" "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz" + "version" "1.0.0" + +"@emotion/utils@^1.2.0", "@emotion/utils@^1.2.1": + "integrity" "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + "resolved" "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz" + "version" "1.2.1" + +"@emotion/weak-memoize@^0.3.0", "@emotion/weak-memoize@^0.3.1": + "integrity" "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + "resolved" "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz" + "version" "0.3.1" + +"@eslint-community/eslint-utils@^4.2.0": + "integrity" "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==" + "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + "version" "4.4.0" + dependencies: + "eslint-visitor-keys" "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + "integrity" "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==" + "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz" + "version" "4.6.2" "@eslint/eslintrc@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" - integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.4.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" - -"@ethereumjs/common@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.5.0.tgz#ec61551b31bef7a69d1dc634d8932468866a4268" - integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== - dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.1" + "integrity" "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==" + "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "ajv" "^6.12.4" + "debug" "^4.3.2" + "espree" "^9.4.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" + +"@ethereumjs/common@^2.0.0", "@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": + "integrity" "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==" + "resolved" "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz" + "version" "2.6.5" + dependencies: + "crc-32" "^1.2.0" + "ethereumjs-util" "^7.1.5" + +"@ethereumjs/common@^2.5.0", "@ethereumjs/common@2.5.0": + "integrity" "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==" + "resolved" "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "crc-32" "^1.2.0" + "ethereumjs-util" "^7.1.1" "@ethereumjs/common@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.2.tgz#eb006c9329c75c80f634f340dc1719a5258244df" - integrity sha512-vDwye5v0SVeuDky4MtKsu+ogkH2oFUV8pBKzH/eNBzT8oI91pKa8WyzDuYuxOQsgNgv5R34LfFDh2aaw3H4HbQ== + "integrity" "sha512-vDwye5v0SVeuDky4MtKsu+ogkH2oFUV8pBKzH/eNBzT8oI91pKa8WyzDuYuxOQsgNgv5R34LfFDh2aaw3H4HbQ==" + "resolved" "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.2.tgz" + "version" "2.6.2" dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.4" + "crc-32" "^1.2.0" + "ethereumjs-util" "^7.1.4" -"@ethereumjs/common@^2.0.0", "@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": - version "2.6.5" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" - integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== +"@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.4.0", "@ethereumjs/tx@3.5.2": + "integrity" "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==" + "resolved" "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz" + "version" "3.5.2" dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.5" + "@ethereumjs/common" "^2.6.4" + "ethereumjs-util" "^7.1.5" "@ethereumjs/tx@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.0.0.tgz#8dfd91ed6e91e63996e37b3ddc340821ebd48c81" - integrity sha512-H9tfy6qgYxPXvt1TSObfVmVjlF43OoQqoPQ3PJsG2JiuqaMHj5ettV1pGFEC3FamENDBkl6vD6niQEvIlXv/VQ== + "integrity" "sha512-H9tfy6qgYxPXvt1TSObfVmVjlF43OoQqoPQ3PJsG2JiuqaMHj5ettV1pGFEC3FamENDBkl6vD6niQEvIlXv/VQ==" + "resolved" "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.0.0.tgz" + "version" "3.0.0" dependencies: "@ethereumjs/common" "^2.0.0" - ethereumjs-util "^7.0.7" + "ethereumjs-util" "^7.0.7" "@ethereumjs/tx@3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.2.tgz#348d4624bf248aaab6c44fec2ae67265efe3db00" - integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== + "integrity" "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==" + "resolved" "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz" + "version" "3.3.2" dependencies: "@ethereumjs/common" "^2.5.0" - ethereumjs-util "^7.1.2" + "ethereumjs-util" "^7.1.2" "@ethereumjs/tx@3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.1.tgz#8d941b83a602b4a89949c879615f7ea9a90e6671" - integrity sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA== + "integrity" "sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA==" + "resolved" "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.1.tgz" + "version" "3.5.1" dependencies: "@ethereumjs/common" "^2.6.3" - ethereumjs-util "^7.1.4" + "ethereumjs-util" "^7.1.4" -"@ethereumjs/tx@3.5.2", "@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.4.0": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" - integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== +"@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0", "@ethersproject/abi@5.7.0": + "integrity" "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==" + "resolved" "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethereumjs/common" "^2.6.4" - ethereumjs-util "^7.1.5" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" "@ethersproject/abi@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.5.0.tgz#fb52820e22e50b854ff15ce1647cc508d6660613" - integrity sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w== + "integrity" "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==" + "resolved" "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/address" "^5.5.0" "@ethersproject/bignumber" "^5.5.0" @@ -1410,25 +1406,23 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== +"@ethersproject/abstract-provider@^5.5.0", "@ethersproject/abstract-provider@^5.7.0", "@ethersproject/abstract-provider@5.7.0": + "integrity" "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==" + "resolved" "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethersproject/address" "^5.7.0" "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" "@ethersproject/abstract-provider@5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5" - integrity sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg== + "integrity" "sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg==" + "resolved" "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz" + "version" "5.5.1" dependencies: "@ethersproject/bignumber" "^5.5.0" "@ethersproject/bytes" "^5.5.0" @@ -1438,23 +1432,21 @@ "@ethersproject/transactions" "^5.5.0" "@ethersproject/web" "^5.5.0" -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.5.0", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== +"@ethersproject/abstract-signer@^5.5.0", "@ethersproject/abstract-signer@^5.7.0", "@ethersproject/abstract-signer@5.7.0": + "integrity" "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz" + "version" "5.7.0" dependencies: + "@ethersproject/abstract-provider" "^5.7.0" "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" "@ethersproject/abstract-signer@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d" - integrity sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA== + "integrity" "sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA==" + "resolved" "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/abstract-provider" "^5.5.0" "@ethersproject/bignumber" "^5.5.0" @@ -1462,21 +1454,21 @@ "@ethersproject/logger" "^5.5.0" "@ethersproject/properties" "^5.5.0" -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.5.0", "@ethersproject/abstract-signer@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== +"@ethersproject/address@^5.5.0", "@ethersproject/address@^5.7.0", "@ethersproject/address@5.7.0": + "integrity" "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==" + "resolved" "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethersproject/abstract-provider" "^5.7.0" "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" "@ethersproject/address@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.5.0.tgz#bcc6f576a553f21f3dd7ba17248f81b473c9c78f" - integrity sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw== + "integrity" "sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==" + "resolved" "https://registry.npmjs.org/@ethersproject/address/-/address-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bignumber" "^5.5.0" "@ethersproject/bytes" "^5.5.0" @@ -1484,97 +1476,109 @@ "@ethersproject/logger" "^5.5.0" "@ethersproject/rlp" "^5.5.0" -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.5.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== +"@ethersproject/base64@^5.5.0": + "integrity" "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz" + "version" "5.7.0" + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/base64@^5.7.0", "@ethersproject/base64@5.7.0": + "integrity" "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" "@ethersproject/base64@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.5.0.tgz#881e8544e47ed976930836986e5eb8fab259c090" - integrity sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA== + "integrity" "sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA==" + "resolved" "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bytes" "^5.5.0" -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.5.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== +"@ethersproject/basex@^5.5.0", "@ethersproject/basex@^5.7.0", "@ethersproject/basex@5.7.0": + "integrity" "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==" + "resolved" "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" "@ethersproject/basex@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.5.0.tgz#e40a53ae6d6b09ab4d977bd037010d4bed21b4d3" - integrity sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ== + "integrity" "sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bytes" "^5.5.0" "@ethersproject/properties" "^5.5.0" -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.5.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== +"@ethersproject/bignumber@^5.5.0", "@ethersproject/bignumber@^5.7.0", "@ethersproject/bignumber@5.7.0": + "integrity" "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==" + "resolved" "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "bn.js" "^5.2.1" "@ethersproject/bignumber@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.5.0.tgz#875b143f04a216f4f8b96245bde942d42d279527" - integrity sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg== + "integrity" "sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==" + "resolved" "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bytes" "^5.5.0" "@ethersproject/logger" "^5.5.0" - bn.js "^4.11.9" + "bn.js" "^4.11.9" -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.5.0", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== +"@ethersproject/bytes@^5.5.0", "@ethersproject/bytes@^5.7.0", "@ethersproject/bytes@5.7.0": + "integrity" "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==" + "resolved" "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" "@ethersproject/bytes@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.5.0.tgz#cb11c526de657e7b45d2e0f0246fb3b9d29a601c" - integrity sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog== + "integrity" "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==" + "resolved" "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/logger" "^5.5.0" -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.5.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== +"@ethersproject/constants@^5.5.0", "@ethersproject/constants@^5.7.0", "@ethersproject/constants@5.7.0": + "integrity" "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==" + "resolved" "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethersproject/logger" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" "@ethersproject/constants@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e" - integrity sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ== + "integrity" "sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bignumber" "^5.5.0" -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.5.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== +"@ethersproject/contracts@^5.7.0": + "integrity" "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==" + "resolved" "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz" + "version" "5.7.0" dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" "@ethersproject/contracts@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.5.0.tgz#b735260d4bd61283a670a82d5275e2a38892c197" - integrity sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg== + "integrity" "sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg==" + "resolved" "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/abi" "^5.5.0" "@ethersproject/abstract-provider" "^5.5.0" @@ -1587,10 +1591,10 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/transactions" "^5.5.0" -"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" - integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== +"@ethersproject/contracts@5.7.0": + "integrity" "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==" + "resolved" "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/abi" "^5.7.0" "@ethersproject/abstract-provider" "^5.7.0" @@ -1603,10 +1607,25 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/transactions" "^5.7.0" +"@ethersproject/hash@^5.5.0", "@ethersproject/hash@^5.7.0", "@ethersproject/hash@5.7.0": + "integrity" "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==" + "resolved" "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz" + "version" "5.7.0" + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/hash@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.5.0.tgz#7cee76d08f88d1873574c849e0207dcb32380cc9" - integrity sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg== + "integrity" "sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==" + "resolved" "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/abstract-signer" "^5.5.0" "@ethersproject/address" "^5.5.0" @@ -1617,25 +1636,28 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.5.0", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== +"@ethersproject/hdnode@^5.5.0", "@ethersproject/hdnode@^5.7.0", "@ethersproject/hdnode@5.7.0": + "integrity" "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==" + "resolved" "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" "@ethersproject/hdnode@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.5.0.tgz#4a04e28f41c546f7c978528ea1575206a200ddf6" - integrity sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q== + "integrity" "sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q==" + "resolved" "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/abstract-signer" "^5.5.0" "@ethersproject/basex" "^5.5.0" @@ -1650,28 +1672,29 @@ "@ethersproject/transactions" "^5.5.0" "@ethersproject/wordlists" "^5.5.0" -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.5.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== +"@ethersproject/json-wallets@^5.5.0", "@ethersproject/json-wallets@^5.7.0", "@ethersproject/json-wallets@5.7.0": + "integrity" "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==" + "resolved" "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/address" "^5.7.0" "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/pbkdf2" "^5.7.0" "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/random" "^5.7.0" "@ethersproject/strings" "^5.7.0" "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" + "aes-js" "3.0.0" + "scrypt-js" "3.0.1" "@ethersproject/json-wallets@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz#dd522d4297e15bccc8e1427d247ec8376b60e325" - integrity sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ== + "integrity" "sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/abstract-signer" "^5.5.0" "@ethersproject/address" "^5.5.0" @@ -1684,102 +1707,117 @@ "@ethersproject/random" "^5.5.0" "@ethersproject/strings" "^5.5.0" "@ethersproject/transactions" "^5.5.0" - aes-js "3.0.0" - scrypt-js "3.0.1" + "aes-js" "3.0.0" + "scrypt-js" "3.0.1" -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.5.0", "@ethersproject/json-wallets@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== +"@ethersproject/keccak256@^5.5.0", "@ethersproject/keccak256@^5.7.0", "@ethersproject/keccak256@5.7.0": + "integrity" "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==" + "resolved" "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" + "js-sha3" "0.8.0" "@ethersproject/keccak256@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.5.0.tgz#e4b1f9d7701da87c564ffe336f86dcee82983492" - integrity sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg== + "integrity" "sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==" + "resolved" "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bytes" "^5.5.0" - js-sha3 "0.8.0" + "js-sha3" "0.8.0" -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.5.0", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" +"@ethersproject/logger@^5.5.0", "@ethersproject/logger@^5.7.0", "@ethersproject/logger@5.7.0": + "integrity" "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + "resolved" "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz" + "version" "5.7.0" "@ethersproject/logger@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d" - integrity sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg== + "integrity" "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==" + "resolved" "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz" + "version" "5.5.0" -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.5.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== +"@ethersproject/networks@^5.5.0", "@ethersproject/networks@^5.7.0", "@ethersproject/networks@5.7.1": + "integrity" "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" + "version" "5.7.1" + dependencies: + "@ethersproject/logger" "^5.7.0" "@ethersproject/networks@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.2.tgz#784c8b1283cd2a931114ab428dae1bd00c07630b" - integrity sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ== + "integrity" "sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.5.2.tgz" + "version" "5.5.2" dependencies: "@ethersproject/logger" "^5.5.0" -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.5.0", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== +"@ethersproject/pbkdf2@^5.5.0", "@ethersproject/pbkdf2@^5.7.0": + "integrity" "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==" + "resolved" "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethersproject/logger" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/pbkdf2@^5.7.0", "@ethersproject/pbkdf2@5.7.0": + "integrity" "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==" + "resolved" "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" + "version" "5.7.0" + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" "@ethersproject/pbkdf2@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz#e25032cdf02f31505d47afbf9c3e000d95c4a050" - integrity sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg== + "integrity" "sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg==" + "resolved" "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bytes" "^5.5.0" "@ethersproject/sha2" "^5.5.0" -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.5.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== +"@ethersproject/properties@^5.5.0", "@ethersproject/properties@^5.7.0", "@ethersproject/properties@5.7.0": + "integrity" "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==" + "resolved" "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" + "@ethersproject/logger" "^5.7.0" "@ethersproject/properties@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.5.0.tgz#61f00f2bb83376d2071baab02245f92070c59995" - integrity sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA== + "integrity" "sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==" + "resolved" "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/logger" "^5.5.0" -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.5.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== +"@ethersproject/providers@^5.0.0", "@ethersproject/providers@^5.5.0", "@ethersproject/providers@5.7.2": + "integrity" "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==" + "resolved" "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz" + "version" "5.7.2" dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + "bech32" "1.1.4" + "ws" "7.4.6" "@ethersproject/providers@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.0.tgz#bc2876a8fe5e0053ed9828b1f3767ae46e43758b" - integrity sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw== + "integrity" "sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw==" + "resolved" "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/abstract-provider" "^5.5.0" "@ethersproject/abstract-signer" "^5.5.0" @@ -1798,13 +1836,13 @@ "@ethersproject/strings" "^5.5.0" "@ethersproject/transactions" "^5.5.0" "@ethersproject/web" "^5.5.0" - bech32 "1.1.4" - ws "7.4.6" + "bech32" "1.1.4" + "ws" "7.4.6" "@ethersproject/providers@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.2.tgz#131ccf52dc17afd0ab69ed444b8c0e3a27297d99" - integrity sha512-hkbx7x/MKcRjyrO4StKXCzCpWer6s97xnm34xkfPiarhtEUVAN4TBBpamM+z66WcTt7H5B53YwbRj1n7i8pZoQ== + "integrity" "sha512-hkbx7x/MKcRjyrO4StKXCzCpWer6s97xnm34xkfPiarhtEUVAN4TBBpamM+z66WcTt7H5B53YwbRj1n7i8pZoQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.2.tgz" + "version" "5.5.2" dependencies: "@ethersproject/abstract-provider" "^5.5.0" "@ethersproject/abstract-signer" "^5.5.0" @@ -1823,13 +1861,13 @@ "@ethersproject/strings" "^5.5.0" "@ethersproject/transactions" "^5.5.0" "@ethersproject/web" "^5.5.0" - bech32 "1.1.4" - ws "7.4.6" + "bech32" "1.1.4" + "ws" "7.4.6" "@ethersproject/providers@5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.3.tgz#56c2b070542ac44eb5de2ed3cf6784acd60a3130" - integrity sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA== + "integrity" "sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA==" + "resolved" "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.5.3.tgz" + "version" "5.5.3" dependencies: "@ethersproject/abstract-provider" "^5.5.0" "@ethersproject/abstract-signer" "^5.5.0" @@ -1848,113 +1886,99 @@ "@ethersproject/strings" "^5.5.0" "@ethersproject/transactions" "^5.5.0" "@ethersproject/web" "^5.5.0" - bech32 "1.1.4" - ws "7.4.6" + "bech32" "1.1.4" + "ws" "7.4.6" -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.5.0": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== +"@ethersproject/random@^5.5.0", "@ethersproject/random@^5.7.0", "@ethersproject/random@5.7.0": + "integrity" "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - bech32 "1.1.4" - ws "7.4.6" "@ethersproject/random@5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.5.1.tgz#7cdf38ea93dc0b1ed1d8e480ccdaf3535c555415" - integrity sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA== + "integrity" "sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA==" + "resolved" "https://registry.npmjs.org/@ethersproject/random/-/random-5.5.1.tgz" + "version" "5.5.1" dependencies: "@ethersproject/bytes" "^5.5.0" "@ethersproject/logger" "^5.5.0" -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.5.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== +"@ethersproject/rlp@^5.5.0", "@ethersproject/rlp@^5.7.0", "@ethersproject/rlp@5.7.0": + "integrity" "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==" + "resolved" "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/rlp@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.5.0.tgz#530f4f608f9ca9d4f89c24ab95db58ab56ab99a0" - integrity sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA== + "integrity" "sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA==" + "resolved" "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bytes" "^5.5.0" "@ethersproject/logger" "^5.5.0" -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.5.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== +"@ethersproject/sha2@^5.5.0", "@ethersproject/sha2@^5.7.0", "@ethersproject/sha2@5.7.0": + "integrity" "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==" + "resolved" "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" + "hash.js" "1.1.7" "@ethersproject/sha2@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.5.0.tgz#a40a054c61f98fd9eee99af2c3cc6ff57ec24db7" - integrity sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA== + "integrity" "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==" + "resolved" "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bytes" "^5.5.0" "@ethersproject/logger" "^5.5.0" - hash.js "1.1.7" + "hash.js" "1.1.7" -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.5.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== +"@ethersproject/signing-key@^5.5.0", "@ethersproject/signing-key@^5.7.0", "@ethersproject/signing-key@5.7.0": + "integrity" "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==" + "resolved" "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" + "@ethersproject/properties" "^5.7.0" + "bn.js" "^5.2.1" + "elliptic" "6.5.4" + "hash.js" "1.1.7" "@ethersproject/signing-key@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.5.0.tgz#2aa37169ce7e01e3e80f2c14325f624c29cedbe0" - integrity sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng== + "integrity" "sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng==" + "resolved" "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bytes" "^5.5.0" "@ethersproject/logger" "^5.5.0" "@ethersproject/properties" "^5.5.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.7" + "bn.js" "^4.11.9" + "elliptic" "6.5.4" + "hash.js" "1.1.7" -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.5.0", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== +"@ethersproject/solidity@^5.7.0": + "integrity" "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==" + "resolved" "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz" + "version" "5.7.0" dependencies: + "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" "@ethersproject/solidity@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.5.0.tgz#2662eb3e5da471b85a20531e420054278362f93f" - integrity sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw== + "integrity" "sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw==" + "resolved" "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bignumber" "^5.5.0" "@ethersproject/bytes" "^5.5.0" @@ -1963,10 +1987,10 @@ "@ethersproject/sha2" "^5.5.0" "@ethersproject/strings" "^5.5.0" -"@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== +"@ethersproject/solidity@5.7.0": + "integrity" "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==" + "resolved" "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" @@ -1975,28 +1999,43 @@ "@ethersproject/sha2" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@ethersproject/strings@^5.5.0", "@ethersproject/strings@^5.7.0", "@ethersproject/strings@5.7.0": + "integrity" "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==" + "resolved" "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz" + "version" "5.7.0" + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/strings@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.5.0.tgz#e6784d00ec6c57710755699003bc747e98c5d549" - integrity sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ== + "integrity" "sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bytes" "^5.5.0" "@ethersproject/constants" "^5.5.0" "@ethersproject/logger" "^5.5.0" -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.5.0", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== +"@ethersproject/transactions@^5.5.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0", "@ethersproject/transactions@5.7.0": + "integrity" "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==" + "resolved" "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz" + "version" "5.7.0" dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" "@ethersproject/transactions@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908" - integrity sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA== + "integrity" "sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA==" + "resolved" "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/address" "^5.5.0" "@ethersproject/bignumber" "^5.5.0" @@ -2008,43 +2047,28 @@ "@ethersproject/rlp" "^5.5.0" "@ethersproject/signing-key" "^5.5.0" -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.5.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/units@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.5.0.tgz#104d02db5b5dc42cc672cc4587bafb87a95ee45e" - integrity sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag== + "integrity" "sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag==" + "resolved" "https://registry.npmjs.org/@ethersproject/units/-/units-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bignumber" "^5.5.0" "@ethersproject/constants" "^5.5.0" "@ethersproject/logger" "^5.5.0" "@ethersproject/units@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + "integrity" "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==" + "resolved" "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/bignumber" "^5.7.0" "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/wallet@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.5.0.tgz#322a10527a440ece593980dca6182f17d54eae75" - integrity sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q== + "integrity" "sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q==" + "resolved" "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/abstract-provider" "^5.5.0" "@ethersproject/abstract-signer" "^5.5.0" @@ -2063,9 +2087,9 @@ "@ethersproject/wordlists" "^5.5.0" "@ethersproject/wallet@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + "integrity" "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==" + "resolved" "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz" + "version" "5.7.0" dependencies: "@ethersproject/abstract-provider" "^5.7.0" "@ethersproject/abstract-signer" "^5.7.0" @@ -2083,10 +2107,21 @@ "@ethersproject/transactions" "^5.7.0" "@ethersproject/wordlists" "^5.7.0" +"@ethersproject/web@^5.5.0", "@ethersproject/web@^5.7.0", "@ethersproject/web@5.7.1": + "integrity" "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==" + "resolved" "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" + "version" "5.7.1" + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/web@5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.1.tgz#cfcc4a074a6936c657878ac58917a61341681316" - integrity sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg== + "integrity" "sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg==" + "resolved" "https://registry.npmjs.org/@ethersproject/web/-/web-5.5.1.tgz" + "version" "5.5.1" dependencies: "@ethersproject/base64" "^5.5.0" "@ethersproject/bytes" "^5.5.0" @@ -2094,21 +2129,21 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.5.0", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== +"@ethersproject/wordlists@^5.5.0", "@ethersproject/wordlists@^5.7.0", "@ethersproject/wordlists@5.7.0": + "integrity" "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==" + "resolved" "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz" + "version" "5.7.0" dependencies: - "@ethersproject/base64" "^5.7.0" "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" "@ethersproject/wordlists@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.5.0.tgz#aac74963aa43e643638e5172353d931b347d584f" - integrity sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q== + "integrity" "sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q==" + "resolved" "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.5.0.tgz" + "version" "5.5.0" dependencies: "@ethersproject/bytes" "^5.5.0" "@ethersproject/hash" "^5.5.0" @@ -2116,119 +2151,108 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.5.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@formatjs/ecma402-abstract@1.11.4": - version "1.11.4" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz#b962dfc4ae84361f9f08fbce411b4e4340930eda" - integrity sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw== + "integrity" "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==" + "resolved" "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz" + "version" "1.11.4" dependencies: "@formatjs/intl-localematcher" "0.2.25" - tslib "^2.1.0" + "tslib" "^2.1.0" "@formatjs/fast-memoize@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz#e6f5aee2e4fd0ca5edba6eba7668e2d855e0fc21" - integrity sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg== + "integrity" "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==" + "resolved" "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz" + "version" "1.2.1" dependencies: - tslib "^2.1.0" + "tslib" "^2.1.0" "@formatjs/icu-messageformat-parser@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz#a54293dd7f098d6a6f6a084ab08b6d54a3e8c12d" - integrity sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw== + "integrity" "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==" + "resolved" "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz" + "version" "2.1.0" dependencies: "@formatjs/ecma402-abstract" "1.11.4" "@formatjs/icu-skeleton-parser" "1.3.6" - tslib "^2.1.0" + "tslib" "^2.1.0" "@formatjs/icu-skeleton-parser@1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz#4ce8c0737d6f07b735288177049e97acbf2e8964" - integrity sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg== + "integrity" "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==" + "resolved" "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz" + "version" "1.3.6" dependencies: "@formatjs/ecma402-abstract" "1.11.4" - tslib "^2.1.0" + "tslib" "^2.1.0" "@formatjs/intl-localematcher@0.2.25": - version "0.2.25" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz#60892fe1b271ec35ba07a2eb018a2dd7bca6ea3a" - integrity sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA== + "integrity" "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==" + "resolved" "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz" + "version" "0.2.25" dependencies: - tslib "^2.1.0" + "tslib" "^2.1.0" "@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + "integrity" "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + "resolved" "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" + "version" "9.3.0" "@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + "integrity" "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==" + "resolved" "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" + "version" "5.1.0" dependencies: "@hapi/hoek" "^9.0.0" "@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + "integrity" "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz" + "version" "0.11.10" dependencies: "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" + "debug" "^4.1.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== + "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + "version" "1.0.1" "@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + "version" "1.2.1" "@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" + "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + "version" "1.1.0" dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" + "camelcase" "^5.3.1" + "find-up" "^4.1.0" + "get-package-type" "^0.1.0" + "js-yaml" "^3.13.1" + "resolve-from" "^5.0.0" "@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + "version" "0.1.3" "@jest/console@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" - integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== + "integrity" "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==" + "resolved" "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/types" "^28.1.3" "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - slash "^3.0.0" + "chalk" "^4.0.0" + "jest-message-util" "^28.1.3" + "jest-util" "^28.1.3" + "slash" "^3.0.0" "@jest/core@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" - integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== + "integrity" "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==" + "resolved" "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/console" "^28.1.3" "@jest/reporters" "^28.1.3" @@ -2236,87 +2260,87 @@ "@jest/transform" "^28.1.3" "@jest/types" "^28.1.3" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^28.1.3" - jest-config "^28.1.3" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-resolve-dependencies "^28.1.3" - jest-runner "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - jest-watcher "^28.1.3" - micromatch "^4.0.4" - pretty-format "^28.1.3" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" + "ansi-escapes" "^4.2.1" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "exit" "^0.1.2" + "graceful-fs" "^4.2.9" + "jest-changed-files" "^28.1.3" + "jest-config" "^28.1.3" + "jest-haste-map" "^28.1.3" + "jest-message-util" "^28.1.3" + "jest-regex-util" "^28.0.2" + "jest-resolve" "^28.1.3" + "jest-resolve-dependencies" "^28.1.3" + "jest-runner" "^28.1.3" + "jest-runtime" "^28.1.3" + "jest-snapshot" "^28.1.3" + "jest-util" "^28.1.3" + "jest-validate" "^28.1.3" + "jest-watcher" "^28.1.3" + "micromatch" "^4.0.4" + "pretty-format" "^28.1.3" + "rimraf" "^3.0.0" + "slash" "^3.0.0" + "strip-ansi" "^6.0.0" "@jest/environment@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" - integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== + "integrity" "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==" + "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/fake-timers" "^28.1.3" "@jest/types" "^28.1.3" "@types/node" "*" - jest-mock "^28.1.3" + "jest-mock" "^28.1.3" "@jest/expect-utils@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" - integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== + "integrity" "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==" + "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz" + "version" "28.1.3" dependencies: - jest-get-type "^28.0.2" + "jest-get-type" "^28.0.2" "@jest/expect-utils@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.3.1.tgz#531f737039e9b9e27c42449798acb5bba01935b6" - integrity sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g== + "integrity" "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==" + "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz" + "version" "29.3.1" dependencies: - jest-get-type "^29.2.0" + "jest-get-type" "^29.2.0" "@jest/expect@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" - integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== + "integrity" "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==" + "resolved" "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz" + "version" "28.1.3" dependencies: - expect "^28.1.3" - jest-snapshot "^28.1.3" + "expect" "^28.1.3" + "jest-snapshot" "^28.1.3" "@jest/fake-timers@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" - integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== + "integrity" "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==" + "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/types" "^28.1.3" "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-util "^28.1.3" + "jest-message-util" "^28.1.3" + "jest-mock" "^28.1.3" + "jest-util" "^28.1.3" "@jest/globals@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" - integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== + "integrity" "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==" + "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/environment" "^28.1.3" "@jest/expect" "^28.1.3" "@jest/types" "^28.1.3" "@jest/reporters@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" - integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== + "integrity" "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==" + "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz" + "version" "28.1.3" dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^28.1.3" @@ -2325,573 +2349,535 @@ "@jest/types" "^28.1.3" "@jridgewell/trace-mapping" "^0.3.13" "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - jest-worker "^28.1.3" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - terminal-link "^2.0.0" - v8-to-istanbul "^9.0.1" + "chalk" "^4.0.0" + "collect-v8-coverage" "^1.0.0" + "exit" "^0.1.2" + "glob" "^7.1.3" + "graceful-fs" "^4.2.9" + "istanbul-lib-coverage" "^3.0.0" + "istanbul-lib-instrument" "^5.1.0" + "istanbul-lib-report" "^3.0.0" + "istanbul-lib-source-maps" "^4.0.0" + "istanbul-reports" "^3.1.3" + "jest-message-util" "^28.1.3" + "jest-util" "^28.1.3" + "jest-worker" "^28.1.3" + "slash" "^3.0.0" + "string-length" "^4.0.1" + "strip-ansi" "^6.0.0" + "terminal-link" "^2.0.0" + "v8-to-istanbul" "^9.0.1" "@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + "integrity" "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==" + "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz" + "version" "28.1.3" dependencies: "@sinclair/typebox" "^0.24.1" "@jest/schemas@^29.0.0": - version "29.0.0" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" - integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== + "integrity" "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==" + "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz" + "version" "29.0.0" dependencies: "@sinclair/typebox" "^0.24.1" "@jest/source-map@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" - integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== + "integrity" "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==" + "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz" + "version" "28.1.2" dependencies: "@jridgewell/trace-mapping" "^0.3.13" - callsites "^3.0.0" - graceful-fs "^4.2.9" + "callsites" "^3.0.0" + "graceful-fs" "^4.2.9" "@jest/test-result@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" - integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== + "integrity" "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==" + "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/console" "^28.1.3" "@jest/types" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" + "collect-v8-coverage" "^1.0.0" "@jest/test-sequencer@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" - integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== + "integrity" "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==" + "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/test-result" "^28.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - slash "^3.0.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^28.1.3" + "slash" "^3.0.0" "@jest/transform@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" - integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== + "integrity" "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==" + "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz" + "version" "28.1.3" dependencies: "@babel/core" "^7.11.6" "@jest/types" "^28.1.3" "@jridgewell/trace-mapping" "^0.3.13" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.1" + "babel-plugin-istanbul" "^6.1.1" + "chalk" "^4.0.0" + "convert-source-map" "^1.4.0" + "fast-json-stable-stringify" "^2.0.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^28.1.3" + "jest-regex-util" "^28.0.2" + "jest-util" "^28.1.3" + "micromatch" "^4.0.4" + "pirates" "^4.0.4" + "slash" "^3.0.0" + "write-file-atomic" "^4.0.1" "@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + "integrity" "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/schemas" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^17.0.8" - chalk "^4.0.0" + "chalk" "^4.0.0" "@jest/types@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.3.1.tgz#7c5a80777cb13e703aeec6788d044150341147e3" - integrity sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA== + "integrity" "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz" + "version" "29.3.1" dependencies: "@jest/schemas" "^29.0.0" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^17.0.8" - chalk "^4.0.0" + "chalk" "^4.0.0" "@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + "version" "0.1.1" dependencies: "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + "version" "0.3.2" dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@3.1.0": + "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + "version" "3.1.0" "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + "version" "1.1.2" "@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + "integrity" "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==" + "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" + "version" "0.3.2" dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": + "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + "version" "1.4.14" "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + "integrity" "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" + "version" "0.3.17" dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@0.3.9": + "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + "version" "0.3.9" + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@keystonehq/base-eth-keyring@^0.6.4": - version "0.6.4" - resolved "https://registry.yarnpkg.com/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.6.4.tgz#16a8b280861a70d096444bbeba236c0001d709d9" - integrity sha512-pHTqD9CeBdTmeMIVa5ZnK7aMDb5SsHtp4uYRxa+SyYDO3kHcrqhlds43MIx5WFeDrgOStJ11w2Zji+7hbCAZLA== + "integrity" "sha512-pHTqD9CeBdTmeMIVa5ZnK7aMDb5SsHtp4uYRxa+SyYDO3kHcrqhlds43MIx5WFeDrgOStJ11w2Zji+7hbCAZLA==" + "resolved" "https://registry.npmjs.org/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.6.4.tgz" + "version" "0.6.4" dependencies: "@ethereumjs/tx" "3.5.1" "@keystonehq/bc-ur-registry-eth" "^0.11.4" - ethereumjs-util "^7.0.8" - hdkey "^2.0.1" - uuid "^8.3.2" + "ethereumjs-util" "^7.0.8" + "hdkey" "^2.0.1" + "uuid" "^8.3.2" "@keystonehq/bc-ur-registry-eth@^0.11.4": - version "0.11.4" - resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.11.4.tgz#01d1669ea1bc7a591ae90923c30fde960c24c876" - integrity sha512-iXf5hLd0j0VuQdWUh6h7wi5j1PAkH6AGyUr1ZAYMtPflQRW/AzXEOw5GFB3dF5xi8uVoP36gPPnYFBmcFOFzqg== + "integrity" "sha512-iXf5hLd0j0VuQdWUh6h7wi5j1PAkH6AGyUr1ZAYMtPflQRW/AzXEOw5GFB3dF5xi8uVoP36gPPnYFBmcFOFzqg==" + "resolved" "https://registry.npmjs.org/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.11.4.tgz" + "version" "0.11.4" dependencies: "@keystonehq/bc-ur-registry" "^0.5.0-alpha.5" - ethereumjs-util "^7.0.8" - hdkey "^2.0.1" - uuid "^8.3.2" + "ethereumjs-util" "^7.0.8" + "hdkey" "^2.0.1" + "uuid" "^8.3.2" "@keystonehq/bc-ur-registry@^0.5.0-alpha.5": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.5.4.tgz#5802486a29f5d772520d15579d40fba02860e27f" - integrity sha512-z7bZe10I5k0zz9znmDTXh+o3Rzb5XsRVpwAzexubOaLxVdZ0F7aMbe2LoEsw766Hpox/7zARi7UGmLz5C8BAzA== + "integrity" "sha512-z7bZe10I5k0zz9znmDTXh+o3Rzb5XsRVpwAzexubOaLxVdZ0F7aMbe2LoEsw766Hpox/7zARi7UGmLz5C8BAzA==" + "resolved" "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.5.4.tgz" + "version" "0.5.4" dependencies: "@ngraveio/bc-ur" "^1.1.5" - bs58check "^2.1.2" - tslib "^2.3.0" + "bs58check" "^2.1.2" + "tslib" "^2.3.0" "@keystonehq/eth-keyring@^0.14.00.3": - version "0.14.4" - resolved "https://registry.yarnpkg.com/@keystonehq/eth-keyring/-/eth-keyring-0.14.4.tgz#08dbfb5cdd9648b89ae27c17dca06e221dae26ec" - integrity sha512-aWEKlPGtmGhZRbkRdj26ilUKs2dG+7ov78gz4F1EqU5ES+ZQud2iIlIFKElNQw3qIDZmcObMwNfL/KcyfPKUYQ== + "integrity" "sha512-aWEKlPGtmGhZRbkRdj26ilUKs2dG+7ov78gz4F1EqU5ES+ZQud2iIlIFKElNQw3qIDZmcObMwNfL/KcyfPKUYQ==" + "resolved" "https://registry.npmjs.org/@keystonehq/eth-keyring/-/eth-keyring-0.14.4.tgz" + "version" "0.14.4" dependencies: "@ethereumjs/tx" "3.0.0" "@keystonehq/base-eth-keyring" "^0.6.4" "@keystonehq/bc-ur-registry-eth" "^0.11.4" "@keystonehq/sdk" "^0.12.4" "@metamask/obs-store" "^7.0.0" - bs58check "^2.1.2" - ethereumjs-util "^7.0.8" - hdkey "^2.0.1" - uuid "^8.3.2" + "bs58check" "^2.1.2" + "ethereumjs-util" "^7.0.8" + "hdkey" "^2.0.1" + "uuid" "^8.3.2" "@keystonehq/sdk@^0.12.4": - version "0.12.4" - resolved "https://registry.yarnpkg.com/@keystonehq/sdk/-/sdk-0.12.4.tgz#e18d529cbb8ee5de386e61a50d3a1a2f23171c54" - integrity sha512-vC/O+oSH6g9Hp8WQxd7nO5Xf4Z8q86YWKOZUZsh5ZgfWNVgsy1zGTprc1wGbhMAjkcnWTtreRZUxTOIWJRPNuw== + "integrity" "sha512-vC/O+oSH6g9Hp8WQxd7nO5Xf4Z8q86YWKOZUZsh5ZgfWNVgsy1zGTprc1wGbhMAjkcnWTtreRZUxTOIWJRPNuw==" + "resolved" "https://registry.npmjs.org/@keystonehq/sdk/-/sdk-0.12.4.tgz" + "version" "0.12.4" dependencies: "@ngraveio/bc-ur" "^1.0.0" - qrcode.react "^1.0.1" - react "16.13.1" - react-dom "16.13.1" - react-modal "^3.12.1" - react-qr-reader "^2.2.1" - rxjs "^6.6.3" - typescript "^4.6.2" + "qrcode.react" "^1.0.1" + "react" "16.13.1" + "react-dom" "16.13.1" + "react-modal" "^3.12.1" + "react-qr-reader" "^2.2.1" + "rxjs" "^6.6.3" + "typescript" "^4.6.2" -"@ledgerhq/cryptoassets@^9.8.0": - version "9.8.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-9.8.0.tgz#e0b3470ea6bb6a0ea22a4e2abb81b9602a877e0f" - integrity sha512-0ryUC3u50CYXN4bQFMjlXXgID7+v1u/t/rDvmtRETKRxM9zEUDI8bULF5nGyCPR/a4z+I4WAe+GbSzbsGsWAhA== +"@ledgerhq/cryptoassets@^7.0.0": + "version" "7.0.0" dependencies: - invariant "2" + "invariant" "2" "@ledgerhq/devices@^5.51.1": - version "5.51.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.51.1.tgz#d741a4a5d8f17c2f9d282fd27147e6fe1999edb7" - integrity sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA== + "integrity" "sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==" + "resolved" "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz" + "version" "5.51.1" dependencies: "@ledgerhq/errors" "^5.50.0" "@ledgerhq/logs" "^5.50.0" - rxjs "6" - semver "^7.3.5" + "rxjs" "6" + "semver" "^7.3.5" -"@ledgerhq/devices@^8.0.4": - version "8.0.4" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.4.tgz#ebc7779adbbec2d046424603a481623eb3fbe306" - integrity sha512-dxOiWZmtEv1tgw70+rW8gviCRZUeGDUnxY6HUPiRqTAc0Ts2AXxiJChgAsPvIywWTGW+S67Nxq1oTZdpRbdt+A== +"@ledgerhq/devices@^7.0.5": + "version" "7.0.5" dependencies: - "@ledgerhq/errors" "^6.12.7" + "@ledgerhq/errors" "^6.12.1" "@ledgerhq/logs" "^6.10.1" - rxjs "6" - semver "^7.3.5" - -"@ledgerhq/domain-service@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@ledgerhq/domain-service/-/domain-service-1.1.4.tgz#305fe076f6d206d56bb2cc107ef900f02b6c8879" - integrity sha512-jKnKqm/rqyAcDBgI/ZYom9kFDsBQkodxy6E14IEUJ5N8OkbPdHmjRfzn973nc5mTFJIafaifx0Arde0sjrBP9g== - dependencies: - "@ledgerhq/cryptoassets" "^9.8.0" - "@ledgerhq/errors" "^6.12.6" - "@ledgerhq/logs" "^6.10.1" - "@ledgerhq/types-live" "^6.35.1" - axios "^1.3.4" - eip55 "^2.1.0" - react "^17.0.2" - react-dom "^17.0.2" + "rxjs" "6" + "semver" "^7.3.5" "@ledgerhq/errors@^5.34.0", "@ledgerhq/errors@^5.50.0": - version "5.50.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.50.0.tgz#e3a6834cb8c19346efca214c1af84ed28e69dad9" - integrity sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow== + "integrity" "sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==" + "resolved" "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz" + "version" "5.50.0" -"@ledgerhq/errors@^6.12.6", "@ledgerhq/errors@^6.12.7": - version "6.12.7" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.7.tgz#c7b630488d5713bc7b1e1682d6ab5d08918c69f1" - integrity sha512-1BpjzFErPK7qPFx0oItcX0mNLJMplVAm2Dpl5urZlubewnTyyw5sahIBjU+8LLCWJ2eGEh/0wyvh0jMtR0n2Mg== +"@ledgerhq/errors@^6.12.1": + "version" "6.12.1" "@ledgerhq/hw-app-eth@^6.19.0": - version "6.33.6" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-6.33.6.tgz#c9893ec5262952ced6d2fddfa12a87f2ccba61cc" - integrity sha512-QzYvr5FNEWWd70Vg04A2i8CY0mtPgJrrX7/KePabjXrR8NjDyJ5Ej8qSQPBTp2dkR4TGiz5Y7+HIcWpdgYzjzg== + "version" "6.30.2" dependencies: "@ethersproject/abi" "^5.5.0" "@ethersproject/rlp" "^5.5.0" - "@ledgerhq/cryptoassets" "^9.8.0" - "@ledgerhq/domain-service" "^1.1.4" - "@ledgerhq/errors" "^6.12.6" - "@ledgerhq/hw-transport" "^6.28.4" - "@ledgerhq/hw-transport-mocker" "^6.27.15" + "@ledgerhq/cryptoassets" "^7.0.0" + "@ledgerhq/errors" "^6.12.1" + "@ledgerhq/hw-transport" "^6.27.8" + "@ledgerhq/hw-transport-mocker" "^6.27.8" "@ledgerhq/logs" "^6.10.1" - axios "^1.3.4" - bignumber.js "^9.1.0" - crypto-js "^4.1.1" + "axios" "^0.26.1" + "bignumber.js" "^9.1.0" + "crypto-js" "^4.1.1" -"@ledgerhq/hw-transport-mocker@^6.27.15": - version "6.27.16" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.27.16.tgz#f3fc9a3f5a06de4d4163d39d57150d08279c00c0" - integrity sha512-Il5ilAULsNSE5Wa8qG+Da+LcK61czU1pq8wrRjSd6rLbK0zLPOF2mUgMW1iwMgkdICGFLA0KUz2wouoVjQPqaw== +"@ledgerhq/hw-transport-mocker@^6.27.8": + "version" "6.27.8" dependencies: - "@ledgerhq/hw-transport" "^6.28.5" + "@ledgerhq/hw-transport" "^6.27.8" "@ledgerhq/logs" "^6.10.1" "@ledgerhq/hw-transport-u2f@^5.36.0-deprecated": - version "5.36.0-deprecated" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.36.0-deprecated.tgz#66e3ed399a117a1c0110871a055dd54f5fe707fd" - integrity sha512-T/+mGHIiUK/ZQATad6DMDmobCMZ1mVST952009jKzhaE1Et2Uy2secU+QhRkx3BfEAkvwa0zSRSYCL9d20Iqjg== + "integrity" "sha512-T/+mGHIiUK/ZQATad6DMDmobCMZ1mVST952009jKzhaE1Et2Uy2secU+QhRkx3BfEAkvwa0zSRSYCL9d20Iqjg==" + "resolved" "https://registry.npmjs.org/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.36.0-deprecated.tgz" + "version" "5.36.0-deprecated" dependencies: "@ledgerhq/errors" "^5.34.0" "@ledgerhq/hw-transport" "^5.34.0" "@ledgerhq/logs" "^5.30.0" - u2f-api "0.2.7" + "u2f-api" "0.2.7" "@ledgerhq/hw-transport-webusb@^6.19.0": - version "6.27.16" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.27.16.tgz#b8e20e772f78c312fc7f2ce3a469c99ecf59dc67" - integrity sha512-A3S2p5Rh9Ot402pWNZw8v5EpO3wOHP8ch/Dcz0AjInmwNouQ9nIYd1+eLSL7QiyG9X7+tuHxFF1IjrEgvAzQuQ== + "version" "6.27.8" dependencies: - "@ledgerhq/devices" "^8.0.4" - "@ledgerhq/errors" "^6.12.7" - "@ledgerhq/hw-transport" "^6.28.5" + "@ledgerhq/devices" "^7.0.5" + "@ledgerhq/errors" "^6.12.1" + "@ledgerhq/hw-transport" "^6.27.8" "@ledgerhq/logs" "^6.10.1" "@ledgerhq/hw-transport@^5.34.0": - version "5.51.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz#8dd14a8e58cbee4df0c29eaeef983a79f5f22578" - integrity sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw== + "integrity" "sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==" + "resolved" "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz" + "version" "5.51.1" dependencies: "@ledgerhq/devices" "^5.51.1" "@ledgerhq/errors" "^5.50.0" - events "^3.3.0" + "events" "^3.3.0" -"@ledgerhq/hw-transport@^6.28.4", "@ledgerhq/hw-transport@^6.28.5": - version "6.28.5" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.5.tgz#675193be2f695a596068145351da598316c25831" - integrity sha512-xmw5RhYbqExBBqTvOnOjN/RYNIGMBxFJ+zcYNfkfw/E+uEY3L7xq8Z7sC/n7URTT6xtEctElqduBJnBQE4OQtw== +"@ledgerhq/hw-transport@^6.27.8": + "version" "6.27.8" dependencies: - "@ledgerhq/devices" "^8.0.4" - "@ledgerhq/errors" "^6.12.7" - events "^3.3.0" + "@ledgerhq/devices" "^7.0.5" + "@ledgerhq/errors" "^6.12.1" + "events" "^3.3.0" "@ledgerhq/logs@^5.30.0", "@ledgerhq/logs@^5.50.0": - version "5.50.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186" - integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== + "integrity" "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==" + "resolved" "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz" + "version" "5.50.0" "@ledgerhq/logs@^6.10.1": - version "6.10.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.1.tgz#5bd16082261d7364eabb511c788f00937dac588d" - integrity sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w== - -"@ledgerhq/types-live@^6.35.1": - version "6.35.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/types-live/-/types-live-6.35.1.tgz#90ad68ef1514641a04ea7c14d524a2a2d60ef004" - integrity sha512-p9xFAV7xKcrUZDO8C0geGPW1CXAWqWogbDrVG8PnCZfmcmH+AVwzHoUcKMi9SzmV3iF8N7IRGe9UVIqqrINthw== - dependencies: - bignumber.js "^9.1.0" - rxjs "6" + "integrity" "sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==" + "resolved" "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1.tgz" + "version" "6.10.1" "@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz#64df34e2f12e68e78ac57e571d25ec07fa460ca9" - integrity sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ== + "integrity" "sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==" + "resolved" "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz" + "version" "1.1.1" "@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.1.tgz#0d958b6d479d0e3db5fc1132ecc4fa84be3f0b93" - integrity sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA== + "integrity" "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==" + "resolved" "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz" + "version" "1.6.3" dependencies: "@lit-labs/ssr-dom-shim" "^1.0.0" -"@metamask/eth-sig-util@4.0.1", "@metamask/eth-sig-util@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" - integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== +"@metamask/eth-sig-util@^4.0.0", "@metamask/eth-sig-util@4.0.1": + "integrity" "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==" + "resolved" "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz" + "version" "4.0.1" dependencies: - ethereumjs-abi "^0.6.8" - ethereumjs-util "^6.2.1" - ethjs-util "^0.1.6" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" + "ethereumjs-abi" "^0.6.8" + "ethereumjs-util" "^6.2.1" + "ethjs-util" "^0.1.6" + "tweetnacl" "^1.0.3" + "tweetnacl-util" "^0.15.1" "@metamask/obs-store@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@metamask/obs-store/-/obs-store-7.0.0.tgz#6cae5f28306bb3e83a381bc9ae22682316095bd3" - integrity sha512-Tr61Uu9CGXkCg5CZwOYRMQERd+y6fbtrtLd/PzDTPHO5UJpmSbU+7MPcQK7d1DwZCOCeCIvhmZSUCvYliC8uGw== + "integrity" "sha512-Tr61Uu9CGXkCg5CZwOYRMQERd+y6fbtrtLd/PzDTPHO5UJpmSbU+7MPcQK7d1DwZCOCeCIvhmZSUCvYliC8uGw==" + "resolved" "https://registry.npmjs.org/@metamask/obs-store/-/obs-store-7.0.0.tgz" + "version" "7.0.0" dependencies: "@metamask/safe-event-emitter" "^2.0.0" - through2 "^2.0.3" + "through2" "^2.0.3" -"@metamask/safe-event-emitter@2.0.0", "@metamask/safe-event-emitter@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" - integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== +"@metamask/safe-event-emitter@^2.0.0", "@metamask/safe-event-emitter@2.0.0": + "integrity" "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==" + "resolved" "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz" + "version" "2.0.0" + +"@metamask/utils@^3.0.1": + "integrity" "sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==" + "resolved" "https://registry.npmjs.org/@metamask/utils/-/utils-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "@types/debug" "^4.1.7" + "debug" "^4.3.4" + "semver" "^7.3.8" + "superstruct" "^1.0.3" "@motionone/animation@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807" - integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ== + "integrity" "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==" + "resolved" "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz" + "version" "10.15.1" dependencies: "@motionone/easing" "^10.15.1" "@motionone/types" "^10.15.1" "@motionone/utils" "^10.15.1" - tslib "^2.3.1" + "tslib" "^2.3.1" "@motionone/dom@^10.16.2": - version "10.16.2" - resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.16.2.tgz#0c44df8ee3d1cfc50ee11d27050b27824355a61a" - integrity sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg== + "integrity" "sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==" + "resolved" "https://registry.npmjs.org/@motionone/dom/-/dom-10.16.2.tgz" + "version" "10.16.2" dependencies: "@motionone/animation" "^10.15.1" "@motionone/generators" "^10.15.1" "@motionone/types" "^10.15.1" "@motionone/utils" "^10.15.1" - hey-listen "^1.0.8" - tslib "^2.3.1" + "hey-listen" "^1.0.8" + "tslib" "^2.3.1" "@motionone/easing@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693" - integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw== + "integrity" "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==" + "resolved" "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz" + "version" "10.15.1" dependencies: "@motionone/utils" "^10.15.1" - tslib "^2.3.1" + "tslib" "^2.3.1" "@motionone/generators@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c" - integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ== + "integrity" "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==" + "resolved" "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz" + "version" "10.15.1" dependencies: "@motionone/types" "^10.15.1" "@motionone/utils" "^10.15.1" - tslib "^2.3.1" + "tslib" "^2.3.1" "@motionone/svelte@^10.16.2": - version "10.16.2" - resolved "https://registry.yarnpkg.com/@motionone/svelte/-/svelte-10.16.2.tgz#0b37c3b12927814d31d24941d1ca0ff49981b444" - integrity sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q== + "integrity" "sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==" + "resolved" "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.16.2.tgz" + "version" "10.16.2" dependencies: "@motionone/dom" "^10.16.2" - tslib "^2.3.1" + "tslib" "^2.3.1" "@motionone/types@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb" - integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA== + "integrity" "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==" + "resolved" "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz" + "version" "10.15.1" "@motionone/utils@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438" - integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw== + "integrity" "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==" + "resolved" "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz" + "version" "10.15.1" dependencies: "@motionone/types" "^10.15.1" - hey-listen "^1.0.8" - tslib "^2.3.1" + "hey-listen" "^1.0.8" + "tslib" "^2.3.1" "@motionone/vue@^10.16.2": - version "10.16.2" - resolved "https://registry.yarnpkg.com/@motionone/vue/-/vue-10.16.2.tgz#faf13afc27620a2df870c71c58a04ee8de8dea65" - integrity sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw== + "integrity" "sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==" + "resolved" "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.2.tgz" + "version" "10.16.2" dependencies: "@motionone/dom" "^10.16.2" - tslib "^2.3.1" + "tslib" "^2.3.1" -"@mui/base@5.0.0-beta.9": - version "5.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.9.tgz#e88d7052aa6d97c1e57d5ce2a4e2edf898db90ec" - integrity sha512-gm6gnPnc/lS5Z3neH0iuOrK7IbS02+oh6KsMtXYLhI6bJpHs+PNWFsBmISx7x4FSPVJZvZkb8Bw6pEXpIMFt7Q== +"@mui/base@5.0.0-beta.10": + "integrity" "sha512-moTAhGwFfQffj7hsu61FnqcGqVcd53A1CrOhnskM9TF0Uh2rnLDMCuar4JRUWWpaJofAfQEbQBBFPadFQLI4PA==" + "resolved" "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.10.tgz" + "version" "5.0.0-beta.10" dependencies: "@babel/runtime" "^7.22.6" "@emotion/is-prop-valid" "^1.2.1" "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.3" + "@mui/utils" "^5.14.4" "@popperjs/core" "^2.11.8" - clsx "^2.0.0" - prop-types "^15.8.1" - react-is "^18.2.0" + "clsx" "^2.0.0" + "prop-types" "^15.8.1" + "react-is" "^18.2.0" -"@mui/core-downloads-tracker@^5.14.3": - version "5.14.3" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.3.tgz#474689f4d691993376e8a1ca07e08d4545275082" - integrity sha512-QxvrcDqphZoXRjsAmCaQylmWjC/8/qKWwIde1MJMna5YIst3R9O0qhKRPu36/OE2d8AeTbCVjRcRvNqhhW8jyg== +"@mui/core-downloads-tracker@^5.14.4": + "integrity" "sha512-pW2XghSi3hpYKX57Wu0SCWMTSpzvXZmmucj3TcOJWaCiFt4xr05w2gcwBZi36dAp9uvd9//9N51qbblmnD+GPg==" + "resolved" "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.4.tgz" + "version" "5.14.4" "@mui/icons-material@^5.14.3": - version "5.14.3" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.3.tgz#26a84d52ab2fceea2856adf7a139527b3a51ae90" - integrity sha512-XkxWPhageu1OPUm2LWjo5XqeQ0t2xfGe8EiLkRW9oz2LHMMZmijvCxulhgquUVTF1DnoSh+3KoDLSsoAFtVNVw== + "integrity" "sha512-XkxWPhageu1OPUm2LWjo5XqeQ0t2xfGe8EiLkRW9oz2LHMMZmijvCxulhgquUVTF1DnoSh+3KoDLSsoAFtVNVw==" + "resolved" "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.3.tgz" + "version" "5.14.3" dependencies: "@babel/runtime" "^7.22.6" -"@mui/material@^5.14.3": - version "5.14.3" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.3.tgz#c88dbc270c4ebde32f9956b9b3cbf8a5d1dc7aef" - integrity sha512-dlu4SOcCp9Cy+wkcfZ/ns9ZkP40nr/WPgqxX0HmrE0o+dkE1ropY9BbHsLrTlYJCko8yzcC8bLghrD4xqZG1og== +"@mui/material@^5.0.0", "@mui/material@^5.14.3", "@mui/material@^5.4.1", "@mui/material@5.x.x": + "integrity" "sha512-2XUV3KyRC07BQPPzEgd+ss3x/ezXtHeKtOGCMCNmx3MauZojPYUpSwFkE0fYgYCD9dMQMVG4DY/VF38P0KShsg==" + "resolved" "https://registry.npmjs.org/@mui/material/-/material-5.14.4.tgz" + "version" "5.14.4" dependencies: "@babel/runtime" "^7.22.6" - "@mui/base" "5.0.0-beta.9" - "@mui/core-downloads-tracker" "^5.14.3" - "@mui/system" "^5.14.3" + "@mui/base" "5.0.0-beta.10" + "@mui/core-downloads-tracker" "^5.14.4" + "@mui/system" "^5.14.4" "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.3" + "@mui/utils" "^5.14.4" "@types/react-transition-group" "^4.4.6" - clsx "^2.0.0" - csstype "^3.1.2" - prop-types "^15.8.1" - react-is "^18.2.0" - react-transition-group "^4.4.5" + "clsx" "^2.0.0" + "csstype" "^3.1.2" + "prop-types" "^15.8.1" + "react-is" "^18.2.0" + "react-transition-group" "^4.4.5" -"@mui/private-theming@^5.13.7": - version "5.13.7" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.13.7.tgz#2f8ef5da066f3c6c6423bd4260d003a28d10b099" - integrity sha512-qbSr+udcij5F9dKhGX7fEdx2drXchq7htLNr2Qg2Ma+WJ6q0ERlEqGSBiPiVDJkptcjeVL4DGmcf1wl5+vD4EA== +"@mui/private-theming@^5.14.4": + "integrity" "sha512-ISXsHDiQ3z1XA4IuKn+iXDWvDjcz/UcQBiFZqtdoIsEBt8CB7wgdQf3LwcwqO81dl5ofg/vNQBEnXuKfZHrnYA==" + "resolved" "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.4.tgz" + "version" "5.14.4" dependencies: - "@babel/runtime" "^7.22.5" - "@mui/utils" "^5.13.7" - prop-types "^15.8.1" + "@babel/runtime" "^7.22.6" + "@mui/utils" "^5.14.4" + "prop-types" "^15.8.1" "@mui/styled-engine@^5.13.2": - version "5.13.2" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.13.2.tgz#c87bd61c0ab8086d34828b6defe97c02bcd642ef" - integrity sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw== + "integrity" "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==" + "resolved" "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz" + "version" "5.13.2" dependencies: "@babel/runtime" "^7.21.0" "@emotion/cache" "^11.11.0" - csstype "^3.1.2" - prop-types "^15.8.1" + "csstype" "^3.1.2" + "prop-types" "^15.8.1" -"@mui/system@^5.14.3": - version "5.14.3" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.3.tgz#71aa88433649a23dfa5c102cef8a3c5b1ac40ac6" - integrity sha512-b+C+j9+75+/iIYSa+1S4eCMc9MDNrj9hzWfExJqS2GffuNocRagjBZFyjtMqsLWLxMxQIX8Cg6j0hAioiw+WfQ== +"@mui/system@^5.14.4", "@mui/system@^5.4.1": + "integrity" "sha512-oPgfWS97QNfHcDBapdkZIs4G5i85BJt69Hp6wbXF6s7vi3Evcmhdk8AbCRW6n0sX4vTj8oe0mh0RIm1G2A1KDA==" + "resolved" "https://registry.npmjs.org/@mui/system/-/system-5.14.4.tgz" + "version" "5.14.4" dependencies: "@babel/runtime" "^7.22.6" - "@mui/private-theming" "^5.13.7" + "@mui/private-theming" "^5.14.4" "@mui/styled-engine" "^5.13.2" "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.3" - clsx "^2.0.0" - csstype "^3.1.2" - prop-types "^15.8.1" + "@mui/utils" "^5.14.4" + "clsx" "^2.0.0" + "csstype" "^3.1.2" + "prop-types" "^15.8.1" "@mui/types@^7.2.4": - version "7.2.4" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.4.tgz#b6fade19323b754c5c6de679a38f068fd50b9328" - integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA== + "integrity" "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==" + "resolved" "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz" + "version" "7.2.4" -"@mui/utils@^5.10.3": - version "5.11.1" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.11.1.tgz#8d12b3c2245efd9a1c0595658dcb4c86f6625206" - integrity sha512-lMAPgIJoil8V9ZxsMbEflMsvZmWcHbRVMc4JDY9jPO9V4welpF43h/O267b1RqlcRnC5MEbVQV605GYkTZY29Q== - dependencies: - "@babel/runtime" "^7.20.6" - "@types/prop-types" "^15.7.5" - "@types/react-is" "^16.7.1 || ^17.0.0" - prop-types "^15.8.1" - react-is "^18.2.0" - -"@mui/utils@^5.13.7", "@mui/utils@^5.14.3": - version "5.14.3" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.3.tgz#76d8151c23d2c2a871e98b90add57a8fd01d5d80" - integrity sha512-gZ6Etw+ppO43GYc1HFZSLjwd4DoZoa+RrYTD25wQLfzcSoPjVoC/zZqA2Lkq0zjgwGBQOSxKZI6jfp9uXR+kgw== +"@mui/utils@^5.10.3", "@mui/utils@^5.14.4": + "integrity" "sha512-4ANV0txPD3x0IcTCSEHKDWnsutg1K3m6Vz5IckkbLXVYu17oOZCVUdOKsb/txUmaCd0v0PmSRe5PW+Mlvns5dQ==" + "resolved" "https://registry.npmjs.org/@mui/utils/-/utils-5.14.4.tgz" + "version" "5.14.4" dependencies: "@babel/runtime" "^7.22.6" "@types/prop-types" "^15.7.5" "@types/react-is" "^18.2.1" - prop-types "^15.8.1" - react-is "^18.2.0" + "prop-types" "^15.8.1" + "react-is" "^18.2.0" "@mui/x-date-pickers@^5.0.12": - version "5.0.12" - resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-5.0.12.tgz#f80e742aa8045b214f40a72e782fd871fb18ec89" - integrity sha512-HpiPE4nkqlklilKAxUQpf3tecJEDaTIBRRVTGk9GMgpkwli7Cv+5OGn6aSxG5ckMZdiQ/NT1L9kOcm0Bi9Gqjw== + "integrity" "sha512-ERukSeHIoNLbI1C2XRhF9wRhqfsr+Q4B1SAw2ZlU7CWgcG8UBOxgqRKDEOVAIoSWL+DWT6GRuQjOKvj6UXZceA==" + "resolved" "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.20.tgz" + "version" "5.0.20" dependencies: "@babel/runtime" "^7.18.9" "@date-io/core" "^2.15.0" @@ -2901,569 +2887,494 @@ "@date-io/moment" "^2.15.0" "@mui/utils" "^5.10.3" "@types/react-transition-group" "^4.4.5" - clsx "^1.2.1" - prop-types "^15.7.2" - react-transition-group "^4.4.5" - rifm "^0.12.1" + "clsx" "^1.2.1" + "prop-types" "^15.7.2" + "react-transition-group" "^4.4.5" + "rifm" "^0.12.1" "@next/bundle-analyzer@^13.1.1": - version "13.1.1" - resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-13.1.1.tgz#f36108dcb953ea518253df5eb9e175642f78b04a" - integrity sha512-zxC/MOj7gDjvQffHT4QZqcPe1Ny+e6o3wethCZn3liSElMA+kxgEopbziTUXdrvJcd/porq+3Itc8P+gxE/xog== + "integrity" "sha512-XygyFn3V61vF9LkU1zM6GlAMp8h7FbApaLA40anMGhZtQt/0S1tGSNImv9T/Z3ZTbWIQTcbYxyHIM6Fv/uSGrA==" + "resolved" "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-13.4.13.tgz" + "version" "13.4.13" dependencies: - webpack-bundle-analyzer "4.7.0" + "webpack-bundle-analyzer" "4.7.0" "@next/env@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.2.0.tgz#17ce2d9f5532b677829840037e06f208b7eed66b" - integrity sha512-/FCkDpL/8SodJEXvx/DYNlOD5ijTtkozf4PPulYPtkPOJaMPpBSOkzmsta4fnrnbdH6eZjbwbiXFdr6gSQCV4w== + "integrity" "sha512-/FCkDpL/8SodJEXvx/DYNlOD5ijTtkozf4PPulYPtkPOJaMPpBSOkzmsta4fnrnbdH6eZjbwbiXFdr6gSQCV4w==" + "resolved" "https://registry.npmjs.org/@next/env/-/env-12.2.0.tgz" + "version" "12.2.0" "@next/eslint-plugin-next@13.1.1": - version "13.1.1" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.1.tgz#cc5e419cc85587f73f2ac0046a91df01dc6fef8b" - integrity sha512-SBrOFS8PC3nQ5aeZmawJkjKkWjwK9RoxvBSv/86nZp0ubdoVQoko8r8htALd9ufp16NhacCdqhu9bzZLDWtALQ== + "integrity" "sha512-SBrOFS8PC3nQ5aeZmawJkjKkWjwK9RoxvBSv/86nZp0ubdoVQoko8r8htALd9ufp16NhacCdqhu9bzZLDWtALQ==" + "resolved" "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.1.tgz" + "version" "13.1.1" dependencies: - glob "7.1.7" - -"@next/swc-android-arm-eabi@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.0.tgz#f116756e668b267de84b76f068d267a12f18eb22" - integrity sha512-hbneH8DNRB2x0Nf5fPCYoL8a0osvdTCe4pvOc9Rv5CpDsoOlf8BWBs2OWpeP0U2BktGvIsuUhmISmdYYGyrvTw== - -"@next/swc-android-arm64@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.2.0.tgz#cbd9e329cef386271d4e746c08416b5d69342c24" - integrity sha512-1eEk91JHjczcJomxJ8X0XaUeNcp5Lx1U2Ic7j15ouJ83oRX+3GIslOuabW2oPkSgXbHkThMClhirKpvG98kwZg== + "glob" "7.1.7" "@next/swc-darwin-arm64@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.0.tgz#3473889157ba70b30ccdd4f59c46232d841744e2" - integrity sha512-x5U5gJd7ZvrEtTFnBld9O2bUlX8opu7mIQUqRzj7KeWzBwPhrIzTTsQXAiNqsaMuaRPvyHBVW/5d/6g6+89Y8g== - -"@next/swc-darwin-x64@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.0.tgz#b25198c3ef4c906000af49e4787a757965f760bb" - integrity sha512-iwMNFsrAPjfedjKDv9AXPAV16PWIomP3qw/FfPaxkDVRbUls7BNdofBLzkQmqxqWh93WrawLwaqyXpJuAaiwJA== - -"@next/swc-freebsd-x64@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.0.tgz#78e2213f8b703be0fef23a49507779b4a9842929" - integrity sha512-gRiAw8g3Akf6niTDLEm1Emfa7jXDjvaAj/crDO8hKASKA4Y1fS4kbi/tyWw5VtoFI4mUzRmCPmZ8eL0tBSG58A== - -"@next/swc-linux-arm-gnueabihf@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.0.tgz#80a4baf0ba699357e7420e2dea998908dcef5055" - integrity sha512-/TJZkxaIpeEwnXh6A40trgwd40C5+LJroLUOEQwMOJdavLl62PjCA6dGl1pgooWLCIb5YdBQ0EG4ylzvLwS2+Q== - -"@next/swc-linux-arm64-gnu@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.0.tgz#134a42ddea804d6bf04761607f774432c3126de6" - integrity sha512-++WAB4ElXCSOKG9H8r4ENF8EaV+w0QkrpjehmryFkQXmt5juVXz+nKDVlCRMwJU7A1O0Mie82XyEoOrf6Np1pA== - -"@next/swc-linux-arm64-musl@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.0.tgz#c781ac642ad35e0578d8a8d19c638b0f31c1a334" - integrity sha512-XrqkHi/VglEn5zs2CYK6ofJGQySrd+Lr4YdmfJ7IhsCnMKkQY1ma9Hv5THwhZVof3e+6oFHrQ9bWrw9K4WTjFA== - -"@next/swc-linux-x64-gnu@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.0.tgz#0e2235a59429eadd40ac8880aec18acdbc172a31" - integrity sha512-MyhHbAKVjpn065WzRbqpLu2krj4kHLi6RITQdD1ee+uxq9r2yg5Qe02l24NxKW+1/lkmpusl4Y5Lks7rBiJn4w== - -"@next/swc-linux-x64-musl@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.0.tgz#b0a10db0d9e16f079429588a58f71fa3c3d46178" - integrity sha512-Tz1tJZ5egE0S/UqCd5V6ZPJsdSzv/8aa7FkwFmIJ9neLS8/00za+OY5pq470iZQbPrkTwpKzmfTTIPRVD5iqDg== - -"@next/swc-win32-arm64-msvc@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.0.tgz#3063f850c9db7b774c69e9be74ad59986cf6fc34" - integrity sha512-0iRO/CPMCdCYUzuH6wXLnsfJX1ykBX4emOOvH0qIgtiZM0nVYbF8lkEyY2ph4XcsurpinS+ziWuYCXVqrOSqiw== - -"@next/swc-win32-ia32-msvc@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.0.tgz#001bbadf3d2cf006c4991f728d1d23e4d5c0e7cc" - integrity sha512-8A26RJVcJHwIKm8xo/qk2ePRquJ6WCI2keV2qOW/Qm+ZXrPXHMIWPYABae/nKN243YFBNyPiHytjX37VrcpUhg== - -"@next/swc-win32-x64-msvc@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.0.tgz#9f66664f9122ca555b96a5f2fc6e2af677bf801b" - integrity sha512-OI14ozFLThEV3ey6jE47zrzSTV/6eIMsvbwozo+XfdWqOPwQ7X00YkRx4GVMKMC0rM44oGS2gmwMKYpe4EblnA== + "integrity" "sha512-x5U5gJd7ZvrEtTFnBld9O2bUlX8opu7mIQUqRzj7KeWzBwPhrIzTTsQXAiNqsaMuaRPvyHBVW/5d/6g6+89Y8g==" + "resolved" "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.0.tgz" + "version" "12.2.0" "@ngraveio/bc-ur@^1.0.0", "@ngraveio/bc-ur@^1.1.5": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@ngraveio/bc-ur/-/bc-ur-1.1.6.tgz#8f8c75fff22f6a5e4dfbc5a6b540d7fe8f42cd39" - integrity sha512-G+2XgjXde2IOcEQeCwR250aS43/Swi7gw0FuETgJy2c3HqF8f88SXDMsIGgJlZ8jXd0GeHR4aX0MfjXf523UZg== + "integrity" "sha512-G+2XgjXde2IOcEQeCwR250aS43/Swi7gw0FuETgJy2c3HqF8f88SXDMsIGgJlZ8jXd0GeHR4aX0MfjXf523UZg==" + "resolved" "https://registry.npmjs.org/@ngraveio/bc-ur/-/bc-ur-1.1.6.tgz" + "version" "1.1.6" dependencies: "@apocentre/alias-sampling" "^0.5.3" - assert "^2.0.0" - bignumber.js "^9.0.1" - cbor-sync "^1.0.4" - crc "^3.8.0" - jsbi "^3.1.5" - sha.js "^2.4.11" - -"@noble/ed25519@^1.7.0": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.1.tgz#6899660f6fbb97798a6fbd227227c4589a454724" - integrity sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw== - -"@noble/hashes@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" - integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== + "assert" "^2.0.0" + "bignumber.js" "^9.0.1" + "cbor-sync" "^1.0.4" + "crc" "^3.8.0" + "jsbi" "^3.1.5" + "sha.js" "^2.4.11" -"@noble/hashes@^1.1.2", "@noble/hashes@~1.1.1": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" - integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== +"@noble/curves@^1.0.0": + "integrity" "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==" + "resolved" "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "@noble/hashes" "1.3.1" "@noble/hashes@^1.2.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" - integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== + "integrity" "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + "resolved" "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz" + "version" "1.3.1" + +"@noble/hashes@^1.3.0": + "integrity" "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + "resolved" "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz" + "version" "1.3.1" -"@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": - version "1.6.3" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" - integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== +"@noble/hashes@~1.1.1": + "integrity" "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==" + "resolved" "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz" + "version" "1.1.5" -"@noble/secp256k1@^1.6.3": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.0.tgz#d15357f7c227e751d90aa06b05a0e5cf993ba8c1" - integrity sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw== +"@noble/hashes@1.1.2": + "integrity" "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==" + "resolved" "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz" + "version" "1.1.2" + +"@noble/hashes@1.3.1": + "integrity" "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + "resolved" "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz" + "version" "1.3.1" + +"@noble/secp256k1@~1.6.0", "@noble/secp256k1@1.6.3": + "integrity" "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==" + "resolved" "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz" + "version" "1.6.3" "@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== + "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + "version" "2.1.5" dependencies: "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" + "run-parallel" "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" "@nodelib/fs.walk@^1.2.3", "@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== + "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + "version" "1.2.8" dependencies: "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" + "fastq" "^1.6.0" "@openzeppelin/contracts@^4.9.2": - version "4.9.2" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.2.tgz#1cb2d5e4d3360141a17dbc45094a8cad6aac16c1" - integrity sha512-mO+y6JaqXjWeMh9glYVzVu8HYPGknAAnWyxTRhGeckOruyXQMNnlcW6w/Dx9ftLeIQk6N+ZJFuVmTwF7lEIFrg== - -"@pkgr/utils@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" - integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw== - dependencies: - cross-spawn "^7.0.3" - is-glob "^4.0.3" - open "^8.4.0" - picocolors "^1.0.0" - tiny-glob "^0.2.9" - tslib "^2.4.0" + "integrity" "sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg==" + "resolved" "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.3.tgz" + "version" "4.9.3" "@polka/url@^1.0.0-next.20": - version "1.0.0-next.21" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" - integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + "integrity" "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" + "resolved" "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz" + "version" "1.0.0-next.21" "@popperjs/core@^2.11.8": - version "2.11.8" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" - integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + "integrity" "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + "resolved" "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" + "version" "2.11.8" "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + "integrity" "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + "resolved" "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" + "version" "1.1.2" "@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + "integrity" "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + "resolved" "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" + "version" "1.1.2" "@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + "integrity" "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + "resolved" "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" + "version" "2.0.4" "@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + "integrity" "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + "resolved" "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" + "version" "1.1.0" "@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + "integrity" "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==" + "resolved" "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" + "version" "1.1.0" dependencies: "@protobufjs/aspromise" "^1.1.1" "@protobufjs/inquire" "^1.1.0" "@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + "integrity" "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + "resolved" "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" + "version" "1.0.2" "@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + "integrity" "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + "resolved" "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" + "version" "1.1.0" "@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + "integrity" "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + "resolved" "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" + "version" "1.1.2" "@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + "integrity" "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + "resolved" "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" + "version" "1.1.0" "@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + "integrity" "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + "resolved" "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" + "version" "1.1.0" "@reduxjs/toolkit@^1.9.5": - version "1.9.5" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.5.tgz#d3987849c24189ca483baa7aa59386c8e52077c4" - integrity sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ== + "integrity" "sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==" + "resolved" "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz" + "version" "1.9.5" dependencies: - immer "^9.0.21" - redux "^4.2.1" - redux-thunk "^2.4.2" - reselect "^4.1.8" + "immer" "^9.0.21" + "redux" "^4.2.1" + "redux-thunk" "^2.4.2" + "reselect" "^4.1.8" "@rollup/plugin-babel@^5.2.0": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" - integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + "integrity" "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==" + "resolved" "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" + "version" "5.3.1" dependencies: "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" "@rollup/plugin-node-resolve@^11.2.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + "integrity" "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==" + "resolved" "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz" + "version" "11.2.1" dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" + "builtin-modules" "^3.1.0" + "deepmerge" "^4.2.2" + "is-module" "^1.0.0" + "resolve" "^1.19.0" "@rollup/plugin-replace@^2.4.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" - integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + "integrity" "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==" + "resolved" "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz" + "version" "2.4.2" dependencies: "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" + "magic-string" "^0.25.7" "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + "integrity" "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==" + "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" + "version" "3.1.0" dependencies: "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" + "estree-walker" "^1.0.1" + "picomatch" "^2.2.2" "@rushstack/eslint-patch@^1.1.3": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" - integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== + "integrity" "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" + "resolved" "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz" + "version" "1.2.0" "@safe-global/safe-apps-sdk@7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.11.0.tgz#2cbc164fb70141cdf4d3331ff222cd98a2529316" - integrity sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A== + "integrity" "sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A==" + "resolved" "https://registry.npmjs.org/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.11.0.tgz" + "version" "7.11.0" dependencies: "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" - ethers "^5.7.2" + "ethers" "^5.7.2" -"@safe-global/safe-core-sdk-types@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-1.9.1.tgz#81f27434dc22bb2e1f84dd35e1d0eb6cf2b7b521" - integrity sha512-EaYIUfxtOOkuIkj2ppfheACKkGUWWmgui/jeBJWniTZ/uhxHgESzJM9UksAPLgwUdbyZ5x8bNIvKpBzJLXU39w== +"@safe-global/safe-core-sdk-types@^1.9.1", "@safe-global/safe-core-sdk-types@^1.9.2": + "integrity" "sha512-BKvuYTLOlY16Rq6qCXglmnL6KxInDuXMFqZMaCzwDKiEh+uoHu3xCumG5tVtWOkCgBF4XEZXMqwZUiLcon7IsA==" + "resolved" "https://registry.npmjs.org/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-1.10.1.tgz" + "version" "1.10.1" dependencies: "@ethersproject/bignumber" "^5.7.0" "@ethersproject/contracts" "^5.7.0" - "@safe-global/safe-deployments" "^1.22.0" - web3-core "^1.8.1" - web3-utils "^1.8.1" - -"@safe-global/safe-core-sdk-types@^1.9.2": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-1.9.2.tgz#c8ae3500f5f16a9380f0270ab543f7f0718c9848" - integrity sha512-TVBoCf3bry3y6vmJXACDNOaQnHWTh8Q9G8P3wZCgUBxMc676hP9HEvF1Xrvwe0wMxevMIKyBnEV4FpZUJGSefg== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/contracts" "^5.7.0" - "@safe-global/safe-deployments" "^1.25.0" - web3-core "^1.8.1" - web3-utils "^1.8.1" + "@safe-global/safe-deployments" "^1.20.2" + "web3-core" "^1.8.1" + "web3-utils" "^1.8.1" "@safe-global/safe-core-sdk-utils@^1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-utils/-/safe-core-sdk-utils-1.7.4.tgz#810d36cf9629129a28eb1b9c6e690b163834b572" - integrity sha512-ITocwSWlFUA1K9VMP/eJiMfgbP/I9qDxAaFz7ukj5N5NZD3ihVQZkmqML6hjse5UhrfjCnfIEcLkNZhtB2XC2Q== + "integrity" "sha512-ITocwSWlFUA1K9VMP/eJiMfgbP/I9qDxAaFz7ukj5N5NZD3ihVQZkmqML6hjse5UhrfjCnfIEcLkNZhtB2XC2Q==" + "resolved" "https://registry.npmjs.org/@safe-global/safe-core-sdk-utils/-/safe-core-sdk-utils-1.7.4.tgz" + "version" "1.7.4" dependencies: "@safe-global/safe-core-sdk-types" "^1.9.2" - semver "^7.3.8" - web3-utils "^1.8.1" + "semver" "^7.3.8" + "web3-utils" "^1.8.1" "@safe-global/safe-core-sdk@^3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk/-/safe-core-sdk-3.3.4.tgz#d404287f9b910feab3e692243aaf62494ff2d2a9" - integrity sha512-tgcK7VWo66Z8632xaYDzUHQ8InPOaI10ELk1wCrO/C3QjPwxjIozbMGOMzF4RZPCSJX2YAHowAvOgmEukgSkxA== + "integrity" "sha512-tgcK7VWo66Z8632xaYDzUHQ8InPOaI10ELk1wCrO/C3QjPwxjIozbMGOMzF4RZPCSJX2YAHowAvOgmEukgSkxA==" + "resolved" "https://registry.npmjs.org/@safe-global/safe-core-sdk/-/safe-core-sdk-3.3.4.tgz" + "version" "3.3.4" dependencies: "@ethersproject/solidity" "^5.7.0" "@safe-global/safe-core-sdk-types" "^1.9.2" "@safe-global/safe-core-sdk-utils" "^1.7.4" "@safe-global/safe-deployments" "^1.25.0" - ethereumjs-util "^7.1.5" - semver "^7.3.8" - web3-utils "^1.8.1" + "ethereumjs-util" "^7.1.5" + "semver" "^7.3.8" + "web3-utils" "^1.8.1" -"@safe-global/safe-deployments@^1.22.0": - version "1.22.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.22.0.tgz#4214ac5a9ebcad7cdbf5f641b0728bc0e497286e" - integrity sha512-SmbeCRMlcO/EONxbV6nP6pM/60q0NIHVezxx5FMv0dIAkDffdbm25reonKlOk3AJYW1b/c6pZA0RbWDwFSJEkQ== +"@safe-global/safe-deployments@^1.20.2", "@safe-global/safe-deployments@^1.25.0": + "integrity" "sha512-Tw89O4/paT19ieMoiWQbqRApb0Bef/DxweS9rxodXAM5EQModkbyFXGZca+YxXE67sLvWjLr2jJUOxwze8mhGw==" + "resolved" "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.26.0.tgz" + "version" "1.26.0" dependencies: - semver "^7.3.7" - -"@safe-global/safe-deployments@^1.25.0": - version "1.25.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.25.0.tgz#882f0703cd4dd86cc19238319d77459ded09ec88" - integrity sha512-j7Ml1MVZw73XMTLbyIjo+Gvohwg5HYi8WM6b3vo+AkYEO/X4TNY8eJ0T0Awip5PO9MNyZymF3QY065uccQP53A== - dependencies: - semver "^7.3.7" + "semver" "^7.3.7" "@safe-global/safe-ethers-lib@^1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@safe-global/safe-ethers-lib/-/safe-ethers-lib-1.9.4.tgz#049989a302c6f2010c574cf3a834b0cfb9cf67c5" - integrity sha512-WhzcmNun0s0VxeVQKRqaapV0vEpdm76zZBR2Du+S+58u1r57OjZkOSL2Gru0tdwkt3FIZZtE3OhDu09M70pVkA== + "integrity" "sha512-WhzcmNun0s0VxeVQKRqaapV0vEpdm76zZBR2Du+S+58u1r57OjZkOSL2Gru0tdwkt3FIZZtE3OhDu09M70pVkA==" + "resolved" "https://registry.npmjs.org/@safe-global/safe-ethers-lib/-/safe-ethers-lib-1.9.4.tgz" + "version" "1.9.4" dependencies: "@safe-global/safe-core-sdk-types" "^1.9.2" "@safe-global/safe-core-sdk-utils" "^1.7.4" - ethers "5.7.2" - -"@safe-global/safe-gateway-typescript-sdk@^3.5.3": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.7.0.tgz#2af52f1bc73759b1b6a549fed598781c8c5fce72" - integrity sha512-3BvlUgp0oZ1Zkn7nG3wY1jvCEE4t530BjKcaa3r0qsf0whf/ez/0gmQwk7DTOGmVmvOfjj6HHikxnrUCCX+/3Q== - dependencies: - cross-fetch "^3.1.5" + "ethers" "5.7.2" -"@safe-global/safe-gateway-typescript-sdk@^3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.8.0.tgz#6a71eeab0ecd447a585531ef87cf987da30b78a0" - integrity sha512-CiGWIHgIaOdICpDxp05Jw3OPslWTu8AnL0PhrCT1xZgIO86NlMMLzkGbeycJ4FHpTjA999O791Oxp4bZPIjgHA== +"@safe-global/safe-gateway-typescript-sdk@^3.5.3", "@safe-global/safe-gateway-typescript-sdk@^3.8.0": + "integrity" "sha512-CiGWIHgIaOdICpDxp05Jw3OPslWTu8AnL0PhrCT1xZgIO86NlMMLzkGbeycJ4FHpTjA999O791Oxp4bZPIjgHA==" + "resolved" "https://registry.npmjs.org/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.8.0.tgz" + "version" "3.8.0" dependencies: - cross-fetch "^3.1.5" + "cross-fetch" "^3.1.5" "@safe-global/safe-modules-deployments@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-modules-deployments/-/safe-modules-deployments-1.1.0.tgz#e8441d6da17ed4b29a211ecb9b97fadbd7c7ca2b" - integrity sha512-UgSH/7Zcv6BJBBqoipKts6SKCPYPau9F1/arndsBYvb5Ayn28Q9cu/yiRbln2iI4VL21SIl9lcO/zRKJKl7QbQ== + "integrity" "sha512-UgSH/7Zcv6BJBBqoipKts6SKCPYPau9F1/arndsBYvb5Ayn28Q9cu/yiRbln2iI4VL21SIl9lcO/zRKJKl7QbQ==" + "resolved" "https://registry.npmjs.org/@safe-global/safe-modules-deployments/-/safe-modules-deployments-1.1.0.tgz" + "version" "1.1.0" "@safe-global/safe-react-components@^2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@safe-global/safe-react-components/-/safe-react-components-2.0.6.tgz#795a3506b84806e43a50171e71ad5bde3a36f012" - integrity sha512-KCo/zf+xcBlXhcROQbyyscsfOExLV1dTQBoKrB2zluwQOQjbsKZu3qOpnIgU/94yHATm38IOJdC8snv6fQQe0A== + "integrity" "sha512-KCo/zf+xcBlXhcROQbyyscsfOExLV1dTQBoKrB2zluwQOQjbsKZu3qOpnIgU/94yHATm38IOJdC8snv6fQQe0A==" + "resolved" "https://registry.npmjs.org/@safe-global/safe-react-components/-/safe-react-components-2.0.6.tgz" + "version" "2.0.6" dependencies: "@ethersproject/address" "^5.7.0" - ethereum-blockies-base64 "^1.0.2" + "ethereum-blockies-base64" "^1.0.2" "@scure/base@~1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" - integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + "integrity" "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" + "resolved" "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz" + "version" "1.1.1" "@scure/bip32@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.0.tgz#dea45875e7fbc720c2b4560325f1cf5d2246d95b" - integrity sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q== + "integrity" "sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==" + "resolved" "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz" + "version" "1.1.0" dependencies: "@noble/hashes" "~1.1.1" "@noble/secp256k1" "~1.6.0" "@scure/base" "~1.1.0" "@scure/bip39@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" - integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== + "integrity" "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==" + "resolved" "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz" + "version" "1.1.0" dependencies: "@noble/hashes" "~1.1.1" "@scure/base" "~1.1.0" -"@sentry/browser@7.28.1": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.28.1.tgz#c8086e26079809aa401a05d9b4a6e4df63a9c965" - integrity sha512-N8j93IcrWKWorfJ5D+RSKVAvcR4S5tIcZ/HvFPMrQWnfVa/jtJcrKThdjZYteA0wjmPiy8/D3KA8nB91yulBPA== - dependencies: - "@sentry/core" "7.28.1" - "@sentry/replay" "7.28.1" - "@sentry/types" "7.28.1" - "@sentry/utils" "7.28.1" - tslib "^1.9.3" - -"@sentry/core@7.28.1": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.28.1.tgz#c712ce17469b18b01606108817be24a99ed2116e" - integrity sha512-7wvnuvn/mrAfcugWoCG/3pqDIrUgH5t+HisMJMGw0h9Tc33KqrmqMDCQVvjlrr2pWrw/vuUCFdm8CbUHJ832oQ== - dependencies: - "@sentry/types" "7.28.1" - "@sentry/utils" "7.28.1" - tslib "^1.9.3" +"@sentry-internal/tracing@7.62.0": + "integrity" "sha512-LHT8i2c93JhQ1uBU1cqb5AIhmHPWlyovE4ZQjqEizk6Fk7jXc9L8kKhaIWELVPn8Xg6YtfGWhRBZk3ssj4JpfQ==" + "resolved" "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.62.0.tgz" + "version" "7.62.0" + dependencies: + "@sentry/core" "7.62.0" + "@sentry/types" "7.62.0" + "@sentry/utils" "7.62.0" + "tslib" "^2.4.1 || ^1.9.3" + +"@sentry/browser@7.62.0": + "integrity" "sha512-e52EPiRtPTZv+9iFIZT3n8qNozc8ymqT0ra7QwkwbVuF9fWSCOc1gzkTa9VKd/xwcGzOfglozl2O+Zz4GtoGUg==" + "resolved" "https://registry.npmjs.org/@sentry/browser/-/browser-7.62.0.tgz" + "version" "7.62.0" + dependencies: + "@sentry-internal/tracing" "7.62.0" + "@sentry/core" "7.62.0" + "@sentry/replay" "7.62.0" + "@sentry/types" "7.62.0" + "@sentry/utils" "7.62.0" + "tslib" "^2.4.1 || ^1.9.3" + +"@sentry/core@7.62.0": + "integrity" "sha512-l6n+c3mSlWa+FhT/KBrAU1BtbaLYCljf5MuGlH6NKRpnBcrZCbzk8ZuFcSND+gr2SqxycQkhEWX1zxVHPDdZxw==" + "resolved" "https://registry.npmjs.org/@sentry/core/-/core-7.62.0.tgz" + "version" "7.62.0" + dependencies: + "@sentry/types" "7.62.0" + "@sentry/utils" "7.62.0" + "tslib" "^2.4.1 || ^1.9.3" "@sentry/react@^7.28.1": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.28.1.tgz#79531b98176765a788cdf7f8f09b8ba713a95cfb" - integrity sha512-sFKK7uDREh84GyJcXDNuiQQ5VhLx7XJTOAdELxLv4HEI6BxbBRz0zNRQiKamTRkz9NmL7bZtld5TfbpOo9kijg== + "integrity" "sha512-jCQEs6lYGQdqj6XXWdR+i5IzJMgrSzTFI/TSMSeTdAeldmppg7uuRuJlBJGaWsxoiwed539Vn3kitRswn1ugeA==" + "resolved" "https://registry.npmjs.org/@sentry/react/-/react-7.62.0.tgz" + "version" "7.62.0" dependencies: - "@sentry/browser" "7.28.1" - "@sentry/types" "7.28.1" - "@sentry/utils" "7.28.1" - hoist-non-react-statics "^3.3.2" - tslib "^1.9.3" + "@sentry/browser" "7.62.0" + "@sentry/types" "7.62.0" + "@sentry/utils" "7.62.0" + "hoist-non-react-statics" "^3.3.2" + "tslib" "^2.4.1 || ^1.9.3" -"@sentry/replay@7.28.1": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.28.1.tgz#fbdd377923e082423b95e3f128cb9af9451aca70" - integrity sha512-Os0PzMjKlwtHwzTU0kfVzGzsi4Vaj3g2arCl4Qnr3b6kYTb9WOFZo/n/v56ss7Z+nZG3K8W5PisoD4MRsRJRig== +"@sentry/replay@7.62.0": + "integrity" "sha512-mSbqtV6waQAvWTG07uR211jft63HduRXdHq+1xuaKulDcZ9chOkYqOCMpL0HjRIANEiZRTDDKlIo4s+3jkY5Ug==" + "resolved" "https://registry.npmjs.org/@sentry/replay/-/replay-7.62.0.tgz" + "version" "7.62.0" dependencies: - "@sentry/core" "7.28.1" - "@sentry/types" "7.28.1" - "@sentry/utils" "7.28.1" + "@sentry/core" "7.62.0" + "@sentry/types" "7.62.0" + "@sentry/utils" "7.62.0" "@sentry/tracing@^7.28.1": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.28.1.tgz#d276e4d17a79190a88112696c73de12c209607a1" - integrity sha512-uWspnuz+7FyW8ES5lRaVA7O/YJSzMlSkvBFtgzaoKmdaueokU/sRLwlCsrdgwavG1wpm79df7R1iiSeqhaXDlw== + "integrity" "sha512-3QuThslt43m6Ui4AVAVCjlfQYeRhlRJJpFDrQd60WfRWXEeTr00VSRmIDfPUKmBFBDiXK+xXjTb/uMUM3ZeDOg==" + "resolved" "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.62.0.tgz" + "version" "7.62.0" dependencies: - "@sentry/core" "7.28.1" - "@sentry/types" "7.28.1" - "@sentry/utils" "7.28.1" - tslib "^1.9.3" + "@sentry-internal/tracing" "7.62.0" -"@sentry/types@7.28.1", "@sentry/types@^7.28.1": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.28.1.tgz#9018b4c152b475de9bedd267237393d3c9b1253d" - integrity sha512-DvSplMVrVEmOzR2M161V5+B8Up3vR71xMqJOpWTzE9TqtFJRGPtqT/5OBsNJJw1+/j2ssMcnKwbEo9Q2EGeS6g== +"@sentry/types@^7.28.1", "@sentry/types@7.62.0": + "integrity" "sha512-oPy/fIT3o2VQWLTq01R2W/jt13APYMqZCVa0IT3lF9lgxzgfTbeZl3nX2FgCcc8ntDZC0dVw03dL+wLvjPqQpQ==" + "resolved" "https://registry.npmjs.org/@sentry/types/-/types-7.62.0.tgz" + "version" "7.62.0" -"@sentry/utils@7.28.1": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.28.1.tgz#0a7b6aa4b09e91e4d1aded2a8c8dbaf818cee96e" - integrity sha512-75/jzLUO9HH09iC9TslNimGbxOP3jgn89P+q7uR+rp2fJfRExHVeKJZQdK0Ij4/SmE7TJ3Uh2r154N0INZEx1g== +"@sentry/utils@7.62.0": + "integrity" "sha512-12w+Lpvn2iaocgjf6AxhtBz7XG8iFE5aMyt9BTuQp1/7sOjtEVNHlDlGrHbtPqxNCmL2SEcmNHka1panLqWHDw==" + "resolved" "https://registry.npmjs.org/@sentry/utils/-/utils-7.62.0.tgz" + "version" "7.62.0" dependencies: - "@sentry/types" "7.28.1" - tslib "^1.9.3" + "@sentry/types" "7.62.0" + "tslib" "^2.4.1 || ^1.9.3" "@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== + "integrity" "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==" + "resolved" "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz" + "version" "4.1.4" dependencies: "@hapi/hoek" "^9.0.0" "@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + "integrity" "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + "resolved" "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" + "version" "3.0.1" "@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + "integrity" "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "resolved" "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" + "version" "2.0.0" "@sinclair/typebox@^0.24.1": - version "0.24.51" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" - integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + "integrity" "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" + "version" "0.24.51" "@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + "integrity" "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" + "version" "4.6.0" "@sinonjs/commons@^1.7.0": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" - integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== + "integrity" "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==" + "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz" + "version" "1.8.6" dependencies: - type-detect "4.0.8" + "type-detect" "4.0.8" "@sinonjs/fake-timers@^9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" - integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== + "integrity" "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==" + "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz" + "version" "9.1.2" dependencies: "@sinonjs/commons" "^1.7.0" "@solana/buffer-layout@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" - integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + "integrity" "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==" + "resolved" "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz" + "version" "4.0.1" dependencies: - buffer "~6.0.3" + "buffer" "~6.0.3" "@solana/web3.js@^1.70.1": - version "1.70.3" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.70.3.tgz#44040a78d1f86ee6a0a9dbe391b5f891bb404265" - integrity sha512-9JAFXAWB3yhUHnoahzemTz4TcsGqmITPArNlm9795e+LA/DYkIEJIXIosV4ImzDMfqolymZeRgG3O8ewNgYTTA== + "integrity" "sha512-qhpnyIlrj/4Czw1dBFZK6KgZBk5FwuJhvMl0C7m94jhl90yDC8b6w4svKwPjhB+OOrdQAzHyRp0+ocEs/Liw7w==" + "resolved" "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.78.3.tgz" + "version" "1.78.3" dependencies: - "@babel/runtime" "^7.12.5" - "@noble/ed25519" "^1.7.0" - "@noble/hashes" "^1.1.2" - "@noble/secp256k1" "^1.6.3" + "@babel/runtime" "^7.22.6" + "@noble/curves" "^1.0.0" + "@noble/hashes" "^1.3.0" "@solana/buffer-layout" "^4.0.0" - agentkeepalive "^4.2.1" - bigint-buffer "^1.1.5" - bn.js "^5.0.0" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.1" - fast-stable-stringify "^1.0.0" - jayson "^3.4.4" - node-fetch "2" - rpc-websockets "^7.5.0" - superstruct "^0.14.2" + "agentkeepalive" "^4.3.0" + "bigint-buffer" "^1.1.5" + "bn.js" "^5.2.1" + "borsh" "^0.7.0" + "bs58" "^4.0.1" + "buffer" "6.0.3" + "fast-stable-stringify" "^1.0.0" + "jayson" "^4.1.0" + "node-fetch" "^2.6.12" + "rpc-websockets" "^7.5.1" + "superstruct" "^0.14.2" "@stablelib/aead@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" - integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== + "integrity" "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==" + "resolved" "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz" + "version" "1.0.1" "@stablelib/binary@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" - integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== + "integrity" "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==" + "resolved" "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz" + "version" "1.0.1" dependencies: "@stablelib/int" "^1.0.1" "@stablelib/bytes@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" - integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== + "integrity" "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" + "resolved" "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz" + "version" "1.0.1" + +"@stablelib/chacha@^1.0.1": + "integrity" "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==" + "resolved" "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" "@stablelib/chacha20poly1305@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" - integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== + "integrity" "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==" + "resolved" "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz" + "version" "1.0.1" dependencies: "@stablelib/aead" "^1.0.1" "@stablelib/binary" "^1.0.1" @@ -3472,165 +3383,157 @@ "@stablelib/poly1305" "^1.0.1" "@stablelib/wipe" "^1.0.1" -"@stablelib/chacha@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" - integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - "@stablelib/constant-time@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" - integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== + "integrity" "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" + "resolved" "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz" + "version" "1.0.1" "@stablelib/ed25519@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" - integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== + "integrity" "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==" + "resolved" "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz" + "version" "1.0.3" dependencies: "@stablelib/random" "^1.0.2" "@stablelib/sha512" "^1.0.1" "@stablelib/wipe" "^1.0.1" "@stablelib/hash@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" - integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== + "integrity" "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" + "resolved" "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz" + "version" "1.0.1" "@stablelib/hkdf@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" - integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g== + "integrity" "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==" + "resolved" "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz" + "version" "1.0.1" dependencies: "@stablelib/hash" "^1.0.1" "@stablelib/hmac" "^1.0.1" "@stablelib/wipe" "^1.0.1" "@stablelib/hmac@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hmac/-/hmac-1.0.1.tgz#3d4c1b8cf194cb05d28155f0eed8a299620a07ec" - integrity sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA== + "integrity" "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==" + "resolved" "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz" + "version" "1.0.1" dependencies: "@stablelib/constant-time" "^1.0.1" "@stablelib/hash" "^1.0.1" "@stablelib/wipe" "^1.0.1" "@stablelib/int@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" - integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== + "integrity" "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" + "resolved" "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz" + "version" "1.0.1" "@stablelib/keyagreement@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" - integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== + "integrity" "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==" + "resolved" "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz" + "version" "1.0.1" dependencies: "@stablelib/bytes" "^1.0.1" "@stablelib/poly1305@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc" - integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA== + "integrity" "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==" + "resolved" "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz" + "version" "1.0.1" dependencies: "@stablelib/constant-time" "^1.0.1" "@stablelib/wipe" "^1.0.1" "@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" - integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== + "integrity" "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==" + "resolved" "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz" + "version" "1.0.2" dependencies: "@stablelib/binary" "^1.0.1" "@stablelib/wipe" "^1.0.1" "@stablelib/sha256@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" - integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== + "integrity" "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==" + "resolved" "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz" + "version" "1.0.1" dependencies: "@stablelib/binary" "^1.0.1" "@stablelib/hash" "^1.0.1" "@stablelib/wipe" "^1.0.1" "@stablelib/sha512@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f" - integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw== + "integrity" "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==" + "resolved" "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz" + "version" "1.0.1" dependencies: "@stablelib/binary" "^1.0.1" "@stablelib/hash" "^1.0.1" "@stablelib/wipe" "^1.0.1" "@stablelib/wipe@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" - integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== + "integrity" "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" + "resolved" "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz" + "version" "1.0.1" "@stablelib/x25519@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" - integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== + "integrity" "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==" + "resolved" "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz" + "version" "1.0.3" dependencies: "@stablelib/keyagreement" "^1.0.1" "@stablelib/random" "^1.0.2" "@stablelib/wipe" "^1.0.1" "@surma/rollup-plugin-off-main-thread@^2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" - integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== + "integrity" "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==" + "resolved" "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz" + "version" "2.2.3" dependencies: - ejs "^3.1.6" - json5 "^2.2.0" - magic-string "^0.25.0" - string.prototype.matchall "^4.0.6" + "ejs" "^3.1.6" + "json5" "^2.2.0" + "magic-string" "^0.25.0" + "string.prototype.matchall" "^4.0.6" "@svgr/babel-plugin-add-jsx-attribute@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" - integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== + "integrity" "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz" + "version" "6.5.1" "@svgr/babel-plugin-remove-jsx-attribute@*": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz#652bfd4ed0a0699843585cda96faeb09d6e1306e" - integrity sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA== + "integrity" "sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz" + "version" "6.5.0" "@svgr/babel-plugin-remove-jsx-empty-expression@*": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz#4b78994ab7d39032c729903fc2dd5c0fa4565cb8" - integrity sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw== + "integrity" "sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz" + "version" "6.5.0" "@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" - integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== + "integrity" "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz" + "version" "6.5.1" "@svgr/babel-plugin-svg-dynamic-title@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" - integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== + "integrity" "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz" + "version" "6.5.1" "@svgr/babel-plugin-svg-em-dimensions@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" - integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== + "integrity" "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz" + "version" "6.5.1" "@svgr/babel-plugin-transform-react-native-svg@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" - integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== + "integrity" "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz" + "version" "6.5.1" "@svgr/babel-plugin-transform-svg-component@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" - integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== + "integrity" "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz" + "version" "6.5.1" "@svgr/babel-preset@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" - integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== + "integrity" "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==" + "resolved" "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz" + "version" "6.5.1" dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" "@svgr/babel-plugin-remove-jsx-attribute" "*" @@ -3641,48 +3544,48 @@ "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" "@svgr/babel-plugin-transform-svg-component" "^6.5.1" -"@svgr/core@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" - integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== +"@svgr/core@*", "@svgr/core@^6.0.0", "@svgr/core@^6.5.1": + "integrity" "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==" + "resolved" "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz" + "version" "6.5.1" dependencies: "@babel/core" "^7.19.6" "@svgr/babel-preset" "^6.5.1" "@svgr/plugin-jsx" "^6.5.1" - camelcase "^6.2.0" - cosmiconfig "^7.0.1" + "camelcase" "^6.2.0" + "cosmiconfig" "^7.0.1" "@svgr/hast-util-to-babel-ast@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" - integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== + "integrity" "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==" + "resolved" "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz" + "version" "6.5.1" dependencies: "@babel/types" "^7.20.0" - entities "^4.4.0" + "entities" "^4.4.0" "@svgr/plugin-jsx@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" - integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== + "integrity" "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==" + "resolved" "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz" + "version" "6.5.1" dependencies: "@babel/core" "^7.19.6" "@svgr/babel-preset" "^6.5.1" "@svgr/hast-util-to-babel-ast" "^6.5.1" - svg-parser "^2.0.4" + "svg-parser" "^2.0.4" "@svgr/plugin-svgo@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" - integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== + "integrity" "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==" + "resolved" "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz" + "version" "6.5.1" dependencies: - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - svgo "^2.8.0" + "cosmiconfig" "^7.0.1" + "deepmerge" "^4.2.2" + "svgo" "^2.8.0" "@svgr/webpack@^6.3.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8" - integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA== + "integrity" "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==" + "resolved" "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz" + "version" "6.5.1" dependencies: "@babel/core" "^7.19.6" "@babel/plugin-transform-react-constant-elements" "^7.18.12" @@ -3694,286 +3597,291 @@ "@svgr/plugin-svgo" "^6.5.1" "@swc/helpers@0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.2.tgz#ed1f6997ffbc22396665d9ba74e2a5c0a2d782f8" - integrity sha512-556Az0VX7WR6UdoTn4htt/l3zPQ7bsQWK+HqdG4swV7beUCxo/BqmvbOpUkTIm/9ih86LIf1qsUnywNL3obGHw== + "integrity" "sha512-556Az0VX7WR6UdoTn4htt/l3zPQ7bsQWK+HqdG4swV7beUCxo/BqmvbOpUkTIm/9ih86LIf1qsUnywNL3obGHw==" + "resolved" "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.2.tgz" + "version" "0.4.2" dependencies: - tslib "^2.4.0" + "tslib" "^2.4.0" "@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + "integrity" "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==" + "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" + "version" "4.0.6" dependencies: - defer-to-connect "^2.0.0" + "defer-to-connect" "^2.0.0" "@szmarczak/http-timer@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" - integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + "integrity" "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==" + "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" + "version" "5.0.1" dependencies: - defer-to-connect "^2.0.1" + "defer-to-connect" "^2.0.1" "@testing-library/cypress@^8.0.7": - version "8.0.7" - resolved "https://registry.yarnpkg.com/@testing-library/cypress/-/cypress-8.0.7.tgz#18315eba3cf8852808afadf122e4858406384015" - integrity sha512-3HTV725rOS+YHve/gD9coZp/UcPK5xhr4H0GMnq/ni6USdtzVtSOG9WBFtd8rYnrXk8rrGD+0toRFYouJNIG0Q== + "integrity" "sha512-3HTV725rOS+YHve/gD9coZp/UcPK5xhr4H0GMnq/ni6USdtzVtSOG9WBFtd8rYnrXk8rrGD+0toRFYouJNIG0Q==" + "resolved" "https://registry.npmjs.org/@testing-library/cypress/-/cypress-8.0.7.tgz" + "version" "8.0.7" dependencies: "@babel/runtime" "^7.14.6" "@testing-library/dom" "^8.1.0" -"@testing-library/dom@^8.1.0", "@testing-library/dom@^8.5.0": - version "8.19.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.19.0.tgz#bd3f83c217ebac16694329e413d9ad5fdcfd785f" - integrity sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A== +"@testing-library/dom@^8.1.0", "@testing-library/dom@^8.5.0", "@testing-library/dom@>=7.21.4": + "integrity" "sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==" + "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz" + "version" "8.19.0" dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^4.2.0" - aria-query "^5.0.0" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.4.4" - pretty-format "^27.0.2" + "aria-query" "^5.0.0" + "chalk" "^4.1.0" + "dom-accessibility-api" "^0.5.9" + "lz-string" "^1.4.4" + "pretty-format" "^27.0.2" "@testing-library/jest-dom@^5.16.5": - version "5.16.5" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" - integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== + "integrity" "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==" + "resolved" "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz" + "version" "5.16.5" dependencies: "@adobe/css-tools" "^4.0.1" "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^5.0.0" - chalk "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" + "aria-query" "^5.0.0" + "chalk" "^3.0.0" + "css.escape" "^1.5.1" + "dom-accessibility-api" "^0.5.6" + "lodash" "^4.17.15" + "redent" "^3.0.0" "@testing-library/react@^13.3.0": - version "13.4.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.4.0.tgz#6a31e3bf5951615593ad984e96b9e5e2d9380966" - integrity sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw== + "integrity" "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==" + "resolved" "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz" + "version" "13.4.0" dependencies: "@babel/runtime" "^7.12.5" "@testing-library/dom" "^8.5.0" "@types/react-dom" "^18.0.0" "@testing-library/user-event@^14.4.2": - version "14.4.3" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.4.3.tgz#af975e367743fa91989cd666666aec31a8f50591" - integrity sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q== + "integrity" "sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==" + "resolved" "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.4.3.tgz" + "version" "14.4.3" "@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "integrity" "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" + "version" "2.0.0" -"@trezor/analytics@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@trezor/analytics/-/analytics-1.0.2.tgz#c402665c505e58a067aca15cf6537d7a604f5a1b" - integrity sha512-9T+2j/X+TRrzrvHM0bNDS1mO/Rkq/6LGqtaTOC59PJtTOjDLGpP4fiKVCjLNtVg8qQBpXlBlqH89BCPV1q8ftQ== +"@trezor/analytics@1.0.3": + "integrity" "sha512-7a0bHkY/+z6cDRoh1ZkhffHGw7iaVayD1UpP3fm4lPzrRpGQeH9ksRg8ZT0mBs6Pj+TLETzZRrS5ZBpDK0Piug==" + "resolved" "https://registry.npmjs.org/@trezor/analytics/-/analytics-1.0.3.tgz" + "version" "1.0.3" dependencies: - "@trezor/utils" "9.0.8" + "@trezor/utils" "9.0.9" "@trezor/blockchain-link-types@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@trezor/blockchain-link-types/-/blockchain-link-types-1.0.2.tgz#00e254acef04c7575e8d0efe2f05e17d1fb6ef52" - integrity sha512-ON3A2Anu5k3BkMFtG0LWO48ZxikyWgSORqQ12ki3KDbTbqZV5BwAZTeFchUq8cv1kDlqkG7AtMV2nY9G3KfYOA== + "integrity" "sha512-ON3A2Anu5k3BkMFtG0LWO48ZxikyWgSORqQ12ki3KDbTbqZV5BwAZTeFchUq8cv1kDlqkG7AtMV2nY9G3KfYOA==" + "resolved" "https://registry.npmjs.org/@trezor/blockchain-link-types/-/blockchain-link-types-1.0.2.tgz" + "version" "1.0.2" "@trezor/blockchain-link-utils@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.0.3.tgz#e0fdc9ceb3b357a926f9c766fbea0b2f74886adb" - integrity sha512-/mti1QY8n053P11wQwnQyBAASS+nNVBKu2kSZo8KAESwdnFGcnZwH0okXHTlUQZFud5ppg9EYJk9mpk0jf91tQ== + "integrity" "sha512-/mti1QY8n053P11wQwnQyBAASS+nNVBKu2kSZo8KAESwdnFGcnZwH0okXHTlUQZFud5ppg9EYJk9mpk0jf91tQ==" + "resolved" "https://registry.npmjs.org/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.0.3.tgz" + "version" "1.0.3" dependencies: "@trezor/utils" "9.0.8" - bignumber.js "^9.1.1" + "bignumber.js" "^9.1.1" -"@trezor/blockchain-link@2.1.12": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@trezor/blockchain-link/-/blockchain-link-2.1.12.tgz#0f2253c917b4e998cc32c5e8c8ac33daf135f7f3" - integrity sha512-X5YHAI4w9XjuivNO2J30K9wyuiUH/p9DM2lrsjudJ3sImxA0EX9ypLIY67lVYSmUzutL64KGcbdWPgw7f0AtuA== +"@trezor/blockchain-link@2.1.13": + "integrity" "sha512-5yRvP8cFKjYd3FBRmUS6VJxHRLm8IuQg237hcRF8RbYRgW6ev7dwkjYmcVYz2iWXGaz+/FV8G0/xB/pmHhrpPQ==" + "resolved" "https://registry.npmjs.org/@trezor/blockchain-link/-/blockchain-link-2.1.13.tgz" + "version" "2.1.13" dependencies: "@trezor/blockchain-link-types" "1.0.2" "@trezor/blockchain-link-utils" "1.0.3" - "@trezor/utils" "9.0.8" - "@trezor/utxo-lib" "1.0.6" + "@trezor/utils" "9.0.9" + "@trezor/utxo-lib" "1.0.7" "@types/web" "^0.0.99" - bignumber.js "^9.1.1" - events "^3.3.0" - ripple-lib "^1.10.1" - socks-proxy-agent "6.1.1" - ws "7.5.9" + "bignumber.js" "^9.1.1" + "events" "^3.3.0" + "ripple-lib" "^1.10.1" + "socks-proxy-agent" "6.1.1" + "ws" "7.5.9" -"@trezor/connect-analytics@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@trezor/connect-analytics/-/connect-analytics-1.0.1.tgz#bba82fd020ea4def94fe58fd8a352e1bca56137b" - integrity sha512-GZYplHNX6Ok7TOH6hMmclwAzTs8m7WDxyzwjImKumVGC0wCRK9gG0k62Pfo/LGjW5LC+hXzz9Mh1B61NveySig== +"@trezor/connect-analytics@1.0.2": + "integrity" "sha512-eUAWb1nc5wGAKmNVTmiOc9DlFr+mbG+1JevzVUFB2q3VLQzcjf0st+RWE5DuDnPUVJiJFxBQWTqWlzACtq/HzQ==" + "resolved" "https://registry.npmjs.org/@trezor/connect-analytics/-/connect-analytics-1.0.2.tgz" + "version" "1.0.2" dependencies: - "@trezor/analytics" "1.0.2" + "@trezor/analytics" "1.0.3" -"@trezor/connect-common@0.0.15": - version "0.0.15" - resolved "https://registry.yarnpkg.com/@trezor/connect-common/-/connect-common-0.0.15.tgz#c7c5985da6ed2a80b95c7b03e5eca4a26af8160e" - integrity sha512-dv+oBc1HhSvdd8+92999H72dkkuITSHPJSL1vhXvzVctlEBGvB87Y6dlEaMd+7JrLmsFBNo21gX+AU1Qc9kB7g== +"@trezor/connect-common@0.0.16": + "integrity" "sha512-DPGWhNYTe8SQO/XzqvVtY5YCOtRGHChN01J2Z5p3xD6aFGceou7SE0ROOcqU0ceSzMgl13+I9I0qXq/OLTGBGw==" + "resolved" "https://registry.npmjs.org/@trezor/connect-common/-/connect-common-0.0.16.tgz" + "version" "0.0.16" dependencies: - "@trezor/env-utils" "1.0.1" + "@trezor/env-utils" "1.0.2" "@trezor/connect-web@^9.0.8": - version "9.0.10" - resolved "https://registry.yarnpkg.com/@trezor/connect-web/-/connect-web-9.0.10.tgz#629742208f0e7cfc8210abf0d0e74a9d9b84615d" - integrity sha512-G7YZw5ERYVCgwIXBV3LgGTG4VtlLrcBJg8r5GY3eK4jBjU5YWRRg8eO+8yfAbym/u0HSCkfl4CUI5spBHrd8ag== - dependencies: - "@trezor/connect" "9.0.10" - "@trezor/utils" "9.0.8" - events "^3.3.0" - -"@trezor/connect@9.0.10": - version "9.0.10" - resolved "https://registry.yarnpkg.com/@trezor/connect/-/connect-9.0.10.tgz#223725c175b30c64ea8ad8be0f63cc933b0aae03" - integrity sha512-0QtbBotukjL9klPeetfnmg4cJbmfP/RXjqc5XGRhsvHlqxOIBD+un3NLAD5MCeiSetdF0BSf2aCrHod77SRUgg== - dependencies: - "@trezor/blockchain-link" "2.1.12" - "@trezor/connect-analytics" "1.0.1" - "@trezor/connect-common" "0.0.15" - "@trezor/transport" "1.1.11" - "@trezor/utils" "9.0.8" - "@trezor/utxo-lib" "1.0.6" - bignumber.js "^9.1.1" - blakejs "^1.2.1" - cross-fetch "^3.1.5" - events "^3.3.0" - randombytes "2.1.0" - tslib "2.5.0" - -"@trezor/env-utils@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@trezor/env-utils/-/env-utils-1.0.1.tgz#10e0c20a9e7d8aa3add726efacdc1cf716bfced7" - integrity sha512-ZGiGrJmWqqBz+WMU/Ry1tge93baqLsbu16vcweooYv/ZkJObqSy9VNkHd2601K2Mygbk7zv6YJOkHgNgu8CwJA== - dependencies: - ua-parser-js "^1.0.34" - -"@trezor/transport@1.1.11": - version "1.1.11" - resolved "https://registry.yarnpkg.com/@trezor/transport/-/transport-1.1.11.tgz#1d04dd0c30c6e96cc87d7701d74bf823520be8f2" - integrity sha512-KHWPAiODA92H7PW7s/za/NfPjoiYftu4V/5ZiKrrkhZmHjrXp7b/e0tHLOP/u1zukysJba8+enNKj0RvLoftAg== - dependencies: - "@trezor/utils" "9.0.8" - bytebuffer "^5.0.1" - json-stable-stringify "^1.0.2" - long "^4.0.0" - prettier "2.8.7" - protobufjs "6.11.3" + "integrity" "sha512-9398lmzxPGm/aZGM9OvkjasQ4kUQQs5bYz79eDtFz3jf24SyMM1yf2KvdvdssIyIfvcAbyJLZ+DK1qw2HxWn/Q==" + "resolved" "https://registry.npmjs.org/@trezor/connect-web/-/connect-web-9.0.11.tgz" + "version" "9.0.11" + dependencies: + "@trezor/connect" "9.0.11" + "@trezor/utils" "9.0.9" + "events" "^3.3.0" + +"@trezor/connect@9.0.11": + "integrity" "sha512-8fifMt3xtqIQ4122aHNb8e3l0uisVujsWXUJ/LQS6N+t6SnilohBZ8nfzUBQaCxo2JuorLuXmxQ1ngNpaL45TA==" + "resolved" "https://registry.npmjs.org/@trezor/connect/-/connect-9.0.11.tgz" + "version" "9.0.11" + dependencies: + "@trezor/blockchain-link" "2.1.13" + "@trezor/connect-analytics" "1.0.2" + "@trezor/connect-common" "0.0.16" + "@trezor/transport" "1.1.12" + "@trezor/utils" "9.0.9" + "@trezor/utxo-lib" "1.0.7" + "bignumber.js" "^9.1.1" + "blakejs" "^1.2.1" + "cross-fetch" "^3.1.6" + "events" "^3.3.0" + "randombytes" "2.1.0" + "tslib" "2.5.2" + +"@trezor/env-utils@1.0.2": + "integrity" "sha512-fPrX6EjaMHnRwAje7h2H3Qgu5/sBoewE8441j8cbBzxfJRgRuQJYZaGCy7lDALjxEwp7g02ZZ/FWavIhWGZIcQ==" + "resolved" "https://registry.npmjs.org/@trezor/env-utils/-/env-utils-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "ua-parser-js" "^1.0.34" + +"@trezor/transport@1.1.12": + "integrity" "sha512-RInOSOmgJ383QOBJbPzjyQW9BoWZ6HTneUmPkdzqydLxn9eyD3Ui13+W9fWFmxoMmljxJKct93twgxgHKUkhCg==" + "resolved" "https://registry.npmjs.org/@trezor/transport/-/transport-1.1.12.tgz" + "version" "1.1.12" + dependencies: + "@trezor/utils" "9.0.9" + "bytebuffer" "^5.0.1" + "json-stable-stringify" "^1.0.2" + "long" "^4.0.0" + "prettier" "2.8.7" + "protobufjs" "6.11.3" "@trezor/utils@9.0.8": - version "9.0.8" - resolved "https://registry.yarnpkg.com/@trezor/utils/-/utils-9.0.8.tgz#0fe7fd954869c309c22662908077c4800467caa6" - integrity sha512-XsX+VXP2UxanYo+LbY7zcjeIumEWFs5lArTAfK1fdWTIdiV8Od2htNO+D9lnCytvuu04LeJx7RihxinsQQVDvA== - -"@trezor/utxo-lib@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@trezor/utxo-lib/-/utxo-lib-1.0.6.tgz#22f4ce6b2af3bb9ef4fa2ccf3612a8f8e2d4baae" - integrity sha512-aozw+Xg/LABJxnsKCA/NNnahYETlF8fNGgdNQb04vTI3kUd2L9hD/oT1wCl7L65A3WmL/oh3twCzK07cJJOR2Q== - dependencies: - "@trezor/utils" "9.0.8" - bchaddrjs "^0.5.2" - bech32 "^2.0.0" - bip66 "^1.1.5" - bitcoin-ops "^1.4.1" - blake-hash "^2.0.0" - blakejs "^1.2.1" - bn.js "^5.2.1" - bs58 "^5.0.0" - bs58check "^3.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - int64-buffer "^1.0.1" - pushdata-bitcoin "^1.0.1" - tiny-secp256k1 "^1.1.6" - typeforce "^1.18.0" - varuint-bitcoin "^1.1.2" - wif "^2.0.6" + "integrity" "sha512-XsX+VXP2UxanYo+LbY7zcjeIumEWFs5lArTAfK1fdWTIdiV8Od2htNO+D9lnCytvuu04LeJx7RihxinsQQVDvA==" + "resolved" "https://registry.npmjs.org/@trezor/utils/-/utils-9.0.8.tgz" + "version" "9.0.8" + +"@trezor/utils@9.0.9": + "integrity" "sha512-+jzHy+YG3zJsnB11YfudT1a5u5lcwNX/tKoW9VmPU+isuW725M6uUOL+MSgW1aHucCJPyBAp0XUUssLE/ifqBw==" + "resolved" "https://registry.npmjs.org/@trezor/utils/-/utils-9.0.9.tgz" + "version" "9.0.9" + +"@trezor/utxo-lib@1.0.7": + "integrity" "sha512-brC5xqGgT6yloHz3RWUK1CdEYkOSEjrhYM18GAzAaqS4MBULWDBPDD5Qt2XcYTOaoR/+8PKUXHdHVm+olbRSlA==" + "resolved" "https://registry.npmjs.org/@trezor/utxo-lib/-/utxo-lib-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "@trezor/utils" "9.0.9" + "bchaddrjs" "^0.5.2" + "bech32" "^2.0.0" + "bip66" "^1.1.5" + "bitcoin-ops" "^1.4.1" + "blake-hash" "^2.0.0" + "blakejs" "^1.2.1" + "bn.js" "^5.2.1" + "bs58" "^5.0.0" + "bs58check" "^3.0.1" + "create-hash" "^1.2.0" + "create-hmac" "^1.1.7" + "int64-buffer" "^1.0.1" + "pushdata-bitcoin" "^1.0.1" + "tiny-secp256k1" "^1.1.6" + "typeforce" "^1.18.0" + "varuint-bitcoin" "^1.1.2" + "wif" "^2.0.6" "@truffle/hdwallet-provider@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-2.1.4.tgz#e1a2d5ffc569c930a969aac928af27e256f55d80" - integrity sha512-oVpiQSu3JtaDuVHKLZ9Is3hxoCVFwlMjflCJyqTBXMhLmPMPpij4paxaUvXTpeUzGZJJGcBl2DVFhnmPshGrJQ== + "integrity" "sha512-wh93LLumxH8+pPY11DrsNVHjSO3AqMkwPNAWqEi0hRw2BH4QzDhEf2G88GDWJPZPY/zGFSxYHDACtJmUUfRwYw==" + "resolved" "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-2.1.13.tgz" + "version" "2.1.13" dependencies: "@ethereumjs/common" "^2.4.0" "@ethereumjs/tx" "^3.3.0" "@metamask/eth-sig-util" "4.0.1" - "@truffle/hdwallet" "^0.1.1" + "@truffle/hdwallet" "^0.1.3" "@types/ethereum-protocol" "^1.0.0" "@types/web3" "1.0.20" "@types/web3-provider-engine" "^14.0.0" - ethereum-cryptography "1.1.2" - ethereum-protocol "^1.0.1" - ethereumjs-util "^7.1.5" - web3 "1.8.1" - web3-provider-engine "16.0.3" + "ethereum-cryptography" "1.1.2" + "ethereum-protocol" "^1.0.1" + "ethereumjs-util" "^7.1.5" + "web3" "1.10.0" + "web3-provider-engine" "16.0.3" -"@truffle/hdwallet@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@truffle/hdwallet/-/hdwallet-0.1.1.tgz#52f33cdd53502397c09ebf7215b4207c4473362f" - integrity sha512-hKAZbB6HBo0L4hV/IsulCDiHF5eXCle8TuAhxe1auCIkwS6Dz6Z4BoA3JzekRwcj+dc1bibjdP1A4XOTo2ayqw== +"@truffle/hdwallet@^0.1.3": + "integrity" "sha512-kuikvLE+4WvVIj91CSrRVN92QGh+1Vlx8PRkxKQlvZjjE3J5NmvwfAs7b9poTeC4c6YfoHqwike1kfd1qYXO1w==" + "resolved" "https://registry.npmjs.org/@truffle/hdwallet/-/hdwallet-0.1.3.tgz" + "version" "0.1.3" dependencies: - ethereum-cryptography "1.1.2" - keccak "3.0.2" - secp256k1 "4.0.3" + "ethereum-cryptography" "1.1.2" + "keccak" "3.0.2" + "secp256k1" "4.0.3" "@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + "integrity" "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + "version" "0.2.0" "@ts-morph/common@~0.12.3": - version "0.12.3" - resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.12.3.tgz#a96e250217cd30e480ab22ec6a0ebbe65fd784ff" - integrity sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w== + "integrity" "sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w==" + "resolved" "https://registry.npmjs.org/@ts-morph/common/-/common-0.12.3.tgz" + "version" "0.12.3" dependencies: - fast-glob "^3.2.7" - minimatch "^3.0.4" - mkdirp "^1.0.4" - path-browserify "^1.0.1" + "fast-glob" "^3.2.7" + "minimatch" "^3.0.4" + "mkdirp" "^1.0.4" + "path-browserify" "^1.0.1" "@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + "integrity" "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + "version" "1.0.9" "@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + "integrity" "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + "version" "1.0.11" "@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + "integrity" "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + "version" "1.0.3" "@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + "integrity" "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" + "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" + "version" "1.0.3" "@typechain/ethers-v5@^10.2.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz#68f5963efb5214cb2d881477228e4b5b315473e1" - integrity sha512-ikaq0N/w9fABM+G01OFmU3U3dNnyRwEahkdvi9mqy1a3XwKiPZaF/lu54OcNaEWnpvEYyhhS0N7buCtLQqC92w== + "integrity" "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==" + "resolved" "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz" + "version" "10.2.1" dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" + "lodash" "^4.17.15" + "ts-essentials" "^7.0.1" "@types/aria-query@^4.2.0": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" - integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== + "integrity" "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" + "resolved" "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" + "version" "4.2.2" -"@types/babel__core@^7.1.14": - version "7.1.20" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359" - integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ== +"@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9": + "integrity" "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==" + "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz" + "version" "7.1.20" dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -3982,45 +3890,45 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + "integrity" "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==" + "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" + "version" "7.6.4" dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + "integrity" "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==" + "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" + "version" "7.4.1" dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" - integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== + "integrity" "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==" + "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz" + "version" "7.18.3" dependencies: "@babel/types" "^7.3.0" -"@types/bn.js@*", "@types/bn.js@5.1.1", "@types/bn.js@^5.1.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" - integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== +"@types/bn.js@*", "@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1", "@types/bn.js@5.1.1": + "integrity" "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==" + "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz" + "version" "5.1.1" dependencies: "@types/node" "*" "@types/bn.js@^4.11.3": - version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + "integrity" "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==" + "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz" + "version" "4.11.6" dependencies: "@types/node" "*" "@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" - integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + "integrity" "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==" + "resolved" "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" + "version" "6.0.3" dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "^3.1.4" @@ -4028,503 +3936,523 @@ "@types/responselike" "^1.0.0" "@types/connect@^3.4.33": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==" + "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" + "version" "3.4.35" dependencies: "@types/node" "*" +"@types/debug@^4.1.7": + "integrity" "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==" + "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz" + "version" "4.1.8" + dependencies: + "@types/ms" "*" + "@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "integrity" "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" + "version" "0.0.39" "@types/ethereum-protocol@*", "@types/ethereum-protocol@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/ethereum-protocol/-/ethereum-protocol-1.0.2.tgz#e765d4c6f4b5ebe906932bd20333e307c56a9bc7" - integrity sha512-Ri/hwt4UckZlF7eqhhAQcXsNvcgQmSJOKZteLco1/5NsRcneW/cJuQcrQNILN2Ohs9WUQjeGW3ZRRNqkEVMzuQ== + "integrity" "sha512-Ri/hwt4UckZlF7eqhhAQcXsNvcgQmSJOKZteLco1/5NsRcneW/cJuQcrQNILN2Ohs9WUQjeGW3ZRRNqkEVMzuQ==" + "resolved" "https://registry.npmjs.org/@types/ethereum-protocol/-/ethereum-protocol-1.0.2.tgz" + "version" "1.0.2" dependencies: - bignumber.js "7.2.1" + "bignumber.js" "7.2.1" "@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + "integrity" "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==" + "resolved" "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" + "version" "7.2.0" dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/graceful-fs@^4.1.3": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + "integrity" "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==" + "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" + "version" "4.1.5" dependencies: "@types/node" "*" "@types/hoist-non-react-statics@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" - integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + "integrity" "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==" + "resolved" "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz" + "version" "3.3.1" dependencies: "@types/react" "*" - hoist-non-react-statics "^3.3.0" + "hoist-non-react-statics" "^3.3.0" "@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + "integrity" "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + "resolved" "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz" + "version" "4.0.1" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + "version" "2.0.4" "@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + "version" "3.0.0" dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" + "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + "version" "3.0.1" dependencies: "@types/istanbul-lib-report" "*" "@types/jest@*": - version "29.2.4" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.2.4.tgz#9c155c4b81c9570dbd183eb8604aa0ae80ba5a5b" - integrity sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A== + "integrity" "sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A==" + "resolved" "https://registry.npmjs.org/@types/jest/-/jest-29.2.4.tgz" + "version" "29.2.4" dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" + "expect" "^29.0.0" + "pretty-format" "^29.0.0" "@types/jest@^28.1.6": - version "28.1.8" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.8.tgz#6936409f3c9724ea431efd412ea0238a0f03b09b" - integrity sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw== + "integrity" "sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==" + "resolved" "https://registry.npmjs.org/@types/jest/-/jest-28.1.8.tgz" + "version" "28.1.8" dependencies: - expect "^28.0.0" - pretty-format "^28.0.0" + "expect" "^28.0.0" + "pretty-format" "^28.0.0" "@types/js-cookie@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-3.0.2.tgz#451eaeece64c6bdac8b2dde0caab23b085899e0d" - integrity sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA== + "integrity" "sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA==" + "resolved" "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.2.tgz" + "version" "3.0.2" "@types/jsdom@^16.2.4": - version "16.2.15" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.15.tgz#6c09990ec43b054e49636cba4d11d54367fc90d6" - integrity sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ== + "integrity" "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==" + "resolved" "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz" + "version" "16.2.15" dependencies: "@types/node" "*" "@types/parse5" "^6.0.3" "@types/tough-cookie" "*" "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + "version" "7.0.11" "@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== + "integrity" "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + "version" "0.0.29" "@types/keyv@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" - integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + "integrity" "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==" + "resolved" "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" + "version" "3.1.4" dependencies: "@types/node" "*" -"@types/lodash@^4.14.136": - version "4.14.194" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" - integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== +"@types/lodash@^4.14.136", "@types/lodash@^4.14.182": + "integrity" "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" + "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz" + "version" "4.14.191" -"@types/lodash@^4.14.182": - version "4.14.191" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" - integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== +"@types/long@^4.0.1": + "integrity" "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + "resolved" "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" + "version" "4.0.2" "@types/minimatch@*": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/node@*": - version "18.11.17" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.17.tgz#5c009e1d9c38f4a2a9d45c0b0c493fe6cdb4bcb5" - integrity sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng== - -"@types/node@18.11.18": - version "18.11.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" - integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== - -"@types/node@>=13.7.0": - version "20.2.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.3.tgz#b31eb300610c3835ac008d690de6f87e28f9b878" - integrity sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw== - -"@types/node@^12.12.54", "@types/node@^12.12.6": - version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + "integrity" "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + "resolved" "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" + "version" "5.1.2" + +"@types/ms@*": + "integrity" "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" + "version" "0.7.31" + +"@types/node@*", "@types/node@>=13.7.0", "@types/node@18.11.18": + "integrity" "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz" + "version" "18.11.18" + +"@types/node@^12.12.54": + "integrity" "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" + "version" "12.20.55" + +"@types/node@^12.12.6": + "integrity" "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" + "version" "12.20.55" "@types/node@^14.14.31": - version "14.18.35" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.35.tgz#879c4659cb7b3fe515844f029c75079c941bb65c" - integrity sha512-2ATO8pfhG1kDvw4Lc4C0GXIMSQFFJBCo/R1fSgTwmUlq5oy95LXyjDQinsRVgQY6gp6ghh3H91wk9ES5/5C+Tw== + "integrity" "sha512-2ATO8pfhG1kDvw4Lc4C0GXIMSQFFJBCo/R1fSgTwmUlq5oy95LXyjDQinsRVgQY6gp6ghh3H91wk9ES5/5C+Tw==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-14.18.35.tgz" + "version" "14.18.35" "@types/papaparse@^5.3.1": - version "5.3.5" - resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.3.5.tgz#e5ad94b1fe98e2a8ea0b03284b83d2cb252bbf39" - integrity sha512-R1icl/hrJPFRpuYj9PVG03WBAlghJj4JW9Py5QdR8FFSxaLmZRyu7xYDCCBZIJNfUv3MYaeBbhBoX958mUTAaw== + "integrity" "sha512-R1icl/hrJPFRpuYj9PVG03WBAlghJj4JW9Py5QdR8FFSxaLmZRyu7xYDCCBZIJNfUv3MYaeBbhBoX958mUTAaw==" + "resolved" "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.5.tgz" + "version" "5.3.5" dependencies: "@types/node" "*" "@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + "version" "4.0.0" "@types/parse5@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" - integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== + "integrity" "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" + "resolved" "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz" + "version" "6.0.3" "@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + "integrity" "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==" + "resolved" "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" + "version" "3.1.0" dependencies: "@types/node" "*" "@types/postcss-modules-local-by-default@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#5c141c9bd3a994ae1ebe23d2ae094b24d19538f5" - integrity sha512-0VLab/pcLTLcfbxi6THSIMVYcw9hEUBGvjwwaGpW77mMgRXfGF+a76t7BxTGyLh1y68tBvrffp8UWnqvm76+yg== + "integrity" "sha512-0VLab/pcLTLcfbxi6THSIMVYcw9hEUBGvjwwaGpW77mMgRXfGF+a76t7BxTGyLh1y68tBvrffp8UWnqvm76+yg==" + "resolved" "https://registry.npmjs.org/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" + "version" "4.0.0" dependencies: - postcss "^8.0.0" + "postcss" "^8.0.0" "@types/postcss-modules-scope@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.1.tgz#f0ad443c2f31f90feacb83bb357692d581388afd" - integrity sha512-LNkp3c4ML9EQj2dgslp4i80Jxj72YK3HjYzrTn6ftUVylW1zaKFGqrMlNIyqBmPWmIhZ/Y5r0Y4T49Hk1IuDUg== + "integrity" "sha512-LNkp3c4ML9EQj2dgslp4i80Jxj72YK3HjYzrTn6ftUVylW1zaKFGqrMlNIyqBmPWmIhZ/Y5r0Y4T49Hk1IuDUg==" + "resolved" "https://registry.npmjs.org/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.1.tgz" + "version" "3.0.1" dependencies: - postcss "^8.0.0" + "postcss" "^8.0.0" "@types/prettier@^2.1.1", "@types/prettier@^2.1.5": - version "2.7.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" - integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + "integrity" "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==" + "resolved" "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz" + "version" "2.7.2" "@types/prop-types@*", "@types/prop-types@^15.7.5": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + "version" "15.7.5" "@types/qrcode@^1.4.2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.5.0.tgz#6a98fe9a9a7b2a9a3167b6dde17eff999eabe40b" - integrity sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA== + "integrity" "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==" + "resolved" "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.0.tgz" + "version" "1.5.0" dependencies: "@types/node" "*" -"@types/react-dom@18.0.10": - version "18.0.10" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.10.tgz#3b66dec56aa0f16a6cc26da9e9ca96c35c0b4352" - integrity sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg== - dependencies: - "@types/react" "*" - -"@types/react-dom@^18.0.0": - version "18.0.9" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.9.tgz#ffee5e4bfc2a2f8774b15496474f8e7fe8d0b504" - integrity sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg== +"@types/react-dom@^16.8 || ^17.0 || ^18.0", "@types/react-dom@^18.0.0", "@types/react-dom@18.0.10": + "integrity" "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==" + "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz" + "version" "18.0.10" dependencies: "@types/react" "*" "@types/react-gtm-module@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/react-gtm-module/-/react-gtm-module-2.0.1.tgz#b2c6cd14ec251d6ae7fa576edf1d43825908a378" - integrity sha512-T/DN9gAbCYk5wJ1nxf4pSwmXz4d1iVjM++OoG+mwMfz9STMAotGjSb65gJHOS5bPvl6vLSsJnuC+y/43OQrltg== - -"@types/react-is@^16.7.1 || ^17.0.0": - version "17.0.3" - resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" - integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw== - dependencies: - "@types/react" "*" + "integrity" "sha512-T/DN9gAbCYk5wJ1nxf4pSwmXz4d1iVjM++OoG+mwMfz9STMAotGjSb65gJHOS5bPvl6vLSsJnuC+y/43OQrltg==" + "resolved" "https://registry.npmjs.org/@types/react-gtm-module/-/react-gtm-module-2.0.1.tgz" + "version" "2.0.1" "@types/react-is@^18.2.1": - version "18.2.1" - resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-18.2.1.tgz#61d01c2a6fc089a53520c0b66996d458fdc46863" - integrity sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw== + "integrity" "sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==" + "resolved" "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.1.tgz" + "version" "18.2.1" dependencies: "@types/react" "*" "@types/react-qr-reader@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@types/react-qr-reader/-/react-qr-reader-2.1.4.tgz#a36f0b83b4402e26c4217d0e8af6b5e2887fc749" - integrity sha512-2Hq+UNfsO2TVqxbFlOE0gGhQr/+C4wdgNDaaLV8K93mK/Z7Vw2D3YbMlnJAaSzM45fUtYJs0vc48wV04+OEkiA== - dependencies: - "@types/react" "*" - -"@types/react-transition-group@^4.4.5": - version "4.4.5" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" - integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== + "integrity" "sha512-2Hq+UNfsO2TVqxbFlOE0gGhQr/+C4wdgNDaaLV8K93mK/Z7Vw2D3YbMlnJAaSzM45fUtYJs0vc48wV04+OEkiA==" + "resolved" "https://registry.npmjs.org/@types/react-qr-reader/-/react-qr-reader-2.1.4.tgz" + "version" "2.1.4" dependencies: "@types/react" "*" -"@types/react-transition-group@^4.4.6": - version "4.4.6" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.6.tgz#18187bcda5281f8e10dfc48f0943e2fdf4f75e2e" - integrity sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew== +"@types/react-transition-group@^4.4.5", "@types/react-transition-group@^4.4.6": + "integrity" "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==" + "resolved" "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz" + "version" "4.4.6" dependencies: "@types/react" "*" -"@types/react@*", "@types/react@18.0.26": - version "18.0.26" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.26.tgz#8ad59fc01fef8eaf5c74f4ea392621749f0b7917" - integrity sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug== +"@types/react@*", "@types/react@^16.8 || ^17.0 || ^18.0", "@types/react@^17.0.0 || ^18.0.0", "@types/react@18.0.26": + "integrity" "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==" + "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz" + "version" "18.0.26" dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - csstype "^3.0.2" + "csstype" "^3.0.2" "@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + "integrity" "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==" + "resolved" "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" + "version" "1.17.1" dependencies: "@types/node" "*" "@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + "integrity" "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==" + "resolved" "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz" + "version" "1.0.0" dependencies: "@types/node" "*" "@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + "version" "0.16.2" "@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + "integrity" "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==" + "resolved" "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" + "version" "4.0.3" dependencies: "@types/node" "*" "@types/semver@^7.3.10", "@types/semver@^7.3.12": - version "7.3.13" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== + "integrity" "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + "resolved" "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz" + "version" "7.3.13" "@types/sinonjs__fake-timers@8.1.1": - version "8.1.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" - integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== + "integrity" "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==" + "resolved" "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz" + "version" "8.1.1" "@types/sizzle@^2.3.2": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" - integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== + "integrity" "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" + "resolved" "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz" + "version" "2.3.3" "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" + "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + "version" "2.0.1" "@types/testing-library__jest-dom@^5.9.1": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz#d113709c90b3c75fdb127ec338dad7d5f86c974f" - integrity sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ== + "integrity" "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==" + "resolved" "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz" + "version" "5.14.5" dependencies: "@types/jest" "*" "@types/tough-cookie@*": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" - integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + "integrity" "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==" + "resolved" "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz" + "version" "4.0.2" "@types/trusted-types@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" - integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== + "integrity" "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" + "resolved" "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz" + "version" "2.0.2" "@types/underscore@*": - version "1.11.4" - resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" - integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== + "integrity" "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==" + "resolved" "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz" + "version" "1.11.4" "@types/use-sync-external-store@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" - integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== + "integrity" "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + "resolved" "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz" + "version" "0.0.3" + +"@types/web@^0.0.99": + "integrity" "sha512-xMz3tOvtkZzc7RpQrDNiLe5sfMmP+fz8bOxHIZ/U8qXyvzDX4L4Ss1HCjor/O9DSelba+1iXK1VM7lruX28hiQ==" + "resolved" "https://registry.npmjs.org/@types/web/-/web-0.0.99.tgz" + "version" "0.0.99" "@types/web3-provider-engine@^14.0.0": - version "14.0.1" - resolved "https://registry.yarnpkg.com/@types/web3-provider-engine/-/web3-provider-engine-14.0.1.tgz#9ceb76af025e9359a28cff1f0fc4c19070c40ab7" - integrity sha512-SaAfLJY/40wKFDsNFwaNfwqFSL6kVhTx9JD18qM+Gaw1qdAXLYF/6E7TIqWEdoG4so6fki/zxURP5NsoCePYJw== + "integrity" "sha512-SaAfLJY/40wKFDsNFwaNfwqFSL6kVhTx9JD18qM+Gaw1qdAXLYF/6E7TIqWEdoG4so6fki/zxURP5NsoCePYJw==" + "resolved" "https://registry.npmjs.org/@types/web3-provider-engine/-/web3-provider-engine-14.0.1.tgz" + "version" "14.0.1" dependencies: "@types/ethereum-protocol" "*" "@types/web3@1.0.20": - version "1.0.20" - resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.0.20.tgz#234dd1f976702c0daaff147c80f24a5582e09d0e" - integrity sha512-KTDlFuYjzCUlBDGt35Ir5QRtyV9klF84MMKUsEJK10sTWga/71V+8VYLT7yysjuBjaOx2uFYtIWNGoz3yrNDlg== + "integrity" "sha512-KTDlFuYjzCUlBDGt35Ir5QRtyV9klF84MMKUsEJK10sTWga/71V+8VYLT7yysjuBjaOx2uFYtIWNGoz3yrNDlg==" + "resolved" "https://registry.npmjs.org/@types/web3/-/web3-1.0.20.tgz" + "version" "1.0.20" dependencies: "@types/bn.js" "*" "@types/underscore" "*" -"@types/web@^0.0.99": - version "0.0.99" - resolved "https://registry.yarnpkg.com/@types/web/-/web-0.0.99.tgz#a9c3a088e4634f6b08977f4fc733c916c2b0d50e" - integrity sha512-xMz3tOvtkZzc7RpQrDNiLe5sfMmP+fz8bOxHIZ/U8qXyvzDX4L4Ss1HCjor/O9DSelba+1iXK1VM7lruX28hiQ== - "@types/ws@^7.2.0", "@types/ws@^7.4.4": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + "integrity" "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==" + "resolved" "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz" + "version" "7.4.7" dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + "version" "21.0.0" "@types/yargs@^17.0.8": - version "17.0.17" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.17.tgz#5672e5621f8e0fca13f433a8017aae4b7a2a03e7" - integrity sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g== + "integrity" "sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g==" + "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.17.tgz" + "version" "17.0.17" dependencies: "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + "integrity" "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==" + "resolved" "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz" + "version" "2.10.0" dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.47.1": - version "5.47.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.1.tgz#50cc5085578a7fa22cd46a0806c2e5eae858af02" - integrity sha512-r4RZ2Jl9kcQN7K/dcOT+J7NAimbiis4sSM9spvWimsBvDegMhKLA5vri2jG19PmIPbDjPeWzfUPQ2hjEzA4Nmg== - dependencies: - "@typescript-eslint/scope-manager" "5.47.1" - "@typescript-eslint/type-utils" "5.47.1" - "@typescript-eslint/utils" "5.47.1" - debug "^4.3.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.42.0": - version "5.47.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.47.1.tgz#c4bf16f8c3c7608ce4bf8ff804b677fc899f173f" - integrity sha512-9Vb+KIv29r6GPu4EboWOnQM7T+UjpjXvjCPhNORlgm40a9Ia9bvaPJswvtae1gip2QEeVeGh6YquqAzEgoRAlw== - dependencies: - "@typescript-eslint/scope-manager" "5.47.1" - "@typescript-eslint/types" "5.47.1" - "@typescript-eslint/typescript-estree" "5.47.1" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.47.1": - version "5.47.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.47.1.tgz#0d302b3c2f20ab24e4787bf3f5a0d8c449b823bd" - integrity sha512-9hsFDsgUwrdOoW1D97Ewog7DYSHaq4WKuNs0LHF9RiCmqB0Z+XRR4Pf7u7u9z/8CciHuJ6yxNws1XznI3ddjEw== - dependencies: - "@typescript-eslint/types" "5.47.1" - "@typescript-eslint/visitor-keys" "5.47.1" - -"@typescript-eslint/type-utils@5.47.1": - version "5.47.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.47.1.tgz#aee13314f840ab336c1adb49a300856fd16d04ce" - integrity sha512-/UKOeo8ee80A7/GJA427oIrBi/Gd4osk/3auBUg4Rn9EahFpevVV1mUK8hjyQD5lHPqX397x6CwOk5WGh1E/1w== - dependencies: - "@typescript-eslint/typescript-estree" "5.47.1" - "@typescript-eslint/utils" "5.47.1" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.47.1": - version "5.47.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.47.1.tgz#459f07428aec5a8c4113706293c2ae876741ac8e" - integrity sha512-CmALY9YWXEpwuu6377ybJBZdtSAnzXLSQcxLSqSQSbC7VfpMu/HLVdrnVJj7ycI138EHqocW02LPJErE35cE9A== - -"@typescript-eslint/typescript-estree@5.47.1": - version "5.47.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.1.tgz#b9d8441308aca53df7f69b2c67a887b82c9ed418" - integrity sha512-4+ZhFSuISAvRi2xUszEj0xXbNTHceV9GbH9S8oAD2a/F9SW57aJNQVOCxG8GPfSWH/X4eOPdMEU2jYVuWKEpWA== - dependencies: - "@typescript-eslint/types" "5.47.1" - "@typescript-eslint/visitor-keys" "5.47.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.47.1": - version "5.47.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.47.1.tgz#595f25ac06e9ee28c339fd43c709402820b13d7b" - integrity sha512-l90SdwqfmkuIVaREZ2ykEfCezepCLxzWMo5gVfcJsJCaT4jHT+QjgSkYhs5BMQmWqE9k3AtIfk4g211z/sTMVw== - dependencies: +"@typescript-eslint/eslint-plugin@^5.0.0", "@typescript-eslint/eslint-plugin@^5.47.1": + "integrity" "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" + "version" "5.62.0" + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + "debug" "^4.3.4" + "graphemer" "^1.4.0" + "ignore" "^5.2.0" + "natural-compare-lite" "^1.4.0" + "semver" "^7.3.7" + "tsutils" "^3.21.0" + +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.42.0": + "version" "5.47.0" + dependencies: + "@typescript-eslint/scope-manager" "5.47.0" + "@typescript-eslint/types" "5.47.0" + "@typescript-eslint/typescript-estree" "5.47.0" + "debug" "^4.3.4" + +"@typescript-eslint/scope-manager@5.47.0": + "version" "5.47.0" + dependencies: + "@typescript-eslint/types" "5.47.0" + "@typescript-eslint/visitor-keys" "5.47.0" + +"@typescript-eslint/scope-manager@5.62.0": + "integrity" "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" + "version" "5.62.0" + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.62.0": + "integrity" "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz" + "version" "5.62.0" + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + "debug" "^4.3.4" + "tsutils" "^3.21.0" + +"@typescript-eslint/types@5.47.0": + "version" "5.47.0" + +"@typescript-eslint/types@5.62.0": + "integrity" "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" + "version" "5.62.0" + +"@typescript-eslint/typescript-estree@5.47.0": + "version" "5.47.0" + dependencies: + "@typescript-eslint/types" "5.47.0" + "@typescript-eslint/visitor-keys" "5.47.0" + "debug" "^4.3.4" + "globby" "^11.1.0" + "is-glob" "^4.0.3" + "semver" "^7.3.7" + "tsutils" "^3.21.0" + +"@typescript-eslint/typescript-estree@5.62.0": + "integrity" "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" + "version" "5.62.0" + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + "debug" "^4.3.4" + "globby" "^11.1.0" + "is-glob" "^4.0.3" + "semver" "^7.3.7" + "tsutils" "^3.21.0" + +"@typescript-eslint/utils@5.62.0": + "integrity" "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" + "version" "5.62.0" + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.47.1" - "@typescript-eslint/types" "5.47.1" - "@typescript-eslint/typescript-estree" "5.47.1" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - semver "^7.3.7" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + "eslint-scope" "^5.1.1" + "semver" "^7.3.7" + +"@typescript-eslint/visitor-keys@5.47.0": + "version" "5.47.0" + dependencies: + "@typescript-eslint/types" "5.47.0" + "eslint-visitor-keys" "^3.3.0" -"@typescript-eslint/visitor-keys@5.47.1": - version "5.47.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.1.tgz#d35c2da544dbb685db9c5b5b85adac0a1d74d1f2" - integrity sha512-rF3pmut2JCCjh6BLRhNKdYjULMb1brvoaiWDlHfLNVgmnZ0sBVJrs3SyaKE1XoDDnJuAx/hDQryHYmPUuNq0ig== +"@typescript-eslint/visitor-keys@5.62.0": + "integrity" "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" + "version" "5.62.0" dependencies: - "@typescript-eslint/types" "5.47.1" - eslint-visitor-keys "^3.3.0" + "@typescript-eslint/types" "5.62.0" + "eslint-visitor-keys" "^3.3.0" "@walletconnect/browser-utils@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz#33c10e777aa6be86c713095b5206d63d32df0951" - integrity sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A== + "integrity" "sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==" + "resolved" "https://registry.npmjs.org/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz" + "version" "1.8.0" dependencies: "@walletconnect/safe-json" "1.0.0" "@walletconnect/types" "^1.8.0" "@walletconnect/window-getters" "1.0.0" "@walletconnect/window-metadata" "1.0.0" - detect-browser "5.2.0" + "detect-browser" "5.2.0" "@walletconnect/client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.8.0.tgz#6f46b5499c7c861c651ff1ebe5da5b66225ca696" - integrity sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ== + "integrity" "sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/client/-/client-1.8.0.tgz" + "version" "1.8.0" dependencies: "@walletconnect/core" "^1.8.0" "@walletconnect/iso-crypto" "^1.8.0" "@walletconnect/types" "^1.8.0" "@walletconnect/utils" "^1.8.0" +"@walletconnect/core@^1.8.0": + "integrity" "sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw==" + "resolved" "https://registry.npmjs.org/@walletconnect/core/-/core-1.8.0.tgz" + "version" "1.8.0" + dependencies: + "@walletconnect/socket-transport" "^1.8.0" + "@walletconnect/types" "^1.8.0" + "@walletconnect/utils" "^1.8.0" + "@walletconnect/core@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.8.4.tgz#fc207c8fa35a53e30012b0c85b6ca933cec7d955" - integrity sha512-3CQHud4As0kPRvlW1w/wSWS2F3yXlAo5kSEJyRWLRPqXG+aSCVWM8cVM8ch5yoeyNIfOHhEINdsYMuJG1+yIJQ== + "integrity" "sha512-3CQHud4As0kPRvlW1w/wSWS2F3yXlAo5kSEJyRWLRPqXG+aSCVWM8cVM8ch5yoeyNIfOHhEINdsYMuJG1+yIJQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/core/-/core-2.8.4.tgz" + "version" "2.8.4" dependencies: "@walletconnect/heartbeat" "1.2.1" "@walletconnect/jsonrpc-provider" "1.0.13" @@ -4539,51 +4467,42 @@ "@walletconnect/time" "^1.0.2" "@walletconnect/types" "2.8.4" "@walletconnect/utils" "2.8.4" - events "^3.3.0" - lodash.isequal "4.5.0" - uint8arrays "^3.1.0" - -"@walletconnect/core@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.8.0.tgz#6b2748b90c999d9d6a70e52e26a8d5e8bfeaa81e" - integrity sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw== - dependencies: - "@walletconnect/socket-transport" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" + "events" "^3.3.0" + "lodash.isequal" "4.5.0" + "uint8arrays" "^3.1.0" "@walletconnect/crypto@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.3.tgz#7b8dd4d7e2884fe3543c7c07aea425eef5ef9dd4" - integrity sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g== + "integrity" "sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==" + "resolved" "https://registry.npmjs.org/@walletconnect/crypto/-/crypto-1.0.3.tgz" + "version" "1.0.3" dependencies: "@walletconnect/encoding" "^1.0.2" "@walletconnect/environment" "^1.0.1" "@walletconnect/randombytes" "^1.0.3" - aes-js "^3.1.2" - hash.js "^1.1.7" - tslib "1.14.1" + "aes-js" "^3.1.2" + "hash.js" "^1.1.7" + "tslib" "1.14.1" "@walletconnect/encoding@^1.0.1", "@walletconnect/encoding@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.2.tgz#cb3942ad038d6a6bf01158f66773062dd25724da" - integrity sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag== + "integrity" "sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==" + "resolved" "https://registry.npmjs.org/@walletconnect/encoding/-/encoding-1.0.2.tgz" + "version" "1.0.2" dependencies: - is-typedarray "1.0.0" - tslib "1.14.1" - typedarray-to-buffer "3.1.5" + "is-typedarray" "1.0.0" + "tslib" "1.14.1" + "typedarray-to-buffer" "3.1.5" "@walletconnect/environment@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" - integrity sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg== + "integrity" "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==" + "resolved" "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz" + "version" "1.0.1" dependencies: - tslib "1.14.1" + "tslib" "1.14.1" "@walletconnect/ethereum-provider@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.8.4.tgz#c627c237b479194efc542b8475596bae12fde52d" - integrity sha512-z7Yz4w8t3eEFv8vQ8DLCgDWPah2aIIyC0iQdwhXgJenQTVuz7JJZRrJUUntzudipHK/owA394c1qTPF0rsMSeQ== + "integrity" "sha512-z7Yz4w8t3eEFv8vQ8DLCgDWPah2aIIyC0iQdwhXgJenQTVuz7JJZRrJUUntzudipHK/owA394c1qTPF0rsMSeQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.8.4.tgz" + "version" "2.8.4" dependencies: "@walletconnect/jsonrpc-http-connection" "^1.0.7" "@walletconnect/jsonrpc-provider" "^1.0.13" @@ -4593,203 +4512,193 @@ "@walletconnect/types" "2.8.4" "@walletconnect/universal-provider" "2.8.4" "@walletconnect/utils" "2.8.4" - events "^3.3.0" + "events" "^3.3.0" "@walletconnect/events@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" - integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== + "integrity" "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz" + "version" "1.0.1" dependencies: - keyvaluestorage-interface "^1.0.0" - tslib "1.14.1" + "keyvaluestorage-interface" "^1.0.0" + "tslib" "1.14.1" "@walletconnect/heartbeat@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9" - integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q== + "integrity" "sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==" + "resolved" "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz" + "version" "1.2.1" dependencies: "@walletconnect/events" "^1.0.1" "@walletconnect/time" "^1.0.2" - tslib "1.14.1" + "tslib" "1.14.1" "@walletconnect/iso-crypto@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz#44ddf337c4f02837c062dbe33fa7ab36789df451" - integrity sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ== + "integrity" "sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz" + "version" "1.8.0" dependencies: "@walletconnect/crypto" "^1.0.2" "@walletconnect/types" "^1.8.0" "@walletconnect/utils" "^1.8.0" "@walletconnect/jsonrpc-http-connection@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz#a6973569b8854c22da707a759d241e4f5c2d5a98" - integrity sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ== + "integrity" "sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz" + "version" "1.0.7" dependencies: "@walletconnect/jsonrpc-utils" "^1.0.6" "@walletconnect/safe-json" "^1.0.1" - cross-fetch "^3.1.4" - tslib "1.14.1" + "cross-fetch" "^3.1.4" + "tslib" "1.14.1" -"@walletconnect/jsonrpc-provider@1.0.13", "@walletconnect/jsonrpc-provider@^1.0.13": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz#9a74da648d015e1fffc745f0c7d629457f53648b" - integrity sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g== +"@walletconnect/jsonrpc-provider@^1.0.13", "@walletconnect/jsonrpc-provider@1.0.13": + "integrity" "sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==" + "resolved" "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz" + "version" "1.0.13" dependencies: "@walletconnect/jsonrpc-utils" "^1.0.8" "@walletconnect/safe-json" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/jsonrpc-types@1.0.3", "@walletconnect/jsonrpc-types@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c" - integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw== - dependencies: - keyvaluestorage-interface "^1.0.0" - tslib "1.14.1" + "tslib" "1.14.1" -"@walletconnect/jsonrpc-types@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.2.tgz#b79519f679cd6a5fa4a1bea888f27c1916689a20" - integrity sha512-CZe8tjJX73OWdHjrBHy7HtAapJ2tT0Q3TYhPBhRxi3643lwPIQWC9En45ldY14TZwgSewkbZ0FtGBZK0G7Bbyg== +"@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3", "@walletconnect/jsonrpc-types@1.0.3": + "integrity" "sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==" + "resolved" "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz" + "version" "1.0.3" dependencies: - keyvaluestorage-interface "^1.0.0" - tslib "1.14.1" + "keyvaluestorage-interface" "^1.0.0" + "tslib" "1.14.1" -"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" - integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== +"@walletconnect/jsonrpc-utils@^1.0.3", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8", "@walletconnect/jsonrpc-utils@1.0.8": + "integrity" "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==" + "resolved" "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz" + "version" "1.0.8" dependencies: "@walletconnect/environment" "^1.0.1" "@walletconnect/jsonrpc-types" "^1.0.3" - tslib "1.14.1" - -"@walletconnect/jsonrpc-utils@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.4.tgz#2009ba3907b02516f2caacd2fb871ff0d472b2cb" - integrity sha512-y0+tDxcTZ9BHBBKBJbjZxLUXb+zQZCylf7y/jTvDPNx76J0hYYc+F9zHzyqBLeorSKepLTk6yI8hw3NXbAQB3g== - dependencies: - "@walletconnect/environment" "^1.0.1" - "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" + "tslib" "1.14.1" "@walletconnect/jsonrpc-ws-connection@^1.0.11": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.11.tgz#1ce59d86f273d576ca73385961303ebd44dd923f" - integrity sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w== + "integrity" "sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg==" + "resolved" "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.13.tgz" + "version" "1.0.13" dependencies: "@walletconnect/jsonrpc-utils" "^1.0.6" "@walletconnect/safe-json" "^1.0.2" - events "^3.3.0" - tslib "1.14.1" - ws "^7.5.1" + "events" "^3.3.0" + "tslib" "1.14.1" + "ws" "^7.5.1" "@walletconnect/keyvaluestorage@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz#92f5ca0f54c1a88a093778842ce0c874d86369c8" - integrity sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ== + "integrity" "sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz" + "version" "1.0.2" dependencies: - safe-json-utils "^1.1.1" - tslib "1.14.1" + "safe-json-utils" "^1.1.1" + "tslib" "1.14.1" "@walletconnect/logger@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.0.1.tgz#7f489b96e9a1ff6bf3e58f0fbd6d69718bf844a8" - integrity sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ== + "integrity" "sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.0.1.tgz" + "version" "2.0.1" dependencies: - pino "7.11.0" - tslib "1.14.1" + "pino" "7.11.0" + "tslib" "1.14.1" "@walletconnect/mobile-registry@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" - integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== + "integrity" "sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==" + "resolved" "https://registry.npmjs.org/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz" + "version" "1.4.0" "@walletconnect/modal-core@2.5.5": - version "2.5.5" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.5.5.tgz#dc2ee96b1dd7cd9a1dc5e276c46068ee6349616a" - integrity sha512-M2BKcI5aqnGfMAz+MgTsvnTRzD25uz9YJ3/xuzy+ovgFCl2VCGH2Vdrf6Ptu+UR6UMuPdssG1TXXe1rd907Dxw== + "integrity" "sha512-M2BKcI5aqnGfMAz+MgTsvnTRzD25uz9YJ3/xuzy+ovgFCl2VCGH2Vdrf6Ptu+UR6UMuPdssG1TXXe1rd907Dxw==" + "resolved" "https://registry.npmjs.org/@walletconnect/modal-core/-/modal-core-2.5.5.tgz" + "version" "2.5.5" dependencies: - buffer "6.0.3" - valtio "1.10.6" + "buffer" "6.0.3" + "valtio" "1.10.6" "@walletconnect/modal-ui@2.5.5": - version "2.5.5" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.5.5.tgz#f2ab96ab72f0f1325252224560ec610b73d1684c" - integrity sha512-g0LJ/gRhZ5E30gk4GnMpDlQzLFWyRjsJp57s9rZmlVkry5mfhCZ3Oh0mfgv2/ILVxdB4fUo1BjatKyOpSogOmg== + "integrity" "sha512-g0LJ/gRhZ5E30gk4GnMpDlQzLFWyRjsJp57s9rZmlVkry5mfhCZ3Oh0mfgv2/ILVxdB4fUo1BjatKyOpSogOmg==" + "resolved" "https://registry.npmjs.org/@walletconnect/modal-ui/-/modal-ui-2.5.5.tgz" + "version" "2.5.5" dependencies: "@walletconnect/modal-core" "2.5.5" - lit "2.7.5" - motion "10.16.2" - qrcode "1.5.3" + "lit" "2.7.5" + "motion" "10.16.2" + "qrcode" "1.5.3" -"@walletconnect/modal@2.5.5": - version "2.5.5" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.5.5.tgz#703eb076af4442dcd14a3b0b87863f17283f6514" - integrity sha512-y1PH1xXzFDtVZErfQErPPJzPU9DKLp4M0IEaza8LfegqHfTFaGa0s3AL+i5+7FIk9+5OHSv0Wv+e5tmSZt96yA== +"@walletconnect/modal@>=2", "@walletconnect/modal@2.5.5": + "integrity" "sha512-y1PH1xXzFDtVZErfQErPPJzPU9DKLp4M0IEaza8LfegqHfTFaGa0s3AL+i5+7FIk9+5OHSv0Wv+e5tmSZt96yA==" + "resolved" "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.5.5.tgz" + "version" "2.5.5" dependencies: "@walletconnect/modal-core" "2.5.5" "@walletconnect/modal-ui" "2.5.5" "@walletconnect/qrcode-modal@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz#ddd6f5c9b7ee52c16adf9aacec2a3eac4994caea" - integrity sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg== + "integrity" "sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==" + "resolved" "https://registry.npmjs.org/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz" + "version" "1.8.0" dependencies: "@walletconnect/browser-utils" "^1.8.0" "@walletconnect/mobile-registry" "^1.4.0" "@walletconnect/types" "^1.8.0" - copy-to-clipboard "^3.3.1" - preact "10.4.1" - qrcode "1.4.4" + "copy-to-clipboard" "^3.3.1" + "preact" "10.4.1" + "qrcode" "1.4.4" "@walletconnect/randombytes@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.3.tgz#e795e4918367fd1e6a2215e075e64ab93e23985b" - integrity sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw== + "integrity" "sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw==" + "resolved" "https://registry.npmjs.org/@walletconnect/randombytes/-/randombytes-1.0.3.tgz" + "version" "1.0.3" dependencies: "@walletconnect/encoding" "^1.0.2" "@walletconnect/environment" "^1.0.1" - randombytes "^2.1.0" - tslib "1.14.1" + "randombytes" "^2.1.0" + "tslib" "1.14.1" "@walletconnect/relay-api@^1.0.9": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" - integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg== + "integrity" "sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==" + "resolved" "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.9.tgz" + "version" "1.0.9" dependencies: "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" + "tslib" "1.14.1" "@walletconnect/relay-auth@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" - integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== + "integrity" "sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz" + "version" "1.0.4" dependencies: "@stablelib/ed25519" "^1.0.2" "@stablelib/random" "^1.0.1" "@walletconnect/safe-json" "^1.0.1" "@walletconnect/time" "^1.0.2" - tslib "1.14.1" - uint8arrays "^3.0.0" + "tslib" "1.14.1" + "uint8arrays" "^3.0.0" -"@walletconnect/safe-json@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.0.tgz#12eeb11d43795199c045fafde97e3c91646683b2" - integrity sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg== +"@walletconnect/safe-json@^1.0.1": + "integrity" "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==" + "resolved" "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "tslib" "1.14.1" -"@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" - integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== +"@walletconnect/safe-json@^1.0.2": + "integrity" "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==" + "resolved" "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz" + "version" "1.0.2" dependencies: - tslib "1.14.1" + "tslib" "1.14.1" + +"@walletconnect/safe-json@1.0.0": + "integrity" "sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg==" + "resolved" "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.0.tgz" + "version" "1.0.0" "@walletconnect/sign-client@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.8.4.tgz#35e7cfe9442c65d7f667a7c20f1a5ee7e2a6e576" - integrity sha512-eRvWtKBAgzo/rbIkw+rkKco2ulSW8Wor/58UsOBsl9DKr1rIazZd4ZcUdaTjg9q8AT1476IQakCAIuv+1FvJwQ== + "integrity" "sha512-eRvWtKBAgzo/rbIkw+rkKco2ulSW8Wor/58UsOBsl9DKr1rIazZd4ZcUdaTjg9q8AT1476IQakCAIuv+1FvJwQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.8.4.tgz" + "version" "2.8.4" dependencies: "@walletconnect/core" "2.8.4" "@walletconnect/events" "^1.0.1" @@ -4799,45 +4708,45 @@ "@walletconnect/time" "^1.0.2" "@walletconnect/types" "2.8.4" "@walletconnect/utils" "2.8.4" - events "^3.3.0" + "events" "^3.3.0" "@walletconnect/socket-transport@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz#9a1128a249628a0be11a0979b522fe82b44afa1b" - integrity sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ== + "integrity" "sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ==" + "resolved" "https://registry.npmjs.org/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz" + "version" "1.8.0" dependencies: "@walletconnect/types" "^1.8.0" "@walletconnect/utils" "^1.8.0" - ws "7.5.3" + "ws" "7.5.3" "@walletconnect/time@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" - integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== + "integrity" "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==" + "resolved" "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz" + "version" "1.0.2" dependencies: - tslib "1.14.1" + "tslib" "1.14.1" + +"@walletconnect/types@^1.8.0": + "integrity" "sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg==" + "resolved" "https://registry.npmjs.org/@walletconnect/types/-/types-1.8.0.tgz" + "version" "1.8.0" "@walletconnect/types@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.8.4.tgz#23fad8593b094c7564d72f179e33b1cac9324a88" - integrity sha512-Fgqe87R7rjMOGSvx28YPLTtXM6jj+oUOorx8cE+jEw2PfpWp5myF21aCdaMBR39h0QHij5H1Z0/W9e7gm4oC1Q== + "integrity" "sha512-Fgqe87R7rjMOGSvx28YPLTtXM6jj+oUOorx8cE+jEw2PfpWp5myF21aCdaMBR39h0QHij5H1Z0/W9e7gm4oC1Q==" + "resolved" "https://registry.npmjs.org/@walletconnect/types/-/types-2.8.4.tgz" + "version" "2.8.4" dependencies: "@walletconnect/events" "^1.0.1" "@walletconnect/heartbeat" "1.2.1" "@walletconnect/jsonrpc-types" "1.0.3" "@walletconnect/keyvaluestorage" "^1.0.2" "@walletconnect/logger" "^2.0.1" - events "^3.3.0" - -"@walletconnect/types@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.8.0.tgz#3f5e85b2d6b149337f727ab8a71b8471d8d9a195" - integrity sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg== + "events" "^3.3.0" "@walletconnect/universal-provider@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.8.4.tgz#7b62a76a7d99ea41c67374da54aaa4f1b4bc1d03" - integrity sha512-JRpOXKIciRMzd03zZxM1WDsYHo/ZS86zZrZ1aCHW1d45ZLP7SbGPRHzZgBY3xrST26yTvWIlRfTUEYn50fzB1g== + "integrity" "sha512-JRpOXKIciRMzd03zZxM1WDsYHo/ZS86zZrZ1aCHW1d45ZLP7SbGPRHzZgBY3xrST26yTvWIlRfTUEYn50fzB1g==" + "resolved" "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.8.4.tgz" + "version" "2.8.4" dependencies: "@walletconnect/jsonrpc-http-connection" "^1.0.7" "@walletconnect/jsonrpc-provider" "1.0.13" @@ -4847,12 +4756,25 @@ "@walletconnect/sign-client" "2.8.4" "@walletconnect/types" "2.8.4" "@walletconnect/utils" "2.8.4" - events "^3.3.0" + "events" "^3.3.0" + +"@walletconnect/utils@^1.8.0": + "integrity" "sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==" + "resolved" "https://registry.npmjs.org/@walletconnect/utils/-/utils-1.8.0.tgz" + "version" "1.8.0" + dependencies: + "@walletconnect/browser-utils" "^1.8.0" + "@walletconnect/encoding" "^1.0.1" + "@walletconnect/jsonrpc-utils" "^1.0.3" + "@walletconnect/types" "^1.8.0" + "bn.js" "4.11.8" + "js-sha3" "0.8.0" + "query-string" "6.13.5" "@walletconnect/utils@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.8.4.tgz#8dbd3beaef39388be2398145a5f9a061a0317518" - integrity sha512-NGw6BINYNeT9JrQrnxldAPheO2ymRrwGrgfExZMyrkb1MShnIX4nzo4KirKInM4LtrY6AA/v0Lu3ooUdfO+xIg== + "integrity" "sha512-NGw6BINYNeT9JrQrnxldAPheO2ymRrwGrgfExZMyrkb1MShnIX4nzo4KirKInM4LtrY6AA/v0Lu3ooUdfO+xIg==" + "resolved" "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.8.4.tgz" + "version" "2.8.4" dependencies: "@stablelib/chacha20poly1305" "1.0.1" "@stablelib/hkdf" "1.0.1" @@ -4865,110 +4787,104 @@ "@walletconnect/types" "2.8.4" "@walletconnect/window-getters" "^1.0.1" "@walletconnect/window-metadata" "^1.0.1" - detect-browser "5.3.0" - query-string "7.1.3" - uint8arrays "^3.1.0" + "detect-browser" "5.3.0" + "query-string" "7.1.3" + "uint8arrays" "^3.1.0" -"@walletconnect/utils@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.8.0.tgz#2591a197c1fa7429941fe428876088fda6632060" - integrity sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA== +"@walletconnect/window-getters@^1.0.0": + "integrity" "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==" + "resolved" "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz" + "version" "1.0.1" dependencies: - "@walletconnect/browser-utils" "^1.8.0" - "@walletconnect/encoding" "^1.0.1" - "@walletconnect/jsonrpc-utils" "^1.0.3" - "@walletconnect/types" "^1.8.0" - bn.js "4.11.8" - js-sha3 "0.8.0" - query-string "6.13.5" + "tslib" "1.14.1" + +"@walletconnect/window-getters@^1.0.1": + "integrity" "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==" + "resolved" "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "tslib" "1.14.1" "@walletconnect/window-getters@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.0.tgz#1053224f77e725dfd611c83931b5f6c98c32bfc8" - integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== + "integrity" "sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==" + "resolved" "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.0.tgz" + "version" "1.0.0" -"@walletconnect/window-getters@^1.0.0", "@walletconnect/window-getters@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" - integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== +"@walletconnect/window-metadata@^1.0.1": + "integrity" "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==" + "resolved" "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz" + "version" "1.0.1" dependencies: - tslib "1.14.1" + "@walletconnect/window-getters" "^1.0.1" + "tslib" "1.14.1" "@walletconnect/window-metadata@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz#93b1cc685e6b9b202f29c26be550fde97800c4e5" - integrity sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA== + "integrity" "sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==" + "resolved" "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz" + "version" "1.0.0" dependencies: "@walletconnect/window-getters" "^1.0.0" -"@walletconnect/window-metadata@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" - integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== - dependencies: - "@walletconnect/window-getters" "^1.0.1" - tslib "1.14.1" - "@web3-onboard/coinbase@^2.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@web3-onboard/coinbase/-/coinbase-2.2.4.tgz#7e7f82e631816ab7ddcab8d94df6d1513baada50" - integrity sha512-XnQejTC51ZqYm4sT+RH3tr1yWcbuZXTWXRZeIHEWiJchVBE4K9goPxhB03PX8ZQ9TDt/bUTEkl7Qfyp6bhKTKw== + "integrity" "sha512-mEiaK+K+nB2TwxUpkyAZmb4AHguymsJrHFbsZDdAolFTgZizCSjGHBhYlCEfxLL4fh3CpUryTa/AaNxxhdG6OQ==" + "resolved" "https://registry.npmjs.org/@web3-onboard/coinbase/-/coinbase-2.2.5.tgz" + "version" "2.2.5" dependencies: - "@coinbase/wallet-sdk" "^3.6.0" + "@coinbase/wallet-sdk" "^3.7.1" "@web3-onboard/common" "^2.3.3" "@web3-onboard/common@^2.2.3", "@web3-onboard/common@^2.3.3": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.3.3.tgz#02096e967dbed272c0637cda955902b96a0fce06" - integrity sha512-Ytppszqe77VY8WglRdr/Lfx+HmcZ2hXQEkBA23JaVYmzKvP/mC6j+sjGUD8CgXDpRRxyKoiRj6nz95GRABie6Q== + "integrity" "sha512-Ytppszqe77VY8WglRdr/Lfx+HmcZ2hXQEkBA23JaVYmzKvP/mC6j+sjGUD8CgXDpRRxyKoiRj6nz95GRABie6Q==" + "resolved" "https://registry.npmjs.org/@web3-onboard/common/-/common-2.3.3.tgz" + "version" "2.3.3" dependencies: - bignumber.js "^9.1.0" - ethers "5.5.4" - joi "17.9.1" + "bignumber.js" "^9.1.0" + "ethers" "5.5.4" + "joi" "17.9.1" "@web3-onboard/core@2.20.4": - version "2.20.4" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.4.tgz#ccc9ff509e56720e526b4ceae5459a1f2a435d22" - integrity sha512-IFI3DVq5QgFj5w1TyL61gHmeOlkX8AJiBAARO3cd4zW8I3h9K2+7HeE7LbsfwefZYLILzXCfF0gMB3qRN/GWYQ== + "integrity" "sha512-IFI3DVq5QgFj5w1TyL61gHmeOlkX8AJiBAARO3cd4zW8I3h9K2+7HeE7LbsfwefZYLILzXCfF0gMB3qRN/GWYQ==" + "resolved" "https://registry.npmjs.org/@web3-onboard/core/-/core-2.20.4.tgz" + "version" "2.20.4" dependencies: "@web3-onboard/common" "^2.3.3" - bignumber.js "^9.0.0" - bnc-sdk "^4.6.7" - bowser "^2.11.0" - ethers "5.5.3" - eventemitter3 "^4.0.7" - joi "17.9.1" - lodash.merge "^4.6.2" - lodash.partition "^4.6.0" - nanoid "^4.0.0" - rxjs "^7.5.5" - svelte "^3.49.0" - svelte-i18n "^3.3.13" + "bignumber.js" "^9.0.0" + "bnc-sdk" "^4.6.7" + "bowser" "^2.11.0" + "ethers" "5.5.3" + "eventemitter3" "^4.0.7" + "joi" "17.9.1" + "lodash.merge" "^4.6.2" + "lodash.partition" "^4.6.0" + "nanoid" "^4.0.0" + "rxjs" "^7.5.5" + "svelte" "^3.49.0" + "svelte-i18n" "^3.3.13" "@web3-onboard/hw-common@^2.0.4", "@web3-onboard/hw-common@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/hw-common/-/hw-common-2.3.0.tgz#715d35c4039515e3f8ec839643e6d4c49097891f" - integrity sha512-ai5gwaXHxMOgov+TKuy2yUtBf7b2Vq8c28L9tSx4Hl8Q2IM6boGZQEqfW6Hw0GHu/Ez+MxRR5+M6nfwFBf8JRw== + "integrity" "sha512-ai5gwaXHxMOgov+TKuy2yUtBf7b2Vq8c28L9tSx4Hl8Q2IM6boGZQEqfW6Hw0GHu/Ez+MxRR5+M6nfwFBf8JRw==" + "resolved" "https://registry.npmjs.org/@web3-onboard/hw-common/-/hw-common-2.3.0.tgz" + "version" "2.3.0" dependencies: "@ethereumjs/common" "2.6.2" "@web3-onboard/common" "^2.3.3" - ethers "5.5.4" - joi "17.9.1" - rxjs "^7.5.2" + "ethers" "5.5.4" + "joi" "17.9.1" + "rxjs" "^7.5.2" "@web3-onboard/injected-wallets@^2.10.0": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/injected-wallets/-/injected-wallets-2.10.0.tgz#c33ed40efd8bc615fb205bd537b23c0c17b84e7f" - integrity sha512-I/14Z511Oft1UTx/ZezT/UC2LqUBH3mMN1kABcxCy4t3zx4Yfh6LMEBmR2XWBoxSvz9iaLIQz4egH+u9mdz0sg== + "integrity" "sha512-A0Uawe4X7o2mZD8S2UMqAWXjC33fIepB6SKKrH1XswEUWlg+hxs9vKjB/eIa3Fhly9lYVs5XyFUAx2mv4sZ/Xw==" + "resolved" "https://registry.npmjs.org/@web3-onboard/injected-wallets/-/injected-wallets-2.10.4.tgz" + "version" "2.10.4" dependencies: "@web3-onboard/common" "^2.3.3" - joi "17.9.1" - lodash.uniqby "^4.7.0" + "joi" "17.9.1" + "lodash.uniqby" "^4.7.0" "@web3-onboard/keystone@^2.3.7": - version "2.3.7" - resolved "https://registry.yarnpkg.com/@web3-onboard/keystone/-/keystone-2.3.7.tgz#e8355a9ffcaa36baf8033a10010b86aa8ebb4d06" - integrity sha512-9KdRQJ3htg9uSF3t8o2a5T32aQ+J2VA0mKYaXns2ZgsSznd4WqvQFuyrQi015b0rn6zkXM3BKFcMhu0OJtRwHw== + "integrity" "sha512-9KdRQJ3htg9uSF3t8o2a5T32aQ+J2VA0mKYaXns2ZgsSznd4WqvQFuyrQi015b0rn6zkXM3BKFcMhu0OJtRwHw==" + "resolved" "https://registry.npmjs.org/@web3-onboard/keystone/-/keystone-2.3.7.tgz" + "version" "2.3.7" dependencies: "@ethereumjs/tx" "^3.4.0" "@ethersproject/providers" "^5.5.0" @@ -4977,9 +4893,9 @@ "@web3-onboard/hw-common" "^2.3.0" "@web3-onboard/ledger@2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@web3-onboard/ledger/-/ledger-2.3.2.tgz#aaa436393d8ffdc156fd318154df5e61361d54bb" - integrity sha512-0KLXmnXNs6iTZEhBdGDgg+L5t8rOTroZjYu8l3Qebd02hNBIeaNxgCXIOQ1Y97qvcQz/8rb6oZ1wMp7unmSA1g== + "integrity" "sha512-0KLXmnXNs6iTZEhBdGDgg+L5t8rOTroZjYu8l3Qebd02hNBIeaNxgCXIOQ1Y97qvcQz/8rb6oZ1wMp7unmSA1g==" + "resolved" "https://registry.npmjs.org/@web3-onboard/ledger/-/ledger-2.3.2.tgz" + "version" "2.3.2" dependencies: "@ethereumjs/tx" "^3.4.0" "@ethersproject/providers" "^5.5.0" @@ -4989,37 +4905,37 @@ "@metamask/eth-sig-util" "^4.0.0" "@web3-onboard/common" "^2.2.3" "@web3-onboard/hw-common" "^2.0.4" - buffer "^6.0.3" - ethereumjs-util "^7.1.3" + "buffer" "^6.0.3" + "ethereumjs-util" "^7.1.3" "@web3-onboard/taho@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@web3-onboard/taho/-/taho-2.0.5.tgz#899d147c234d61e1fb81045fc7339182c230c632" - integrity sha512-Z5n2UMumLNppOlDgYM9MhrM+YGyz8Emouaf7htH8l4B2r/meV4F3Wkgol2xYuwwu5SJyPaJH2GxNeh/EAfyBxg== + "integrity" "sha512-Z5n2UMumLNppOlDgYM9MhrM+YGyz8Emouaf7htH8l4B2r/meV4F3Wkgol2xYuwwu5SJyPaJH2GxNeh/EAfyBxg==" + "resolved" "https://registry.npmjs.org/@web3-onboard/taho/-/taho-2.0.5.tgz" + "version" "2.0.5" dependencies: "@web3-onboard/common" "^2.3.3" - tallyho-detect-provider "^1.0.0" - tallyho-onboarding "^1.0.2" + "tallyho-detect-provider" "^1.0.0" + "tallyho-onboarding" "^1.0.2" "@web3-onboard/trezor@^2.4.2": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@web3-onboard/trezor/-/trezor-2.4.2.tgz#49a485467d970ae872288c07eccb7adf18782622" - integrity sha512-XMi5xn41HhMKnZhPj9n+5WScEsgHRzXz/XYKMbKJRfndVgHgbo/kO3DxL9fwfdUoW/mewRfO5wiN1hf7qyN2VQ== + "integrity" "sha512-XMi5xn41HhMKnZhPj9n+5WScEsgHRzXz/XYKMbKJRfndVgHgbo/kO3DxL9fwfdUoW/mewRfO5wiN1hf7qyN2VQ==" + "resolved" "https://registry.npmjs.org/@web3-onboard/trezor/-/trezor-2.4.2.tgz" + "version" "2.4.2" dependencies: "@ethereumjs/tx" "^3.4.0" "@ethersproject/providers" "^5.5.0" "@trezor/connect-web" "^9.0.8" "@web3-onboard/common" "^2.3.3" "@web3-onboard/hw-common" "^2.3.0" - buffer "^6.0.3" - eth-crypto "^2.1.0" - ethereumjs-util "^7.1.3" - hdkey "^2.0.1" + "buffer" "^6.0.3" + "eth-crypto" "^2.1.0" + "ethereumjs-util" "^7.1.3" + "hdkey" "^2.0.1" "@web3-onboard/walletconnect@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@web3-onboard/walletconnect/-/walletconnect-2.4.0.tgz#fe446706cde736ca629c56c190bc9b314eaa70b3" - integrity sha512-Qu3uHWsumOedHDzwqOoUrA40rNO0C6Sgw62XeIxSC+JsIB2K4Y5rXhTbMeYtO0lmWmHA8DYXxk8czYkdMZh19Q== + "integrity" "sha512-Qu3uHWsumOedHDzwqOoUrA40rNO0C6Sgw62XeIxSC+JsIB2K4Y5rXhTbMeYtO0lmWmHA8DYXxk8czYkdMZh19Q==" + "resolved" "https://registry.npmjs.org/@web3-onboard/walletconnect/-/walletconnect-2.4.0.tgz" + "version" "2.4.0" dependencies: "@ethersproject/providers" "5.5.0" "@walletconnect/client" "^1.8.0" @@ -5027,518 +4943,542 @@ "@walletconnect/modal" "2.5.5" "@walletconnect/qrcode-modal" "^1.8.0" "@web3-onboard/common" "^2.3.3" - rxjs "^7.5.2" - -JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abab@^2.0.5, abab@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -abortcontroller-polyfill@^1.7.3: - version "1.7.5" - resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" - integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== - -abstract-leveldown@~2.6.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" - integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" - integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== - dependencies: - xtend "~4.0.0" - -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-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -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-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn-walk@^8.0.0, acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.0.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.8.0: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -aes-js@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" - integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== - -agent-base@6, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agentkeepalive@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== - dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.6.0: - version "8.11.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" - integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arch@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -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== - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + "rxjs" "^7.5.2" + +"abab@^2.0.5", "abab@^2.0.6": + "integrity" "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + "resolved" "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" + "version" "2.0.6" + +"abortcontroller-polyfill@^1.7.3": + "integrity" "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" + "resolved" "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz" + "version" "1.7.5" + +"abstract-leveldown@~2.6.0": + "integrity" "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==" + "resolved" "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz" + "version" "2.6.3" + dependencies: + "xtend" "~4.0.0" + +"abstract-leveldown@~2.7.1": + "integrity" "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==" + "resolved" "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz" + "version" "2.7.2" + dependencies: + "xtend" "~4.0.0" + +"accepts@~1.3.8": + "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" + "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + "version" "1.3.8" + dependencies: + "mime-types" "~2.1.34" + "negotiator" "0.6.3" + +"acorn-globals@^6.0.0": + "integrity" "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==" + "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "acorn" "^7.1.1" + "acorn-walk" "^7.1.1" + +"acorn-jsx@^5.3.2": + "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + "version" "5.3.2" + +"acorn-walk@^7.1.1": + "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" + "version" "7.2.0" + +"acorn-walk@^8.0.0", "acorn-walk@^8.1.1": + "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + "version" "8.2.0" + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8.0.4", "acorn@^8.4.1", "acorn@^8.5.0", "acorn@^8.9.0": + "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + "version" "8.10.0" + +"acorn@^7.1.1": + "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + "version" "7.4.1" + +"acorn@7.1.1": + "integrity" "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz" + "version" "7.1.1" + +"aes-js@^3.1.2": + "integrity" "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" + "resolved" "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz" + "version" "3.1.2" + +"aes-js@3.0.0": + "integrity" "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + "resolved" "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" + "version" "3.0.0" + +"agent-base@^6.0.2", "agent-base@6": + "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" + "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "debug" "4" + +"agentkeepalive@^4.3.0": + "integrity" "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==" + "resolved" "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" + "version" "4.5.0" + dependencies: + "humanize-ms" "^1.2.1" + +"aggregate-error@^3.0.0": + "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" + "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "clean-stack" "^2.0.0" + "indent-string" "^4.0.0" + +"ajv-keywords@^3.5.2": + "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + "version" "3.5.2" + +"ajv@^6.10.0", "ajv@^6.12.3", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + dependencies: + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" + +"ajv@^8.6.0", "ajv@>=8": + "integrity" "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" + "version" "8.11.2" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"ansi-colors@^4.1.1": + "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + "version" "4.1.3" + +"ansi-escapes@^4.2.1", "ansi-escapes@^4.3.0": + "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" + "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + "version" "4.3.2" + dependencies: + "type-fest" "^0.21.3" + +"ansi-regex@^4.1.0": + "integrity" "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + "version" "4.1.1" + +"ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" + +"ansi-styles@^3.2.0": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"ansi-styles@^5.0.0": + "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + "version" "5.2.0" + +"anymatch@^3.0.3", "anymatch@~3.1.2": + "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + "version" "3.1.3" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"arch@^2.2.0": + "integrity" "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" + "resolved" "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz" + "version" "2.2.0" + +"arg@^4.1.0": + "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + "version" "4.1.3" + +"argparse@^1.0.7": + "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "sprintf-js" "~1.0.2" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + +"aria-query@^4.2.2": + "integrity" "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==" + "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" + "version" "4.2.2" dependencies: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -aria-query@^5.0.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -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.4, array-includes@^3.1.5, array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - is-string "^1.0.7" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== - -array.prototype.flat@^1.2.5: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" - integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -assert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" - integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== - dependencies: - es6-object-assign "^1.1.0" - is-nan "^1.2.1" - object-is "^1.0.1" - util "^0.12.0" - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-eventemitter@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" - integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== - dependencies: - async "^2.4.0" - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async-mutex@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" - integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== - dependencies: - tslib "^2.0.0" - -async@^1.4.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== - -async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - -async@^3.2.0, async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -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== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atomic-sleep@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" - integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== - -attr-accept@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" - integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axe-core@^4.4.3: - version "4.6.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.1.tgz#79cccdee3e3ab61a8f42c458d4123a6768e6fbce" - integrity sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w== - -axios@^1.3.4: - version "1.4.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" - integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -babel-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" - integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== +"aria-query@^5.0.0": + "integrity" "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==" + "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" + "version" "5.1.3" + dependencies: + "deep-equal" "^2.0.5" + +"array-back@^3.0.1", "array-back@^3.1.0": + "integrity" "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" + "resolved" "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" + "version" "3.1.0" + +"array-back@^4.0.1": + "integrity" "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" + "resolved" "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + "version" "4.0.2" + +"array-back@^4.0.2": + "integrity" "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" + "resolved" "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + "version" "4.0.2" + +"array-buffer-byte-length@^1.0.0": + "integrity" "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==" + "resolved" "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "is-array-buffer" "^3.0.1" + +"array-flatten@1.1.1": + "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + "version" "1.1.1" + +"array-includes@^3.1.5", "array-includes@^3.1.6": + "integrity" "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==" + "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" + "version" "3.1.6" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + "get-intrinsic" "^1.1.3" + "is-string" "^1.0.7" + +"array-union@^1.0.1": + "integrity" "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "array-uniq" "^1.0.1" + +"array-union@^2.1.0": + "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + "version" "2.1.0" + +"array-uniq@^1.0.1": + "integrity" "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" + "resolved" "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + "version" "1.0.3" + +"array.prototype.findlastindex@^1.2.2": + "integrity" "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==" + "resolved" "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz" + "version" "1.2.2" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + "es-shim-unscopables" "^1.0.0" + "get-intrinsic" "^1.1.3" + +"array.prototype.flat@^1.3.1": + "integrity" "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==" + "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + "es-shim-unscopables" "^1.0.0" + +"array.prototype.flatmap@^1.3.1": + "integrity" "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==" + "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + "es-shim-unscopables" "^1.0.0" + +"array.prototype.tosorted@^1.1.1": + "integrity" "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==" + "resolved" "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + "es-shim-unscopables" "^1.0.0" + "get-intrinsic" "^1.1.3" + +"arraybuffer.prototype.slice@^1.0.1": + "integrity" "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==" + "resolved" "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "array-buffer-byte-length" "^1.0.0" + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "get-intrinsic" "^1.2.1" + "is-array-buffer" "^3.0.2" + "is-shared-array-buffer" "^1.0.2" + +"asn1@~0.2.3": + "integrity" "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==" + "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + "version" "0.2.6" + dependencies: + "safer-buffer" "~2.1.0" + +"assert-plus@^1.0.0", "assert-plus@1.0.0": + "integrity" "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "version" "1.0.0" + +"assert@^2.0.0": + "integrity" "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==" + "resolved" "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "es6-object-assign" "^1.1.0" + "is-nan" "^1.2.1" + "object-is" "^1.0.1" + "util" "^0.12.0" + +"ast-types-flow@^0.0.7": + "integrity" "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" + "resolved" "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" + "version" "0.0.7" + +"astral-regex@^2.0.0": + "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + "version" "2.0.0" + +"async-eventemitter@^0.2.2": + "integrity" "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==" + "resolved" "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz" + "version" "0.2.4" + dependencies: + "async" "^2.4.0" + +"async-limiter@~1.0.0": + "integrity" "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + "resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + "version" "1.0.1" + +"async-mutex@^0.2.6": + "integrity" "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==" + "resolved" "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz" + "version" "0.2.6" + dependencies: + "tslib" "^2.0.0" + +"async@^1.4.2": + "integrity" "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" + "resolved" "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + "version" "1.5.2" + +"async@^2.0.1", "async@^2.1.2", "async@^2.4.0", "async@^2.5.0": + "integrity" "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==" + "resolved" "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + "version" "2.6.4" + dependencies: + "lodash" "^4.17.14" + +"async@^3.2.0": + "integrity" "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "resolved" "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + "version" "3.2.4" + +"async@^3.2.3": + "integrity" "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "resolved" "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + "version" "3.2.4" + +"asynckit@^0.4.0": + "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + "version" "0.4.0" + +"at-least-node@^1.0.0": + "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + "version" "1.0.0" + +"atomic-sleep@^1.0.0": + "integrity" "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" + "resolved" "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz" + "version" "1.0.0" + +"attr-accept@^2.2.2": + "integrity" "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" + "resolved" "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz" + "version" "2.2.2" + +"available-typed-arrays@^1.0.5": + "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + "version" "1.0.5" + +"aws-sign2@~0.7.0": + "integrity" "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + "version" "0.7.0" + +"aws4@^1.8.0": + "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" + "version" "1.11.0" + +"axe-core@^4.4.3": + "integrity" "sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w==" + "resolved" "https://registry.npmjs.org/axe-core/-/axe-core-4.6.1.tgz" + "version" "4.6.1" + +"axios@^0.26.1": + "version" "0.26.1" + dependencies: + "follow-redirects" "^1.14.8" + +"axobject-query@^2.2.0": + "integrity" "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" + "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" + "version" "2.2.0" + +"babel-jest@^28.1.3": + "integrity" "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==" + "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/transform" "^28.1.3" "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.1.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-loader@^8.2.5: - version "8.3.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" - integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + "babel-plugin-istanbul" "^6.1.1" + "babel-preset-jest" "^28.1.3" + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "slash" "^3.0.0" + +"babel-loader@^8.2.5": + "integrity" "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==" + "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz" + "version" "8.3.0" + dependencies: + "find-cache-dir" "^3.3.1" + "loader-utils" "^2.0.0" + "make-dir" "^3.1.0" + "schema-utils" "^2.6.5" + +"babel-plugin-istanbul@^6.1.1": + "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" + "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + "version" "6.1.1" dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" + "istanbul-lib-instrument" "^5.0.4" + "test-exclude" "^6.0.0" -babel-plugin-jest-hoist@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" - integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== +"babel-plugin-jest-hoist@^28.1.3": + "integrity" "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==" + "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz" + "version" "28.1.3" dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== +"babel-plugin-macros@^3.1.0": + "integrity" "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==" + "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" + "version" "3.1.0" dependencies: "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" + "cosmiconfig" "^7.0.0" + "resolve" "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== +"babel-plugin-polyfill-corejs2@^0.3.3": + "integrity" "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" + "version" "0.3.3" dependencies: "@babel/compat-data" "^7.17.7" "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" + "semver" "^6.1.1" -babel-plugin-polyfill-corejs3@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" - integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== +"babel-plugin-polyfill-corejs3@^0.6.0": + "integrity" "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" + "version" "0.6.0" dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" + "core-js-compat" "^3.25.1" -babel-plugin-polyfill-regenerator@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== +"babel-plugin-polyfill-regenerator@^0.4.1": + "integrity" "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" + "version" "0.4.1" dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== +"babel-preset-current-node-syntax@^1.0.0": + "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" + "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + "version" "1.0.1" dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -5553,2406 +5493,2491 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" - integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== - dependencies: - babel-plugin-jest-hoist "^28.1.3" - babel-preset-current-node-syntax "^1.0.0" - -backoff@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" - integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== - dependencies: - precond "0.2" - -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== - -base-x@^3.0.2, base-x@^3.0.8, base-x@^3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - -base-x@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" - integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== - -base64-js@^1.0.2, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bchaddrjs@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/bchaddrjs/-/bchaddrjs-0.5.2.tgz#1f52b5077329774e7c82d4882964628106bb11a0" - integrity sha512-OO7gIn3m7ea4FVx4cT8gdlWQR2+++EquhdpWQJH9BQjK63tJJ6ngB3QMZDO6DiBoXiIGUsTPHjlrHVxPGcGxLQ== - dependencies: - bs58check "2.1.2" - buffer "^6.0.3" - cashaddrjs "0.4.4" - stream-browserify "^3.0.0" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -bech32@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" - integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== - -big-integer@1.6.36: - version "1.6.36" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" - integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== - -big-integer@^1.6.48: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -bigint-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" - integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== - dependencies: - bindings "^1.3.0" - -bignumber.js@7.2.1: - version "7.2.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" - integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== - -bignumber.js@^9.0.0, bignumber.js@^9.0.1, bignumber.js@^9.1.0, bignumber.js@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" - integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bind-decorator@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f" - integrity sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg== - -bindings@^1.3.0, bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bip66@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" - integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== - dependencies: - safe-buffer "^5.0.1" - -bitcoin-ops@^1.3.0, bitcoin-ops@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz#e45de620398e22fd4ca6023de43974ff42240278" - integrity sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow== - -blake-hash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/blake-hash/-/blake-hash-2.0.0.tgz#af184dce641951126d05b7d1c3de3224f538d66e" - integrity sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w== - dependencies: - node-addon-api "^3.0.0" - node-gyp-build "^4.2.2" - readable-stream "^3.6.0" - -blakejs@^1.1.0, blakejs@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" - integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== - -blob-util@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" - integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== - -bluebird@^3.5.0, bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@4.11.6: - version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" - integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== - -bn.js@4.11.8: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -bnc-sdk@^4.6.7: - version "4.6.7" - resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.6.7.tgz#138a22e04c95c2c697fb836092358d21957e2114" - integrity sha512-jIQ6cmeRBgvH/YDLuYRr2+kxDGcAAi0SOvjlO5nQ5cWdbslw+ASWftd1HmxiVLNCiwEH5bSc/t8a0agZ5njTUQ== - dependencies: - crypto-es "^1.2.2" - nanoid "^3.3.1" - rxjs "^6.6.3" - sturdy-websocket "^0.1.12" - -body-parser@1.20.1, body-parser@^1.16.0: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - 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.1" - type-is "~1.6.18" - unpipe "1.0.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -borsh@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" - integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== - dependencies: - bn.js "^5.2.0" - bs58 "^4.0.0" - text-encoding-utf-8 "^1.0.2" - -bowser@^2.11.0, bowser@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" - integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== - -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" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.0.5, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserslist@^4.21.3, browserslist@^4.21.4: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== - dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - -bs58@^4.0.0, bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bs58@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" - integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== - dependencies: - base-x "^4.0.0" - -bs58check@2.1.2, bs58check@<3.0.0, bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - -bs58check@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" - integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== +"babel-preset-jest@^28.1.3": + "integrity" "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==" + "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz" + "version" "28.1.3" + dependencies: + "babel-plugin-jest-hoist" "^28.1.3" + "babel-preset-current-node-syntax" "^1.0.0" + +"backoff@^2.5.0": + "integrity" "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==" + "resolved" "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "precond" "0.2" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"base-x@^3.0.2", "base-x@^3.0.8", "base-x@^3.0.9": + "integrity" "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==" + "resolved" "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" + "version" "3.0.9" + dependencies: + "safe-buffer" "^5.0.1" + +"base-x@^4.0.0": + "integrity" "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + "resolved" "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz" + "version" "4.0.0" + +"base64-js@^1.3.1": + "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + "version" "1.5.1" + +"bchaddrjs@^0.5.2": + "integrity" "sha512-OO7gIn3m7ea4FVx4cT8gdlWQR2+++EquhdpWQJH9BQjK63tJJ6ngB3QMZDO6DiBoXiIGUsTPHjlrHVxPGcGxLQ==" + "resolved" "https://registry.npmjs.org/bchaddrjs/-/bchaddrjs-0.5.2.tgz" + "version" "0.5.2" + dependencies: + "bs58check" "2.1.2" + "buffer" "^6.0.3" + "cashaddrjs" "0.4.4" + "stream-browserify" "^3.0.0" + +"bcrypt-pbkdf@^1.0.0": + "integrity" "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==" + "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "tweetnacl" "^0.14.3" + +"bech32@^2.0.0": + "integrity" "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + "resolved" "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz" + "version" "2.0.0" + +"bech32@1.1.4": + "integrity" "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + "resolved" "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" + "version" "1.1.4" + +"big-integer@^1.6.48": + "integrity" "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" + "version" "1.6.51" + +"big-integer@1.6.36": + "integrity" "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==" + "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz" + "version" "1.6.36" + +"big.js@^5.2.2": + "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + "version" "5.2.2" + +"bigint-buffer@^1.1.5": + "integrity" "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==" + "resolved" "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "bindings" "^1.3.0" + +"bignumber.js@^9.0.0", "bignumber.js@^9.0.1", "bignumber.js@^9.1.0", "bignumber.js@^9.1.1": + "integrity" "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" + "resolved" "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz" + "version" "9.1.1" + +"bignumber.js@7.2.1": + "integrity" "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==" + "resolved" "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz" + "version" "7.2.1" + +"binary-extensions@^2.0.0": + "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + "version" "2.2.0" + +"bind-decorator@^1.0.11": + "integrity" "sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==" + "resolved" "https://registry.npmjs.org/bind-decorator/-/bind-decorator-1.0.11.tgz" + "version" "1.0.11" + +"bindings@^1.3.0", "bindings@^1.5.0": + "integrity" "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==" + "resolved" "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "file-uri-to-path" "1.0.0" + +"bip66@^1.1.5": + "integrity" "sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw==" + "resolved" "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "safe-buffer" "^5.0.1" + +"bitcoin-ops@^1.3.0", "bitcoin-ops@^1.4.1": + "integrity" "sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow==" + "resolved" "https://registry.npmjs.org/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz" + "version" "1.4.1" + +"blake-hash@^2.0.0": + "integrity" "sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w==" + "resolved" "https://registry.npmjs.org/blake-hash/-/blake-hash-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "node-addon-api" "^3.0.0" + "node-gyp-build" "^4.2.2" + "readable-stream" "^3.6.0" + +"blakejs@^1.1.0", "blakejs@^1.2.1": + "integrity" "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + "resolved" "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" + "version" "1.2.1" + +"blob-util@^2.0.2": + "integrity" "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==" + "resolved" "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz" + "version" "2.0.2" + +"bluebird@^3.5.0", "bluebird@^3.7.2": + "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + "version" "3.7.2" + +"bn.js@^4.11.0", "bn.js@^4.11.6", "bn.js@^4.11.8", "bn.js@^4.11.9": + "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + "version" "4.12.0" + +"bn.js@^5.1.1": + "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" + "version" "5.2.1" + +"bn.js@^5.1.2": + "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" + "version" "5.2.1" + +"bn.js@^5.2.0": + "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" + "version" "5.2.1" + +"bn.js@^5.2.1": + "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" + "version" "5.2.1" + +"bn.js@4.11.6": + "integrity" "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" + "version" "4.11.6" + +"bn.js@4.11.8": + "integrity" "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz" + "version" "4.11.8" + +"bnc-sdk@^4.6.7": + "integrity" "sha512-jIQ6cmeRBgvH/YDLuYRr2+kxDGcAAi0SOvjlO5nQ5cWdbslw+ASWftd1HmxiVLNCiwEH5bSc/t8a0agZ5njTUQ==" + "resolved" "https://registry.npmjs.org/bnc-sdk/-/bnc-sdk-4.6.7.tgz" + "version" "4.6.7" + dependencies: + "crypto-es" "^1.2.2" + "nanoid" "^3.3.1" + "rxjs" "^6.6.3" + "sturdy-websocket" "^0.1.12" + +"body-parser@^1.16.0": + "integrity" "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==" + "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" + "version" "1.20.2" + 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" + +"body-parser@1.20.1": + "integrity" "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==" + "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + "version" "1.20.1" + dependencies: + "bytes" "3.1.2" + "content-type" "~1.0.4" + "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.1" + "type-is" "~1.6.18" + "unpipe" "1.0.0" + +"boolbase@^1.0.0": + "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + "version" "1.0.0" + +"borsh@^0.7.0": + "integrity" "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==" + "resolved" "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz" + "version" "0.7.0" + dependencies: + "bn.js" "^5.2.0" + "bs58" "^4.0.0" + "text-encoding-utf-8" "^1.0.2" + +"bowser@^2.11.0", "bowser@^2.9.0": + "integrity" "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + "resolved" "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz" + "version" "2.11.0" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"brace-expansion@^2.0.1": + "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "balanced-match" "^1.0.0" + +"braces@^3.0.2", "braces@~3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "fill-range" "^7.0.1" + +"brorand@^1.0.5", "brorand@^1.1.0": + "integrity" "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + "version" "1.1.0" + +"browser-process-hrtime@^1.0.0": + "integrity" "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + "resolved" "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" + "version" "1.0.0" + +"browserify-aes@^1.0.6", "browserify-aes@^1.2.0": + "integrity" "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==" + "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "buffer-xor" "^1.0.3" + "cipher-base" "^1.0.0" + "create-hash" "^1.1.0" + "evp_bytestokey" "^1.0.3" + "inherits" "^2.0.1" + "safe-buffer" "^5.0.1" + +"browserslist@^4.21.3", "browserslist@^4.21.4", "browserslist@>= 4.21.0": + "integrity" "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + "version" "4.21.4" + dependencies: + "caniuse-lite" "^1.0.30001400" + "electron-to-chromium" "^1.4.251" + "node-releases" "^2.0.6" + "update-browserslist-db" "^1.0.9" + +"bs58@^4.0.0", "bs58@^4.0.1": + "integrity" "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==" + "resolved" "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "base-x" "^3.0.2" + +"bs58@^5.0.0": + "integrity" "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==" + "resolved" "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "base-x" "^4.0.0" + +"bs58check@^2.1.2", "bs58check@<3.0.0", "bs58check@2.1.2": + "integrity" "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==" + "resolved" "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "bs58" "^4.0.0" + "create-hash" "^1.1.0" + "safe-buffer" "^5.1.2" + +"bs58check@^3.0.1": + "integrity" "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==" + "resolved" "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz" + "version" "3.0.1" dependencies: "@noble/hashes" "^1.2.0" - bs58 "^5.0.0" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== - -buffer-from@^1.0.0, buffer-from@^1.1.1: - 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== - -buffer-from@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-0.1.2.tgz#15f4b9bcef012044df31142c14333caf6e0260d0" - integrity sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg== - -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" - integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -buffer@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.1.tgz#3cbea8c1463e5a0779e30b66d4c88c6ffa182ac2" - integrity sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -buffer@^5.0.5, buffer@^5.1.0, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bufferutil@^4.0.1: - version "4.0.7" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" - integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== - dependencies: - node-gyp-build "^4.3.0" - -builtin-modules@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -bytebuffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ== - dependencies: - long "~3" - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== - -cacheable-lookup@^6.0.4: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" - integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== - -cacheable-request@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" - integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^6.0.1" - responselike "^2.0.0" - -cachedir@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" - integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -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== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001400: - version "1.0.30001505" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001505.tgz" - integrity sha512-jaAOR5zVtxHfL0NjZyflVTtXm3D3J9P15zSJ7HmQF8dSKGA6tqzQq+0ZI3xkjyQj46I4/M0K2GbMpcAFOcbr3A== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -cashaddrjs@0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cashaddrjs/-/cashaddrjs-0.4.4.tgz#169f1ae620d325db77700273d972282adeeee331" - integrity sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA== - dependencies: - big-integer "1.6.36" - -cbor-sync@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cbor-sync/-/cbor-sync-1.0.4.tgz#5a11a1ab75c2a14d1af1b237fd84aa8c1593662f" - integrity sha512-GWlXN4wiz0vdWWXBU71Dvc1q3aBo0HytqwAZnXF1wOwjqNnDWA1vZ1gDMFLlqohak31VQzmhiYfiCX5QSSfagA== - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.0.2, 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" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -check-more-types@^2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" - integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== - -checkpoint-store@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" - integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== - dependencies: - functional-red-black-tree "^1.0.1" + "bs58" "^5.0.0" + +"bser@2.1.1": + "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" + "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "node-int64" "^0.4.0" + +"btoa@^1.2.1": + "integrity" "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" + "resolved" "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz" + "version" "1.2.1" + +"buffer-alloc-unsafe@^1.1.0": + "integrity" "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + "resolved" "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" + "version" "1.1.0" + +"buffer-alloc@^1.2.0": + "integrity" "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==" + "resolved" "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "buffer-alloc-unsafe" "^1.1.0" + "buffer-fill" "^1.0.0" + +"buffer-crc32@~0.2.3": + "integrity" "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + "version" "0.2.13" + +"buffer-fill@^1.0.0": + "integrity" "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + "resolved" "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" + "version" "1.0.0" + +"buffer-from@^1.0.0", "buffer-from@^1.1.1": + "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + "version" "1.1.2" + +"buffer-from@~0.1.1": + "integrity" "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" + "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz" + "version" "0.1.2" + +"buffer-to-arraybuffer@^0.0.5": + "integrity" "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==" + "resolved" "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz" + "version" "0.0.5" + +"buffer-xor@^1.0.3": + "integrity" "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + "version" "1.0.3" + +"buffer@^5.0.5", "buffer@^5.1.0", "buffer@^5.4.3", "buffer@^5.5.0", "buffer@^5.6.0": + "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + "version" "5.7.1" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.1.13" + +"buffer@^6.0.3": + "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.2.1" + +"buffer@~6.0.3": + "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.2.1" + +"buffer@6.0.3": + "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.2.1" + +"bufferutil@^4.0.1": + "integrity" "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==" + "resolved" "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz" + "version" "4.0.7" + dependencies: + "node-gyp-build" "^4.3.0" + +"builtin-modules@^3.1.0": + "integrity" "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==" + "resolved" "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" + "version" "3.3.0" + +"bytebuffer@^5.0.1": + "integrity" "sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ==" + "resolved" "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "long" "~3" + +"bytes@3.1.2": + "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + "version" "3.1.2" + +"cacheable-lookup@^5.0.3": + "integrity" "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" + "version" "5.0.4" + +"cacheable-lookup@^6.0.4": + "integrity" "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==" + "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz" + "version" "6.1.0" + +"cacheable-request@^7.0.2": + "integrity" "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==" + "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz" + "version" "7.0.4" + dependencies: + "clone-response" "^1.0.2" + "get-stream" "^5.1.0" + "http-cache-semantics" "^4.0.0" + "keyv" "^4.0.0" + "lowercase-keys" "^2.0.0" + "normalize-url" "^6.0.1" + "responselike" "^2.0.0" + +"cachedir@^2.3.0": + "integrity" "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==" + "resolved" "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz" + "version" "2.3.0" + +"call-bind@^1.0.0", "call-bind@^1.0.2": + "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" + "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "function-bind" "^1.1.1" + "get-intrinsic" "^1.0.2" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"camelcase@^5.0.0", "camelcase@^5.3.1": + "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + "version" "5.3.1" + +"camelcase@^6.2.0": + "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + "version" "6.3.0" + +"caniuse-lite@^1.0.30001332", "caniuse-lite@^1.0.30001400": + "version" "1.0.30001439" + +"caseless@~0.12.0": + "integrity" "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + "version" "0.12.0" + +"cashaddrjs@0.4.4": + "integrity" "sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA==" + "resolved" "https://registry.npmjs.org/cashaddrjs/-/cashaddrjs-0.4.4.tgz" + "version" "0.4.4" + dependencies: + "big-integer" "1.6.36" + +"cbor-sync@^1.0.4": + "integrity" "sha512-GWlXN4wiz0vdWWXBU71Dvc1q3aBo0HytqwAZnXF1wOwjqNnDWA1vZ1gDMFLlqohak31VQzmhiYfiCX5QSSfagA==" + "resolved" "https://registry.npmjs.org/cbor-sync/-/cbor-sync-1.0.4.tgz" + "version" "1.0.4" + +"chalk@^2.0.0": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^2.4.2": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^3.0.0": + "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@^4.0.0", "chalk@^4.0.2", "chalk@^4.1.0": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"char-regex@^1.0.2": + "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" + "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + "version" "1.0.2" + +"check-more-types@^2.24.0": + "integrity" "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==" + "resolved" "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz" + "version" "2.24.0" + +"checkpoint-store@^1.1.0": + "integrity" "sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg==" + "resolved" "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "functional-red-black-tree" "^1.0.1" "chokidar@>=3.0.0 <4.0.0": - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" + "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + "version" "3.5.3" + dependencies: + "anymatch" "~3.1.2" + "braces" "~3.0.2" + "glob-parent" "~5.1.2" + "is-binary-path" "~2.1.0" + "is-glob" "~4.0.1" + "normalize-path" "~3.0.0" + "readdirp" "~3.6.0" optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -ci-info@^3.2.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.0.tgz#6d01b3696c59915b6ce057e4aa4adfc2fa25f5ef" - integrity sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog== - -cids@^0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" - integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== - dependencies: - buffer "^5.5.0" - class-is "^1.1.0" - multibase "~0.6.0" - multicodec "^1.0.0" - multihashes "~0.4.15" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - -class-is@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== - -classnames@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -clean-webpack-plugin@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz#72947d4403d452f38ed61a9ff0ada8122aacd729" - integrity sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w== - dependencies: - del "^4.1.1" - -cli-color@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879" - integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.61" - es6-iterator "^2.0.3" - memoizee "^0.4.15" - timers-ext "^0.1.7" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-table3@~0.6.1: - version "0.6.3" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" - integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== - dependencies: - string-width "^4.2.0" + "fsevents" "~2.3.2" + +"chownr@^1.1.4": + "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + "version" "1.1.4" + +"ci-info@^3.2.0": + "integrity" "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz" + "version" "3.7.0" + +"cids@^0.7.1": + "integrity" "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==" + "resolved" "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz" + "version" "0.7.5" + dependencies: + "buffer" "^5.5.0" + "class-is" "^1.1.0" + "multibase" "~0.6.0" + "multicodec" "^1.0.0" + "multihashes" "~0.4.15" + +"cipher-base@^1.0.0", "cipher-base@^1.0.1", "cipher-base@^1.0.3": + "integrity" "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==" + "resolved" "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "inherits" "^2.0.1" + "safe-buffer" "^5.0.1" + +"cjs-module-lexer@^1.0.0": + "integrity" "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" + "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" + "version" "1.2.2" + +"class-is@^1.1.0": + "integrity" "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" + "resolved" "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz" + "version" "1.1.0" + +"classnames@^2.3.1": + "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" + "version" "2.3.2" + +"clean-stack@^2.0.0": + "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + "version" "2.2.0" + +"clean-webpack-plugin@^4.0.0": + "integrity" "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==" + "resolved" "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "del" "^4.1.1" + +"cli-color@^2.0.3": + "integrity" "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==" + "resolved" "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "d" "^1.0.1" + "es5-ext" "^0.10.61" + "es6-iterator" "^2.0.3" + "memoizee" "^0.4.15" + "timers-ext" "^0.1.7" + +"cli-cursor@^3.1.0": + "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "restore-cursor" "^3.1.0" + +"cli-table3@~0.6.1": + "integrity" "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==" + "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "string-width" "^4.2.0" optionalDependencies: "@colors/colors" "1.5.0" -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -clone@^2.0.0, clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -clsx@^1.1.0, clsx@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - -clsx@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" - integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -code-block-writer@^11.0.0: - version "11.0.3" - resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-11.0.3.tgz#9eec2993edfb79bfae845fbc093758c0a0b73b76" - integrity sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw== - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^2.0.16: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - 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" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -commander@^2.20.0, commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -common-tags@^1.8.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.4.7: - 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" - -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-hash@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" - integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== - dependencies: - cids "^0.7.1" - multicodec "^0.5.5" - multihashes "^0.4.15" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -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.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -copy-anything@^2.0.1: - version "2.0.6" - resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" - integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== - dependencies: - is-what "^3.14.1" - -copy-to-clipboard@^3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" - integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== - dependencies: - toggle-selection "^1.0.6" - -core-js-compat@^3.25.1: - version "3.26.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.1.tgz#0e710b09ebf689d719545ac36e49041850f943df" - integrity sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A== - dependencies: - browserslist "^4.21.4" - -core-js-pure@^3.25.1: - version "3.26.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.1.tgz#653f4d7130c427820dcecd3168b594e8bb095a33" - integrity sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -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== - -cors@^2.8.1: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== +"cli-truncate@^2.1.0": + "integrity" "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==" + "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "slice-ansi" "^3.0.0" + "string-width" "^4.2.0" + +"cliui@^5.0.0": + "integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "string-width" "^3.1.0" + "strip-ansi" "^5.2.0" + "wrap-ansi" "^5.1.0" + +"cliui@^6.0.0": + "integrity" "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "string-width" "^4.2.0" + "strip-ansi" "^6.0.0" + "wrap-ansi" "^6.2.0" + +"cliui@^8.0.1": + "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + "version" "8.0.1" + dependencies: + "string-width" "^4.2.0" + "strip-ansi" "^6.0.1" + "wrap-ansi" "^7.0.0" + +"clone-response@^1.0.2": + "integrity" "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==" + "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "mimic-response" "^1.0.0" + +"clone@^2.0.0", "clone@^2.1.1": + "integrity" "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + "resolved" "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" + "version" "2.1.2" + +"clsx@^1.1.0", "clsx@^1.2.1": + "integrity" "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" + "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" + "version" "1.2.1" + +"clsx@^2.0.0": + "integrity" "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + "resolved" "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz" + "version" "2.0.0" + +"co@^4.6.0": + "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" + "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + "version" "4.6.0" + +"code-block-writer@^11.0.0": + "integrity" "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==" + "resolved" "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz" + "version" "11.0.3" + +"collect-v8-coverage@^1.0.0": + "integrity" "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" + "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" + "version" "1.0.1" + +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"color-name@1.1.3": + "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"colorette@^2.0.16": + "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" + "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" + "version" "2.0.19" + +"combined-stream@^1.0.6", "combined-stream@^1.0.8", "combined-stream@~1.0.6": + "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" + "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "delayed-stream" "~1.0.0" + +"command-line-args@^5.1.1": + "integrity" "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==" + "resolved" "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "array-back" "^3.1.0" + "find-replace" "^3.0.0" + "lodash.camelcase" "^4.3.0" + "typical" "^4.0.0" + +"command-line-usage@^6.1.0": + "integrity" "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==" + "resolved" "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz" + "version" "6.1.3" + dependencies: + "array-back" "^4.0.2" + "chalk" "^2.4.2" + "table-layout" "^1.0.2" + "typical" "^5.2.0" + +"commander@^2.20.0", "commander@^2.20.3": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^5.1.0": + "integrity" "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + "resolved" "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" + "version" "5.1.0" + +"commander@^6.2.1": + "integrity" "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + "resolved" "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" + "version" "6.2.1" + +"commander@^7.2.0": + "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + "version" "7.2.0" + +"common-tags@^1.8.0": + "integrity" "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" + "resolved" "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" + "version" "1.8.2" + +"commondir@^1.0.1": + "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + "version" "1.0.1" + +"concat-map@0.0.1": + "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"concat-stream@^1.4.7": + "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" + "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + "version" "1.6.2" + dependencies: + "buffer-from" "^1.0.0" + "inherits" "^2.0.3" + "readable-stream" "^2.2.2" + "typedarray" "^0.0.6" + +"content-disposition@0.5.4": + "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" + "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + "version" "0.5.4" + dependencies: + "safe-buffer" "5.2.1" + +"content-hash@^2.5.2": + "integrity" "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==" + "resolved" "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz" + "version" "2.5.2" + dependencies: + "cids" "^0.7.1" + "multicodec" "^0.5.5" + "multihashes" "^0.4.15" + +"content-type@~1.0.4", "content-type@~1.0.5": + "integrity" "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + "version" "1.0.5" + +"convert-source-map@^1.4.0", "convert-source-map@^1.5.0", "convert-source-map@^1.6.0", "convert-source-map@^1.7.0": + "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + "version" "1.9.0" + +"cookie-signature@1.0.6": + "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "version" "1.0.6" + +"cookie@0.5.0": + "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + "version" "0.5.0" + +"copy-anything@^2.0.1": + "integrity" "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==" + "resolved" "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "is-what" "^3.14.1" + +"copy-to-clipboard@^3.3.1": + "integrity" "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==" + "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" + "version" "3.3.3" + dependencies: + "toggle-selection" "^1.0.6" + +"core-js-compat@^3.25.1": + "integrity" "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==" + "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz" + "version" "3.26.1" + dependencies: + "browserslist" "^4.21.4" + +"core-js-pure@^3.25.1": + "integrity" "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==" + "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz" + "version" "3.26.1" + +"core-util-is@~1.0.0": + "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + "version" "1.0.3" + +"core-util-is@1.0.2": + "integrity" "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "version" "1.0.2" + +"cors@^2.8.1": + "integrity" "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==" + "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + "version" "2.8.5" + dependencies: + "object-assign" "^4" + "vary" "^1" + +"cosmiconfig@^7.0.0", "cosmiconfig@^7.0.1": + "integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + "version" "7.1.0" dependencies: "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -crc@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" - integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== - dependencies: - buffer "^5.1.0" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-fetch@^2.1.0: - version "2.2.6" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.6.tgz#2ef0bb39a24ac034787965c457368a28730e220a" - integrity sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA== - dependencies: - node-fetch "^2.6.7" - whatwg-fetch "^2.0.4" - -cross-fetch@^3.1.4, cross-fetch@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-es@^1.2.2: - version "1.2.7" - resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" - integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== - -crypto-js@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" - integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" - integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" - integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== - -csstype@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -cypress-file-upload@^5.0.8: - version "5.0.8" - resolved "https://registry.yarnpkg.com/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz#d8824cbeaab798e44be8009769f9a6c9daa1b4a1" - integrity sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g== - -cypress@^11.1.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-11.2.0.tgz#63edef8c387b687066c5493f6f0ad7b9ced4b2b7" - integrity sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA== + "import-fresh" "^3.2.1" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.10.0" + +"crc-32@^1.2.0": + "integrity" "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + "resolved" "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz" + "version" "1.2.2" + +"crc@^3.8.0": + "integrity" "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==" + "resolved" "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz" + "version" "3.8.0" + dependencies: + "buffer" "^5.1.0" + +"create-hash@^1.1.0", "create-hash@^1.1.2", "create-hash@^1.2.0": + "integrity" "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==" + "resolved" "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "cipher-base" "^1.0.1" + "inherits" "^2.0.1" + "md5.js" "^1.3.4" + "ripemd160" "^2.0.1" + "sha.js" "^2.4.0" + +"create-hmac@^1.1.4", "create-hmac@^1.1.7": + "integrity" "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==" + "resolved" "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "cipher-base" "^1.0.3" + "create-hash" "^1.1.0" + "inherits" "^2.0.1" + "ripemd160" "^2.0.0" + "safe-buffer" "^5.0.1" + "sha.js" "^2.4.8" + +"create-require@^1.1.0": + "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + "version" "1.1.1" + +"cross-env@^7.0.3": + "integrity" "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==" + "resolved" "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "cross-spawn" "^7.0.1" + +"cross-fetch@^2.1.0": + "integrity" "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==" + "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz" + "version" "2.2.6" + dependencies: + "node-fetch" "^2.6.7" + "whatwg-fetch" "^2.0.4" + +"cross-fetch@^3.1.4", "cross-fetch@^3.1.5", "cross-fetch@^3.1.6": + "integrity" "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==" + "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" + "version" "3.1.8" + dependencies: + "node-fetch" "^2.6.12" + +"cross-spawn@^5.0.1": + "integrity" "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "lru-cache" "^4.0.1" + "shebang-command" "^1.2.0" + "which" "^1.2.9" + +"cross-spawn@^7.0.0", "cross-spawn@^7.0.1", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"crypto-es@^1.2.2": + "integrity" "sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ==" + "resolved" "https://registry.npmjs.org/crypto-es/-/crypto-es-1.2.7.tgz" + "version" "1.2.7" + +"crypto-js@^4.1.1": + "integrity" "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "resolved" "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" + "version" "4.1.1" + +"crypto-random-string@^2.0.0": + "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" + "version" "2.0.0" + +"css-select@^4.1.3": + "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" + "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "boolbase" "^1.0.0" + "css-what" "^6.0.1" + "domhandler" "^4.3.1" + "domutils" "^2.8.0" + "nth-check" "^2.0.1" + +"css-tree@^1.1.2", "css-tree@^1.1.3": + "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" + "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "mdn-data" "2.0.14" + "source-map" "^0.6.1" + +"css-what@^6.0.1": + "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + "version" "6.1.0" + +"css.escape@^1.5.1": + "integrity" "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + "resolved" "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" + "version" "1.5.1" + +"cssesc@^3.0.0": + "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + "version" "3.0.0" + +"csso@^4.2.0": + "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" + "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "css-tree" "^1.1.2" + +"cssom@^0.5.0": + "integrity" "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" + "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" + "version" "0.5.0" + +"cssom@~0.3.6": + "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" + "version" "0.3.8" + +"cssstyle@^2.3.0": + "integrity" "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==" + "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "cssom" "~0.3.6" + +"csstype@^3.0.2", "csstype@^3.1.2": + "integrity" "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" + "version" "3.1.2" + +"cypress-file-upload@^5.0.8": + "integrity" "sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g==" + "resolved" "https://registry.npmjs.org/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz" + "version" "5.0.8" + +"cypress@^11.1.0", "cypress@^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", "cypress@>3.0.0": + "integrity" "sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA==" + "resolved" "https://registry.npmjs.org/cypress/-/cypress-11.2.0.tgz" + "version" "11.2.0" dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" "@types/node" "^14.14.31" "@types/sinonjs__fake-timers" "8.1.1" "@types/sizzle" "^2.3.2" - arch "^2.2.0" - blob-util "^2.0.2" - bluebird "^3.7.2" - buffer "^5.6.0" - cachedir "^2.3.0" - chalk "^4.1.0" - check-more-types "^2.24.0" - cli-cursor "^3.1.0" - cli-table3 "~0.6.1" - commander "^5.1.0" - common-tags "^1.8.0" - dayjs "^1.10.4" - debug "^4.3.2" - enquirer "^2.3.6" - eventemitter2 "6.4.7" - execa "4.1.0" - executable "^4.1.1" - extract-zip "2.0.1" - figures "^3.2.0" - fs-extra "^9.1.0" - getos "^3.2.1" - is-ci "^3.0.0" - is-installed-globally "~0.4.0" - lazy-ass "^1.6.0" - listr2 "^3.8.3" - lodash "^4.17.21" - log-symbols "^4.0.0" - minimist "^1.2.6" - ospath "^1.2.2" - pretty-bytes "^5.6.0" - proxy-from-env "1.0.0" - request-progress "^3.0.0" - semver "^7.3.2" - supports-color "^8.1.1" - tmp "~0.2.1" - untildify "^4.0.0" - yauzl "^2.10.0" - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -damerau-levenshtein@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -data-urls@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" - integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== - dependencies: - abab "^2.0.6" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - -date-fns@^2.29.2: - version "2.29.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" - integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== - -dayjs@^1.10.4: - version "1.11.7" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" - integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== - -debug@2.6.9, debug@^2.2.0, 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@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^3.1.0, debug@^3.2.6, 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" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decimal.js@^10.2.0, decimal.js@^10.3.1: - version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== - dependencies: - mimic-response "^1.0.0" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - -deep-equal@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.1.0.tgz#5ba60402cf44ab92c2c07f3f3312c3d857a0e1dd" - integrity sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA== - dependencies: - call-bind "^1.0.2" - es-get-iterator "^1.1.2" - get-intrinsic "^1.1.3" - is-arguments "^1.1.1" - is-date-object "^1.0.5" - is-regex "^1.1.4" - isarray "^2.0.5" - object-is "^1.1.5" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - side-channel "^1.0.4" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.8" - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -deferred-leveldown@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" - integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== - dependencies: - abstract-leveldown "~2.6.0" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + "arch" "^2.2.0" + "blob-util" "^2.0.2" + "bluebird" "^3.7.2" + "buffer" "^5.6.0" + "cachedir" "^2.3.0" + "chalk" "^4.1.0" + "check-more-types" "^2.24.0" + "cli-cursor" "^3.1.0" + "cli-table3" "~0.6.1" + "commander" "^5.1.0" + "common-tags" "^1.8.0" + "dayjs" "^1.10.4" + "debug" "^4.3.2" + "enquirer" "^2.3.6" + "eventemitter2" "6.4.7" + "execa" "4.1.0" + "executable" "^4.1.1" + "extract-zip" "2.0.1" + "figures" "^3.2.0" + "fs-extra" "^9.1.0" + "getos" "^3.2.1" + "is-ci" "^3.0.0" + "is-installed-globally" "~0.4.0" + "lazy-ass" "^1.6.0" + "listr2" "^3.8.3" + "lodash" "^4.17.21" + "log-symbols" "^4.0.0" + "minimist" "^1.2.6" + "ospath" "^1.2.2" + "pretty-bytes" "^5.6.0" + "proxy-from-env" "1.0.0" + "request-progress" "^3.0.0" + "semver" "^7.3.2" + "supports-color" "^8.1.1" + "tmp" "~0.2.1" + "untildify" "^4.0.0" + "yauzl" "^2.10.0" + +"d@^1.0.1", "d@1": + "integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==" + "resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "es5-ext" "^0.10.50" + "type" "^1.0.1" + +"damerau-levenshtein@^1.0.8": + "integrity" "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + "resolved" "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" + "version" "1.0.8" + +"dashdash@^1.12.0": + "integrity" "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==" + "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + "version" "1.14.1" + dependencies: + "assert-plus" "^1.0.0" + +"data-urls@^3.0.1": + "integrity" "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==" + "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "abab" "^2.0.6" + "whatwg-mimetype" "^3.0.0" + "whatwg-url" "^11.0.0" + +"date-fns@^2.0.0", "date-fns@^2.25.0", "date-fns@^2.29.2": + "integrity" "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" + "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz" + "version" "2.29.3" + +"dayjs@^1.10.4", "dayjs@^1.10.7", "dayjs@^1.8.17": + "integrity" "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + "resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz" + "version" "1.11.7" + +"debug@^2.2.0": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"debug@^3.1.0": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" + dependencies: + "ms" "^2.1.1" + +"debug@^3.2.6": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" + dependencies: + "ms" "^2.1.1" + +"debug@^3.2.7": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" + dependencies: + "ms" "^2.1.1" + +"debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.2", "debug@^4.3.4", "debug@4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debug@2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"decamelize@^1.2.0": + "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "version" "1.2.0" + +"decimal.js@^10.2.0", "decimal.js@^10.3.1": + "integrity" "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + "resolved" "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" + "version" "10.4.3" + +"decode-uri-component@^0.2.0", "decode-uri-component@^0.2.2": + "integrity" "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" + "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz" + "version" "0.2.2" + +"decompress-response@^3.3.0": + "integrity" "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==" + "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "mimic-response" "^1.0.0" + +"decompress-response@^6.0.0": + "integrity" "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" + "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "mimic-response" "^3.1.0" + +"dedent@^0.7.0": + "integrity" "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + "resolved" "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + "version" "0.7.0" + +"deep-equal@^2.0.5": + "integrity" "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==" + "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "call-bind" "^1.0.2" + "es-get-iterator" "^1.1.2" + "get-intrinsic" "^1.1.3" + "is-arguments" "^1.1.1" + "is-date-object" "^1.0.5" + "is-regex" "^1.1.4" + "isarray" "^2.0.5" + "object-is" "^1.1.5" + "object-keys" "^1.1.1" + "object.assign" "^4.1.4" + "regexp.prototype.flags" "^1.4.3" + "side-channel" "^1.0.4" + "which-boxed-primitive" "^1.0.2" + "which-collection" "^1.0.1" + "which-typed-array" "^1.1.8" + +"deep-extend@~0.6.0": + "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + "version" "0.6.0" + +"deep-is@^0.1.3", "deep-is@~0.1.3": + "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + "version" "0.1.4" + +"deepmerge@^4.2.2": + "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + "version" "4.2.2" + +"defer-to-connect@^2.0.0", "defer-to-connect@^2.0.1": + "integrity" "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" + "version" "2.0.1" + +"deferred-leveldown@~1.2.1": + "integrity" "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==" + "resolved" "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz" + "version" "1.2.2" + dependencies: + "abstract-leveldown" "~2.6.0" + +"define-properties@^1.1.3", "define-properties@^1.1.4", "define-properties@^1.2.0": + "integrity" "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==" + "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "has-property-descriptors" "^1.0.0" + "object-keys" "^1.1.1" + +"del@^4.1.1": + "integrity" "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==" + "resolved" "https://registry.npmjs.org/del/-/del-4.1.1.tgz" + "version" "4.1.1" dependencies: "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -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== - -depd@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-browser@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.0.tgz#c9cd5afa96a6a19fda0bbe9e9be48a6b6e1e9c97" - integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== - -detect-browser@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" - integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" - integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== - -diff-sequences@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" - integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dijkstrajs@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257" - integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: - version "0.5.14" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz#56082f71b1dc7aac69d83c4285eef39c15d93f56" - integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg== - -dom-helpers@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" - integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + "globby" "^6.1.0" + "is-path-cwd" "^2.0.0" + "is-path-in-cwd" "^2.0.0" + "p-map" "^2.0.0" + "pify" "^4.0.1" + "rimraf" "^2.6.3" + +"delay@^5.0.0": + "integrity" "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==" + "resolved" "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz" + "version" "5.0.0" + +"delayed-stream@~1.0.0": + "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "version" "1.0.0" + +"depd@2.0.0": + "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + "version" "2.0.0" + +"destroy@1.2.0": + "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + "version" "1.2.0" + +"detect-browser@5.2.0": + "integrity" "sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==" + "resolved" "https://registry.npmjs.org/detect-browser/-/detect-browser-5.2.0.tgz" + "version" "5.2.0" + +"detect-browser@5.3.0": + "integrity" "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + "resolved" "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz" + "version" "5.3.0" + +"detect-newline@^3.0.0": + "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" + "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + "version" "3.1.0" + +"diff-sequences@^28.1.1": + "integrity" "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==" + "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz" + "version" "28.1.1" + +"diff-sequences@^29.3.1": + "integrity" "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==" + "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz" + "version" "29.3.1" + +"diff@^4.0.1": + "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + "version" "4.0.2" + +"dijkstrajs@^1.0.1": + "integrity" "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + "resolved" "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz" + "version" "1.0.2" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"doctrine@^2.1.0": + "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "esutils" "^2.0.2" + +"doctrine@^3.0.0": + "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "esutils" "^2.0.2" + +"dom-accessibility-api@^0.5.6", "dom-accessibility-api@^0.5.9": + "integrity" "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==" + "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" + "version" "0.5.14" + +"dom-helpers@^5.0.1": + "integrity" "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==" + "resolved" "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" + "version" "5.2.1" dependencies: "@babel/runtime" "^7.8.7" - csstype "^3.0.2" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domexception@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" - integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== - dependencies: - webidl-conversions "^7.0.0" - -domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dotenv@^16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== - -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" - integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== - dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" - -duplexer2@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== - dependencies: - readable-stream "^2.0.2" - -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" - integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== - dependencies: - end-of-stream "^1.4.1" - inherits "^2.0.3" - readable-stream "^3.1.1" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -eccrypto@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/eccrypto/-/eccrypto-1.1.6.tgz#846bd1222323036f7a3515613704386399702bd3" - integrity sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A== - dependencies: - acorn "7.1.1" - elliptic "6.5.4" - es6-promise "4.2.8" - nan "2.14.0" + "csstype" "^3.0.2" + +"dom-serializer@^1.0.1": + "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" + "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.2.0" + "entities" "^2.0.0" + +"dom-walk@^0.1.0": + "integrity" "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + "resolved" "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" + "version" "0.1.2" + +"domelementtype@^2.0.1", "domelementtype@^2.2.0": + "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + "version" "2.3.0" + +"domexception@^4.0.0": + "integrity" "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==" + "resolved" "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "webidl-conversions" "^7.0.0" + +"domhandler@^4.2.0", "domhandler@^4.3.1": + "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" + "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + "version" "4.3.1" + dependencies: + "domelementtype" "^2.2.0" + +"domutils@^2.8.0": + "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" + "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "dom-serializer" "^1.0.1" + "domelementtype" "^2.2.0" + "domhandler" "^4.2.0" + +"dotenv@^16.0.3": + "integrity" "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==" + "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz" + "version" "16.3.1" + +"drbg.js@^1.0.1": + "integrity" "sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g==" + "resolved" "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "browserify-aes" "^1.0.6" + "create-hash" "^1.1.2" + "create-hmac" "^1.1.4" + +"duplexer@^0.1.2": + "integrity" "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "resolved" "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + "version" "0.1.2" + +"duplexer2@^0.1.2": + "integrity" "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==" + "resolved" "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" + "version" "0.1.4" + dependencies: + "readable-stream" "^2.0.2" + +"duplexify@^4.1.2": + "integrity" "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==" + "resolved" "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "end-of-stream" "^1.4.1" + "inherits" "^2.0.3" + "readable-stream" "^3.1.1" + "stream-shift" "^1.0.0" + +"ecc-jsbn@~0.1.1": + "integrity" "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==" + "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + "version" "0.1.2" + dependencies: + "jsbn" "~0.1.0" + "safer-buffer" "^2.1.0" + +"eccrypto@1.1.6": + "integrity" "sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A==" + "resolved" "https://registry.npmjs.org/eccrypto/-/eccrypto-1.1.6.tgz" + "version" "1.1.6" + dependencies: + "acorn" "7.1.1" + "elliptic" "6.5.4" + "es6-promise" "4.2.8" + "nan" "2.14.0" optionalDependencies: - secp256k1 "3.7.1" - -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== - -eip55@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/eip55/-/eip55-2.1.1.tgz#28b743c4701ac3c811b1e9fe67e39cf1d0781b96" - integrity sha512-WcagVAmNu2Ww2cDUfzuWVntYwFxbvZ5MvIyLZpMjTTkjD6sCvkGOiS86jTppzu9/gWsc8isLHAeMBWK02OnZmA== - dependencies: - keccak "^3.0.3" - -ejs@^3.1.6: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.4.251: - version "1.4.284" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" - integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== - -elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.4.1, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encode-utf8@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" - integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== - -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== - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^5.10.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" - integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" - integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== - -errno@^0.1.1, errno@~0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.20.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.5.tgz#e6dc99177be37cacda5988e692c3fa8b218e95d2" - integrity sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" - get-symbol-description "^1.0.0" - gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.2" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" - unbox-primitive "^1.0.2" - -es-get-iterator@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" - integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.0" - has-symbols "^1.0.1" - is-arguments "^1.1.0" - is-map "^2.0.2" - is-set "^2.0.2" - is-string "^1.0.5" - isarray "^2.0.5" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -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" - -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.62" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" - integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - next-tick "^1.1.0" - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-object-assign@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" - integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== - -es6-promise@4.2.8, es6-promise@^4.0.3, es6-promise@^4.2.8: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== - dependencies: - es6-promise "^4.0.3" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -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.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -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== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" + "secp256k1" "3.7.1" + +"ee-first@1.1.1": + "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "version" "1.1.1" + +"ejs@^3.1.6": + "integrity" "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==" + "resolved" "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz" + "version" "3.1.8" + dependencies: + "jake" "^10.8.5" + +"electron-to-chromium@^1.4.251": + "integrity" "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" + "version" "1.4.284" + +"elliptic@^6.4.0", "elliptic@^6.4.1", "elliptic@^6.5.2", "elliptic@^6.5.4", "elliptic@6.5.4": + "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" + "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "bn.js" "^4.11.9" + "brorand" "^1.1.0" + "hash.js" "^1.0.0" + "hmac-drbg" "^1.0.1" + "inherits" "^2.0.4" + "minimalistic-assert" "^1.0.1" + "minimalistic-crypto-utils" "^1.0.1" + +"emittery@^0.10.2": + "integrity" "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==" + "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz" + "version" "0.10.2" + +"emoji-regex@^7.0.1": + "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + "version" "7.0.3" + +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" + +"emoji-regex@^9.2.2": + "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + "version" "9.2.2" + +"emojis-list@^3.0.0": + "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + "version" "3.0.0" + +"encode-utf8@^1.0.3": + "integrity" "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + "resolved" "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz" + "version" "1.0.3" + +"encodeurl@~1.0.2": + "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + "version" "1.0.2" + +"end-of-stream@^1.1.0", "end-of-stream@^1.4.1": + "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" + "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + "version" "1.4.4" + dependencies: + "once" "^1.4.0" + +"enhanced-resolve@^5.12.0": + "integrity" "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==" + "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" + "version" "5.15.0" + dependencies: + "graceful-fs" "^4.2.4" + "tapable" "^2.2.0" + +"enquirer@^2.3.6", "enquirer@>= 2.3.0 < 3": + "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" + "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + "version" "2.3.6" + dependencies: + "ansi-colors" "^4.1.1" + +"entities@^2.0.0": + "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + "version" "2.2.0" + +"entities@^4.4.0": + "integrity" "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" + "resolved" "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" + "version" "4.4.0" + +"errno@^0.1.1", "errno@~0.1.1": + "integrity" "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==" + "resolved" "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + "version" "0.1.8" + dependencies: + "prr" "~1.0.1" + +"error-ex@^1.3.1": + "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "is-arrayish" "^0.2.1" + +"es-abstract@^1.19.0", "es-abstract@^1.20.4", "es-abstract@^1.21.2": + "integrity" "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==" + "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz" + "version" "1.22.1" + dependencies: + "array-buffer-byte-length" "^1.0.0" + "arraybuffer.prototype.slice" "^1.0.1" + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "es-set-tostringtag" "^2.0.1" + "es-to-primitive" "^1.2.1" + "function.prototype.name" "^1.1.5" + "get-intrinsic" "^1.2.1" + "get-symbol-description" "^1.0.0" + "globalthis" "^1.0.3" + "gopd" "^1.0.1" + "has" "^1.0.3" + "has-property-descriptors" "^1.0.0" + "has-proto" "^1.0.1" + "has-symbols" "^1.0.3" + "internal-slot" "^1.0.5" + "is-array-buffer" "^3.0.2" + "is-callable" "^1.2.7" + "is-negative-zero" "^2.0.2" + "is-regex" "^1.1.4" + "is-shared-array-buffer" "^1.0.2" + "is-string" "^1.0.7" + "is-typed-array" "^1.1.10" + "is-weakref" "^1.0.2" + "object-inspect" "^1.12.3" + "object-keys" "^1.1.1" + "object.assign" "^4.1.4" + "regexp.prototype.flags" "^1.5.0" + "safe-array-concat" "^1.0.0" + "safe-regex-test" "^1.0.0" + "string.prototype.trim" "^1.2.7" + "string.prototype.trimend" "^1.0.6" + "string.prototype.trimstart" "^1.0.6" + "typed-array-buffer" "^1.0.0" + "typed-array-byte-length" "^1.0.0" + "typed-array-byte-offset" "^1.0.0" + "typed-array-length" "^1.0.4" + "unbox-primitive" "^1.0.2" + "which-typed-array" "^1.1.10" + +"es-get-iterator@^1.1.2": + "integrity" "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==" + "resolved" "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.0" + "has-symbols" "^1.0.1" + "is-arguments" "^1.1.0" + "is-map" "^2.0.2" + "is-set" "^2.0.2" + "is-string" "^1.0.5" + "isarray" "^2.0.5" + +"es-set-tostringtag@^2.0.1": + "integrity" "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==" + "resolved" "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "get-intrinsic" "^1.1.3" + "has" "^1.0.3" + "has-tostringtag" "^1.0.0" + +"es-shim-unscopables@^1.0.0": + "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" + "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has" "^1.0.3" + +"es-to-primitive@^1.2.1": + "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" + "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "is-callable" "^1.1.4" + "is-date-object" "^1.0.1" + "is-symbol" "^1.0.2" + +"es5-ext@^0.10.35", "es5-ext@^0.10.46", "es5-ext@^0.10.50", "es5-ext@^0.10.53", "es5-ext@^0.10.61", "es5-ext@~0.10.14", "es5-ext@~0.10.2", "es5-ext@~0.10.46": + "integrity" "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==" + "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" + "version" "0.10.62" + dependencies: + "es6-iterator" "^2.0.3" + "es6-symbol" "^3.1.3" + "next-tick" "^1.1.0" + +"es6-iterator@^2.0.3": + "integrity" "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==" + "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "d" "1" + "es5-ext" "^0.10.35" + "es6-symbol" "^3.1.1" + +"es6-object-assign@^1.1.0": + "integrity" "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + "resolved" "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" + "version" "1.1.0" + +"es6-promise@^4.0.3", "es6-promise@^4.2.8", "es6-promise@4.2.8": + "integrity" "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + "resolved" "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" + "version" "4.2.8" + +"es6-promisify@^5.0.0": + "integrity" "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==" + "resolved" "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "es6-promise" "^4.0.3" + +"es6-symbol@^3.1.1", "es6-symbol@^3.1.3": + "integrity" "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==" + "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + "version" "3.1.3" + dependencies: + "d" "^1.0.1" + "ext" "^1.1.2" + +"es6-weak-map@^2.0.3": + "integrity" "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==" + "resolved" "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "d" "1" + "es5-ext" "^0.10.46" + "es6-iterator" "^2.0.3" + "es6-symbol" "^3.1.1" + +"escalade@^3.1.1": + "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + "version" "3.1.1" + +"escape-html@~1.0.3": + "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "version" "1.0.3" + +"escape-string-regexp@^1.0.5": + "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^2.0.0": + "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + "version" "2.0.0" + +"escape-string-regexp@^4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + +"escodegen@^2.0.0": + "integrity" "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==" + "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "esprima" "^4.0.1" + "estraverse" "^5.2.0" + "esutils" "^2.0.2" + "optionator" "^0.8.1" optionalDependencies: - source-map "~0.6.1" + "source-map" "~0.6.1" -eslint-config-next@13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.1.1.tgz#b1a6602b0a339820585d4b2f8d2e08866b6699a7" - integrity sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ== +"eslint-config-next@13.1.1": + "integrity" "sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ==" + "resolved" "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.1.1.tgz" + "version" "13.1.1" dependencies: "@next/eslint-plugin-next" "13.1.1" "@rushstack/eslint-patch" "^1.1.3" "@typescript-eslint/parser" "^5.42.0" - eslint-import-resolver-node "^0.3.6" - eslint-import-resolver-typescript "^3.5.2" - eslint-plugin-import "^2.26.0" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.31.7" - eslint-plugin-react-hooks "^4.5.0" - -eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-import-resolver-typescript@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz#9431acded7d898fd94591a08ea9eec3514c7de91" - integrity sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ== - dependencies: - debug "^4.3.4" - enhanced-resolve "^5.10.0" - get-tsconfig "^4.2.0" - globby "^13.1.2" - is-core-module "^2.10.0" - is-glob "^4.0.3" - synckit "^0.8.4" - -eslint-module-utils@^2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" - integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== - dependencies: - debug "^3.2.7" - -eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" - has "^1.0.3" - is-core-module "^2.8.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-jsx-a11y@^6.5.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" - integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== + "eslint-import-resolver-node" "^0.3.6" + "eslint-import-resolver-typescript" "^3.5.2" + "eslint-plugin-import" "^2.26.0" + "eslint-plugin-jsx-a11y" "^6.5.1" + "eslint-plugin-react" "^7.31.7" + "eslint-plugin-react-hooks" "^4.5.0" + +"eslint-config-prettier@^8.5.0": + "integrity" "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==" + "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" + "version" "8.5.0" + +"eslint-import-resolver-node@^0.3.6", "eslint-import-resolver-node@^0.3.7": + "integrity" "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==" + "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" + "version" "0.3.9" + dependencies: + "debug" "^3.2.7" + "is-core-module" "^2.13.0" + "resolve" "^1.22.4" + +"eslint-import-resolver-typescript@^3.5.2": + "integrity" "sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==" + "resolved" "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "debug" "^4.3.4" + "enhanced-resolve" "^5.12.0" + "eslint-module-utils" "^2.7.4" + "fast-glob" "^3.3.1" + "get-tsconfig" "^4.5.0" + "is-core-module" "^2.11.0" + "is-glob" "^4.0.3" + +"eslint-module-utils@^2.7.4", "eslint-module-utils@^2.8.0": + "integrity" "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==" + "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "debug" "^3.2.7" + +"eslint-plugin-import@*", "eslint-plugin-import@^2.26.0": + "integrity" "sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==" + "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz" + "version" "2.28.0" + dependencies: + "array-includes" "^3.1.6" + "array.prototype.findlastindex" "^1.2.2" + "array.prototype.flat" "^1.3.1" + "array.prototype.flatmap" "^1.3.1" + "debug" "^3.2.7" + "doctrine" "^2.1.0" + "eslint-import-resolver-node" "^0.3.7" + "eslint-module-utils" "^2.8.0" + "has" "^1.0.3" + "is-core-module" "^2.12.1" + "is-glob" "^4.0.3" + "minimatch" "^3.1.2" + "object.fromentries" "^2.0.6" + "object.groupby" "^1.0.0" + "object.values" "^1.1.6" + "resolve" "^1.22.3" + "semver" "^6.3.1" + "tsconfig-paths" "^3.14.2" + +"eslint-plugin-jsx-a11y@^6.5.1": + "integrity" "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==" + "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz" + "version" "6.6.1" dependencies: "@babel/runtime" "^7.18.9" - aria-query "^4.2.2" - array-includes "^3.1.5" - ast-types-flow "^0.0.7" - axe-core "^4.4.3" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.2" - language-tags "^1.0.5" - minimatch "^3.1.2" - semver "^6.3.0" - -eslint-plugin-prettier@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@^4.5.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react@^7.31.7: - version "7.31.11" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz#011521d2b16dcf95795df688a4770b4eaab364c8" - integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.8" - -eslint-plugin-unused-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz#d8db8c4d0cfa0637a8b51ce3fd7d1b6bc3f08520" - integrity sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A== - dependencies: - eslint-rule-composer "^0.3.0" - -eslint-rule-composer@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" - integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.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@^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: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@8.31.0: - version "8.31.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.31.0.tgz#75028e77cbcff102a9feae1d718135931532d524" - integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA== + "aria-query" "^4.2.2" + "array-includes" "^3.1.5" + "ast-types-flow" "^0.0.7" + "axe-core" "^4.4.3" + "axobject-query" "^2.2.0" + "damerau-levenshtein" "^1.0.8" + "emoji-regex" "^9.2.2" + "has" "^1.0.3" + "jsx-ast-utils" "^3.3.2" + "language-tags" "^1.0.5" + "minimatch" "^3.1.2" + "semver" "^6.3.0" + +"eslint-plugin-prettier@^4.0.0": + "integrity" "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==" + "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "prettier-linter-helpers" "^1.0.0" + +"eslint-plugin-react-hooks@^4.5.0": + "integrity" "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" + "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" + "version" "4.6.0" + +"eslint-plugin-react@^7.31.7": + "integrity" "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==" + "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz" + "version" "7.31.11" + dependencies: + "array-includes" "^3.1.6" + "array.prototype.flatmap" "^1.3.1" + "array.prototype.tosorted" "^1.1.1" + "doctrine" "^2.1.0" + "estraverse" "^5.3.0" + "jsx-ast-utils" "^2.4.1 || ^3.0.0" + "minimatch" "^3.1.2" + "object.entries" "^1.1.6" + "object.fromentries" "^2.0.6" + "object.hasown" "^1.1.2" + "object.values" "^1.1.6" + "prop-types" "^15.8.1" + "resolve" "^2.0.0-next.3" + "semver" "^6.3.0" + "string.prototype.matchall" "^4.0.8" + +"eslint-plugin-unused-imports@^2.0.0": + "integrity" "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==" + "resolved" "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "eslint-rule-composer" "^0.3.0" + +"eslint-rule-composer@^0.3.0": + "integrity" "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==" + "resolved" "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz" + "version" "0.3.0" + +"eslint-scope@^5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + +"eslint-scope@^7.1.1": + "integrity" "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" + "version" "7.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^5.2.0" + +"eslint-utils@^3.0.0": + "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "eslint-visitor-keys" "^2.0.0" + +"eslint-visitor-keys@^2.0.0": + "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + "version" "2.1.0" + +"eslint-visitor-keys@^3.3.0", "eslint-visitor-keys@^3.4.1": + "integrity" "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz" + "version" "3.4.2" + +"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.23.0 || ^8.0.0", "eslint@^8.0.0", "eslint@>=5", "eslint@>=7.0.0", "eslint@>=7.28.0", "eslint@8.31.0": + "integrity" "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz" + "version" "8.31.0" dependencies: "@eslint/eslintrc" "^1.4.1" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" - 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.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.0" - 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" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-sdsl "^4.1.4" - 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.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - -espree@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" - integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -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== - -eth-block-tracker@4.4.3, eth-block-tracker@^4.4.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" - integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== + "ajv" "^6.10.0" + "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.1.1" + "eslint-utils" "^3.0.0" + "eslint-visitor-keys" "^3.3.0" + "espree" "^9.4.0" + "esquery" "^1.4.0" + "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" + "grapheme-splitter" "^1.0.4" + "ignore" "^5.2.0" + "import-fresh" "^3.0.0" + "imurmurhash" "^0.1.4" + "is-glob" "^4.0.0" + "is-path-inside" "^3.0.3" + "js-sdsl" "^4.1.4" + "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.1" + "regexpp" "^3.2.0" + "strip-ansi" "^6.0.1" + "strip-json-comments" "^3.1.0" + "text-table" "^0.2.0" + +"espree@^9.4.0": + "integrity" "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==" + "resolved" "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + "version" "9.6.1" + dependencies: + "acorn" "^8.9.0" + "acorn-jsx" "^5.3.2" + "eslint-visitor-keys" "^3.4.1" + +"esprima@^4.0.0", "esprima@^4.0.1": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" + +"esquery@^1.4.0": + "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "estraverse" "^5.1.0" + +"esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^5.1.0", "estraverse@^5.2.0", "estraverse@^5.3.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"estree-walker@^1.0.1": + "integrity" "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" + "version" "1.0.1" + +"estree-walker@^2": + "integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" + "version" "2.0.2" + +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" + +"etag@~1.8.1": + "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + "version" "1.8.1" + +"eth-block-tracker@^4.4.2": + "integrity" "sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==" + "resolved" "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz" + "version" "4.4.3" dependencies: "@babel/plugin-transform-runtime" "^7.5.5" "@babel/runtime" "^7.5.5" - eth-query "^2.1.0" - json-rpc-random-id "^1.0.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" + "eth-query" "^2.1.0" + "json-rpc-random-id" "^1.0.1" + "pify" "^3.0.0" + "safe-event-emitter" "^1.0.1" -eth-crypto@^2.1.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/eth-crypto/-/eth-crypto-2.5.0.tgz#3ed7279a3a77bcca499266d4eb33ba2a8bd3004b" - integrity sha512-5WA3ebUs38ssNtU/U9FPzehFZnkdAwAFXq+bPF2Fcp4izV+A7bjW6489N8AB7fiQgHi1XkfnTcO64189SJil5A== +"eth-block-tracker@6.1.0": + "integrity" "sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==" + "resolved" "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + "@metamask/utils" "^3.0.1" + "json-rpc-random-id" "^1.0.1" + "pify" "^3.0.0" + +"eth-crypto@^2.1.0": + "integrity" "sha512-5WA3ebUs38ssNtU/U9FPzehFZnkdAwAFXq+bPF2Fcp4izV+A7bjW6489N8AB7fiQgHi1XkfnTcO64189SJil5A==" + "resolved" "https://registry.npmjs.org/eth-crypto/-/eth-crypto-2.5.0.tgz" + "version" "2.5.0" dependencies: "@babel/runtime" "7.20.6" "@ethereumjs/tx" "3.5.2" "@types/bn.js" "5.1.1" - eccrypto "1.1.6" - ethereumjs-util "7.1.5" - ethers "5.7.2" - secp256k1 "4.0.3" + "eccrypto" "1.1.6" + "ethereumjs-util" "7.1.5" + "ethers" "5.7.2" + "secp256k1" "4.0.3" + +"eth-ens-namehash@2.0.8": + "integrity" "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==" + "resolved" "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz" + "version" "2.0.8" + dependencies: + "idna-uts46-hx" "^2.3.1" + "js-sha3" "^0.5.7" -eth-ens-namehash@2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" - integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== +"eth-json-rpc-filters@^4.2.1": + "integrity" "sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw==" + "resolved" "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz" + "version" "4.2.2" dependencies: - idna-uts46-hx "^2.3.1" - js-sha3 "^0.5.7" + "@metamask/safe-event-emitter" "^2.0.0" + "async-mutex" "^0.2.6" + "eth-json-rpc-middleware" "^6.0.0" + "eth-query" "^2.1.2" + "json-rpc-engine" "^6.1.0" + "pify" "^5.0.0" -eth-json-rpc-filters@4.2.2, eth-json-rpc-filters@^4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz#eb35e1dfe9357ace8a8908e7daee80b2cd60a10d" - integrity sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw== +"eth-json-rpc-filters@5.1.0": + "integrity" "sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ==" + "resolved" "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-5.1.0.tgz" + "version" "5.1.0" dependencies: "@metamask/safe-event-emitter" "^2.0.0" - async-mutex "^0.2.6" - eth-json-rpc-middleware "^6.0.0" - eth-query "^2.1.2" - json-rpc-engine "^6.1.0" - pify "^5.0.0" - -eth-json-rpc-infura@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz#e6da7dc47402ce64c54e7018170d89433c4e8fb6" - integrity sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow== - dependencies: - eth-json-rpc-middleware "^6.0.0" - eth-rpc-errors "^3.0.0" - json-rpc-engine "^5.3.0" - node-fetch "^2.6.0" - -eth-json-rpc-middleware@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz#4fe16928b34231a2537856f08a5ebbc3d0c31175" - integrity sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ== - dependencies: - btoa "^1.2.1" - clone "^2.1.1" - eth-query "^2.1.2" - eth-rpc-errors "^3.0.0" - eth-sig-util "^1.4.2" - ethereumjs-util "^5.1.2" - json-rpc-engine "^5.3.0" - json-stable-stringify "^1.0.1" - node-fetch "^2.6.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-lib@0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" - integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - -eth-lib@^0.1.26: - version "0.1.29" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" - integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" - xhr-request-promise "^0.1.2" - -eth-query@^2.1.0, eth-query@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" - integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== - dependencies: - json-rpc-random-id "^1.0.0" - xtend "^4.0.1" - -eth-rpc-errors@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz#11bc164e25237a679061ac05b7da7537b673d3b7" - integrity sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-rpc-errors@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" - integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-rpc-errors@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" - integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-sig-util@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" - integrity sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw== - dependencies: - ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" - ethereumjs-util "^5.1.1" - -ethereum-blockies-base64@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ethereum-blockies-base64/-/ethereum-blockies-base64-1.0.2.tgz#4aebca52142bf4d16a3144e6e2b59303e39ed2b3" - integrity sha512-Vg2HTm7slcWNKaRhCUl/L3b4KrB8ohQXdd5Pu3OI897EcR6tVRvUqdTwAyx+dnmoDzj8e2bwBLDQ50ByFmcz6w== - dependencies: - pnglib "0.0.1" - -ethereum-bloom-filters@^1.0.6: - version "1.0.10" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" - integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== - dependencies: - js-sha3 "^0.8.0" - -ethereum-common@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" - integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== - -ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== - -ethereum-cryptography@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz#74f2ac0f0f5fe79f012c889b3b8446a9a6264e6d" - integrity sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ== + "async-mutex" "^0.2.6" + "eth-query" "^2.1.2" + "json-rpc-engine" "^6.1.0" + "pify" "^5.0.0" + +"eth-json-rpc-infura@^5.1.0": + "integrity" "sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow==" + "resolved" "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "eth-json-rpc-middleware" "^6.0.0" + "eth-rpc-errors" "^3.0.0" + "json-rpc-engine" "^5.3.0" + "node-fetch" "^2.6.0" + +"eth-json-rpc-middleware@^6.0.0": + "integrity" "sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ==" + "resolved" "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "btoa" "^1.2.1" + "clone" "^2.1.1" + "eth-query" "^2.1.2" + "eth-rpc-errors" "^3.0.0" + "eth-sig-util" "^1.4.2" + "ethereumjs-util" "^5.1.2" + "json-rpc-engine" "^5.3.0" + "json-stable-stringify" "^1.0.1" + "node-fetch" "^2.6.1" + "pify" "^3.0.0" + "safe-event-emitter" "^1.0.1" + +"eth-lib@^0.1.26": + "integrity" "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==" + "resolved" "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz" + "version" "0.1.29" + dependencies: + "bn.js" "^4.11.6" + "elliptic" "^6.4.0" + "nano-json-stream-parser" "^0.1.2" + "servify" "^0.1.12" + "ws" "^3.0.0" + "xhr-request-promise" "^0.1.2" + +"eth-lib@0.2.8": + "integrity" "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==" + "resolved" "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "bn.js" "^4.11.6" + "elliptic" "^6.4.0" + "xhr-request-promise" "^0.1.2" + +"eth-query@^2.1.0", "eth-query@^2.1.2": + "integrity" "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==" + "resolved" "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "json-rpc-random-id" "^1.0.0" + "xtend" "^4.0.1" + +"eth-rpc-errors@^3.0.0": + "integrity" "sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==" + "resolved" "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "fast-safe-stringify" "^2.0.6" + +"eth-rpc-errors@^4.0.2", "eth-rpc-errors@4.0.2": + "integrity" "sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ==" + "resolved" "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "fast-safe-stringify" "^2.0.6" + +"eth-sig-util@^1.4.2": + "integrity" "sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw==" + "resolved" "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz" + "version" "1.4.2" + dependencies: + "ethereumjs-abi" "git+https://github.com/ethereumjs/ethereumjs-abi.git" + "ethereumjs-util" "^5.1.1" + +"ethereum-blockies-base64@^1.0.2": + "integrity" "sha512-Vg2HTm7slcWNKaRhCUl/L3b4KrB8ohQXdd5Pu3OI897EcR6tVRvUqdTwAyx+dnmoDzj8e2bwBLDQ50ByFmcz6w==" + "resolved" "https://registry.npmjs.org/ethereum-blockies-base64/-/ethereum-blockies-base64-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "pnglib" "0.0.1" + +"ethereum-bloom-filters@^1.0.6": + "integrity" "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==" + "resolved" "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "js-sha3" "^0.8.0" + +"ethereum-common@^0.0.18": + "integrity" "sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==" + "resolved" "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz" + "version" "0.0.18" + +"ethereum-common@0.2.0": + "integrity" "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" + "resolved" "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz" + "version" "0.2.0" + +"ethereum-cryptography@^0.1.3": + "integrity" "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==" + "resolved" "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" + "version" "0.1.3" + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + "blakejs" "^1.1.0" + "browserify-aes" "^1.2.0" + "bs58check" "^2.1.2" + "create-hash" "^1.2.0" + "create-hmac" "^1.1.7" + "hash.js" "^1.1.7" + "keccak" "^3.0.0" + "pbkdf2" "^3.0.17" + "randombytes" "^2.1.0" + "safe-buffer" "^5.1.2" + "scrypt-js" "^3.0.0" + "secp256k1" "^4.0.1" + "setimmediate" "^1.0.5" + +"ethereum-cryptography@1.1.2": + "integrity" "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==" + "resolved" "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz" + "version" "1.1.2" dependencies: "@noble/hashes" "1.1.2" "@noble/secp256k1" "1.6.3" "@scure/bip32" "1.1.0" "@scure/bip39" "1.1.0" -ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== +"ethereum-protocol@^1.0.1": + "integrity" "sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg==" + "resolved" "https://registry.npmjs.org/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz" + "version" "1.0.1" + +"ethereumjs-abi@^0.6.8": + "integrity" "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==" + "resolved" "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz" + "version" "0.6.8" dependencies: - "@types/pbkdf2" "^3.0.0" - "@types/secp256k1" "^4.0.1" - blakejs "^1.1.0" - browserify-aes "^1.2.0" - bs58check "^2.1.2" - create-hash "^1.2.0" - create-hmac "^1.1.7" - hash.js "^1.1.7" - keccak "^3.0.0" - pbkdf2 "^3.0.17" - randombytes "^2.1.0" - safe-buffer "^5.1.2" - scrypt-js "^3.0.0" - secp256k1 "^4.0.1" - setimmediate "^1.0.5" - -ethereum-protocol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz#b7d68142f4105e0ae7b5e178cf42f8d4dc4b93cf" - integrity sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg== - -ethereumjs-abi@^0.6.8: - version "0.6.8" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" - integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" + "bn.js" "^4.11.8" + "ethereumjs-util" "^6.0.0" "ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - version "0.6.8" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -ethereumjs-account@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" - integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== - dependencies: - ethereumjs-util "^5.0.0" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-block@^1.2.2: - version "1.7.1" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" - integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== - dependencies: - async "^2.0.1" - ethereum-common "0.2.0" - ethereumjs-tx "^1.2.2" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-block@~2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" - integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== - dependencies: - async "^2.0.1" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.1" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-common@^1.1.0, ethereumjs-common@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" - integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== - -ethereumjs-tx@^1.2.2: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" - integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== - dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" - -ethereumjs-tx@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" - integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== - dependencies: - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.0.0" - -ethereumjs-util@7.1.5, ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.7, ethereumjs-util@^7.0.8, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" - integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + "version" "0.6.8" + dependencies: + "bn.js" "^4.11.8" + "ethereumjs-util" "^6.0.0" + +"ethereumjs-account@^2.0.3": + "integrity" "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==" + "resolved" "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "ethereumjs-util" "^5.0.0" + "rlp" "^2.0.0" + "safe-buffer" "^5.1.1" + +"ethereumjs-block@^1.2.2": + "integrity" "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==" + "resolved" "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz" + "version" "1.7.1" + dependencies: + "async" "^2.0.1" + "ethereum-common" "0.2.0" + "ethereumjs-tx" "^1.2.2" + "ethereumjs-util" "^5.0.0" + "merkle-patricia-tree" "^2.1.2" + +"ethereumjs-block@~2.2.0": + "integrity" "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==" + "resolved" "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz" + "version" "2.2.2" + dependencies: + "async" "^2.0.1" + "ethereumjs-common" "^1.5.0" + "ethereumjs-tx" "^2.1.1" + "ethereumjs-util" "^5.0.0" + "merkle-patricia-tree" "^2.1.2" + +"ethereumjs-common@^1.1.0", "ethereumjs-common@^1.5.0": + "integrity" "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==" + "resolved" "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz" + "version" "1.5.2" + +"ethereumjs-tx@^1.2.2": + "integrity" "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==" + "resolved" "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz" + "version" "1.3.7" + dependencies: + "ethereum-common" "^0.0.18" + "ethereumjs-util" "^5.0.0" + +"ethereumjs-tx@^2.1.1": + "integrity" "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==" + "resolved" "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "ethereumjs-common" "^1.5.0" + "ethereumjs-util" "^6.0.0" + +"ethereumjs-util@^5.0.0": + "integrity" "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==" + "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "bn.js" "^4.11.0" + "create-hash" "^1.1.2" + "elliptic" "^6.5.2" + "ethereum-cryptography" "^0.1.3" + "ethjs-util" "^0.1.3" + "rlp" "^2.0.0" + "safe-buffer" "^5.1.1" + +"ethereumjs-util@^5.1.1": + "integrity" "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==" + "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "bn.js" "^4.11.0" + "create-hash" "^1.1.2" + "elliptic" "^6.5.2" + "ethereum-cryptography" "^0.1.3" + "ethjs-util" "^0.1.3" + "rlp" "^2.0.0" + "safe-buffer" "^5.1.1" + +"ethereumjs-util@^5.1.2": + "integrity" "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==" + "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "bn.js" "^4.11.0" + "create-hash" "^1.1.2" + "elliptic" "^6.5.2" + "ethereum-cryptography" "^0.1.3" + "ethjs-util" "^0.1.3" + "rlp" "^2.0.0" + "safe-buffer" "^5.1.1" + +"ethereumjs-util@^5.1.5": + "integrity" "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==" + "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "bn.js" "^4.11.0" + "create-hash" "^1.1.2" + "elliptic" "^6.5.2" + "ethereum-cryptography" "^0.1.3" + "ethjs-util" "^0.1.3" + "rlp" "^2.0.0" + "safe-buffer" "^5.1.1" + +"ethereumjs-util@^6.0.0": + "integrity" "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==" + "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" + "version" "6.2.1" dependencies: - "@types/bn.js" "^5.1.0" - bn.js "^5.1.2" - create-hash "^1.1.2" - ethereum-cryptography "^0.1.3" - rlp "^2.2.4" - -ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.5: - version "5.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" - integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "^0.1.3" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + "@types/bn.js" "^4.11.3" + "bn.js" "^4.11.0" + "create-hash" "^1.1.2" + "elliptic" "^6.5.2" + "ethereum-cryptography" "^0.1.3" + "ethjs-util" "0.1.6" + "rlp" "^2.2.3" + +"ethereumjs-util@^6.2.1": + "integrity" "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==" + "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" + "version" "6.2.1" dependencies: "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "0.1.6" - rlp "^2.2.3" - -ethereumjs-vm@^2.3.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" - integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~2.2.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "^6.0.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - -ethers@5.5.3: - version "5.5.3" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.3.tgz#1e361516711c0c3244b6210e7e3ecabf0c75fca0" - integrity sha512-fTT4WT8/hTe/BLwRUtl7I5zlpF3XC3P/Xwqxc5AIP2HGlH15qpmjs0Ou78az93b1rLITzXLFxoNX63B8ZbUd7g== + "bn.js" "^4.11.0" + "create-hash" "^1.1.2" + "elliptic" "^6.5.2" + "ethereum-cryptography" "^0.1.3" + "ethjs-util" "0.1.6" + "rlp" "^2.2.3" + +"ethereumjs-util@^7.0.7", "ethereumjs-util@^7.0.8", "ethereumjs-util@^7.1.0", "ethereumjs-util@^7.1.1", "ethereumjs-util@^7.1.2", "ethereumjs-util@^7.1.3", "ethereumjs-util@^7.1.4", "ethereumjs-util@^7.1.5", "ethereumjs-util@7.1.5": + "integrity" "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==" + "resolved" "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" + "version" "7.1.5" + dependencies: + "@types/bn.js" "^5.1.0" + "bn.js" "^5.1.2" + "create-hash" "^1.1.2" + "ethereum-cryptography" "^0.1.3" + "rlp" "^2.2.4" + +"ethereumjs-vm@^2.3.4": + "integrity" "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==" + "resolved" "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz" + "version" "2.6.0" + dependencies: + "async" "^2.1.2" + "async-eventemitter" "^0.2.2" + "ethereumjs-account" "^2.0.3" + "ethereumjs-block" "~2.2.0" + "ethereumjs-common" "^1.1.0" + "ethereumjs-util" "^6.0.0" + "fake-merkle-patricia-tree" "^1.0.1" + "functional-red-black-tree" "^1.0.1" + "merkle-patricia-tree" "^2.3.2" + "rustbn.js" "~0.2.0" + "safe-buffer" "^5.1.1" + +"ethers@^5.1.3", "ethers@^5.7.2", "ethers@5.7.2": + "integrity" "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==" + "resolved" "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" + "version" "5.7.2" + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +"ethers@5.5.3": + "integrity" "sha512-fTT4WT8/hTe/BLwRUtl7I5zlpF3XC3P/Xwqxc5AIP2HGlH15qpmjs0Ou78az93b1rLITzXLFxoNX63B8ZbUd7g==" + "resolved" "https://registry.npmjs.org/ethers/-/ethers-5.5.3.tgz" + "version" "5.5.3" dependencies: "@ethersproject/abi" "5.5.0" "@ethersproject/abstract-provider" "5.5.1" @@ -7985,10 +8010,10 @@ ethers@5.5.3: "@ethersproject/web" "5.5.1" "@ethersproject/wordlists" "5.5.0" -ethers@5.5.4: - version "5.5.4" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.4.tgz#e1155b73376a2f5da448e4a33351b57a885f4352" - integrity sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw== +"ethers@5.5.4": + "integrity" "sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw==" + "resolved" "https://registry.npmjs.org/ethers/-/ethers-5.5.4.tgz" + "version" "5.5.4" dependencies: "@ethersproject/abi" "5.5.0" "@ethersproject/abstract-provider" "5.5.1" @@ -8021,1832 +8046,1809 @@ ethers@5.5.4: "@ethersproject/web" "5.5.1" "@ethersproject/wordlists" "5.5.0" -ethers@5.7.2, ethers@^5.7.2: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== - dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" - "@ethersproject/keccak256" "5.7.0" - "@ethersproject/logger" "5.7.0" - "@ethersproject/networks" "5.7.1" - "@ethersproject/pbkdf2" "5.7.0" - "@ethersproject/properties" "5.7.0" - "@ethersproject/providers" "5.7.2" - "@ethersproject/random" "5.7.0" - "@ethersproject/rlp" "5.7.0" - "@ethersproject/sha2" "5.7.0" - "@ethersproject/signing-key" "5.7.0" - "@ethersproject/solidity" "5.7.0" - "@ethersproject/strings" "5.7.0" - "@ethersproject/transactions" "5.7.0" - "@ethersproject/units" "5.7.0" - "@ethersproject/wallet" "5.7.0" - "@ethersproject/web" "5.7.1" - "@ethersproject/wordlists" "5.7.0" - -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" - integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== - dependencies: - bn.js "4.11.6" - number-to-bn "1.7.0" - -ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" - integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== - dependencies: - d "1" - es5-ext "~0.10.14" - -eventemitter2@6.4.7: - version "6.4.7" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" - integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== - -eventemitter3@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -eventemitter3@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0, events@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -executable@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" - integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== - dependencies: - pify "^2.2.0" - -exenv@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" - integrity sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw== - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^28.0.0, expect@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" - integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== +"ethjs-unit@0.1.6": + "integrity" "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==" + "resolved" "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" + "version" "0.1.6" + dependencies: + "bn.js" "4.11.6" + "number-to-bn" "1.7.0" + +"ethjs-util@^0.1.3", "ethjs-util@^0.1.6", "ethjs-util@0.1.6": + "integrity" "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==" + "resolved" "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz" + "version" "0.1.6" + dependencies: + "is-hex-prefixed" "1.0.0" + "strip-hex-prefix" "1.0.0" + +"event-emitter@^0.3.5": + "integrity" "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==" + "resolved" "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + "version" "0.3.5" + dependencies: + "d" "1" + "es5-ext" "~0.10.14" + +"eventemitter2@6.4.7": + "integrity" "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==" + "resolved" "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz" + "version" "6.4.7" + +"eventemitter3@^4.0.7": + "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + "version" "4.0.7" + +"eventemitter3@4.0.4": + "integrity" "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz" + "version" "4.0.4" + +"events@^3.0.0", "events@^3.3.0": + "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + "version" "3.3.0" + +"evp_bytestokey@^1.0.3": + "integrity" "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==" + "resolved" "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "md5.js" "^1.3.4" + "safe-buffer" "^5.1.1" + +"execa@^5.0.0": + "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" + "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "cross-spawn" "^7.0.3" + "get-stream" "^6.0.0" + "human-signals" "^2.1.0" + "is-stream" "^2.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^4.0.1" + "onetime" "^5.1.2" + "signal-exit" "^3.0.3" + "strip-final-newline" "^2.0.0" + +"execa@4.1.0": + "integrity" "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==" + "resolved" "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "cross-spawn" "^7.0.0" + "get-stream" "^5.0.0" + "human-signals" "^1.1.1" + "is-stream" "^2.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^4.0.0" + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" + "strip-final-newline" "^2.0.0" + +"executable@^4.1.1": + "integrity" "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==" + "resolved" "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz" + "version" "4.1.1" + dependencies: + "pify" "^2.2.0" + +"exenv@^1.2.0": + "integrity" "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==" + "resolved" "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz" + "version" "1.2.2" + +"exit@^0.1.2": + "integrity" "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" + "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + "version" "0.1.2" + +"expect@^28.0.0", "expect@^28.1.3": + "integrity" "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==" + "resolved" "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/expect-utils" "^28.1.3" - jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" + "jest-get-type" "^28.0.2" + "jest-matcher-utils" "^28.1.3" + "jest-message-util" "^28.1.3" + "jest-util" "^28.1.3" -expect@^29.0.0: - version "29.3.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.3.1.tgz#92877aad3f7deefc2e3f6430dd195b92295554a6" - integrity sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA== +"expect@^29.0.0": + "integrity" "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==" + "resolved" "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz" + "version" "29.3.1" dependencies: "@jest/expect-utils" "^29.3.1" - jest-get-type "^29.2.0" - jest-matcher-utils "^29.3.1" - jest-message-util "^29.3.1" - jest-util "^29.3.1" - -exponential-backoff@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.0.tgz#9409c7e579131f8bd4b32d7d8094a911040f2e68" - integrity sha512-oBuz5SYz5zzyuHINoe9ooePwSu0xApKWgeNzok4hZ5YKXFh9zrQBEM15CXqoZkJJPuI2ArvqjPQd8UKJA753XA== - -express@^4.14.0: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.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" - -ext@^1.1.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" - integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== - dependencies: - type "^2.7.2" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extract-zip@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" + "jest-get-type" "^29.2.0" + "jest-matcher-utils" "^29.3.1" + "jest-message-util" "^29.3.1" + "jest-util" "^29.3.1" + +"exponential-backoff@^3.1.0": + "integrity" "sha512-oBuz5SYz5zzyuHINoe9ooePwSu0xApKWgeNzok4hZ5YKXFh9zrQBEM15CXqoZkJJPuI2ArvqjPQd8UKJA753XA==" + "resolved" "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.0.tgz" + "version" "3.1.0" + +"express@^4.14.0": + "integrity" "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==" + "resolved" "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + "version" "4.18.2" + dependencies: + "accepts" "~1.3.8" + "array-flatten" "1.1.1" + "body-parser" "1.20.1" + "content-disposition" "0.5.4" + "content-type" "~1.0.4" + "cookie" "0.5.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" + +"ext@^1.1.2": + "integrity" "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==" + "resolved" "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + "version" "1.7.0" + dependencies: + "type" "^2.7.2" + +"extend@~3.0.2": + "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + "version" "3.0.2" + +"extract-zip@2.0.1": + "integrity" "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==" + "resolved" "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "debug" "^4.1.1" + "get-stream" "^5.1.0" + "yauzl" "^2.10.0" optionalDependencies: "@types/yauzl" "^2.9.1" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== +"extsprintf@^1.2.0": + "integrity" "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==" + "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" + "version" "1.4.1" -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== +"extsprintf@1.3.0": + "integrity" "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + "version" "1.3.0" -eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== +"eyes@^0.1.8": + "integrity" "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==" + "resolved" "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" + "version" "0.1.8" -fake-merkle-patricia-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" - integrity sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA== +"fake-merkle-patricia-tree@^1.0.1": + "integrity" "sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==" + "resolved" "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz" + "version" "1.0.1" dependencies: - checkpoint-store "^1.1.0" + "checkpoint-store" "^1.1.0" -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== +"fast-diff@^1.1.2": + "integrity" "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" + "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + "version" "1.2.0" -fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== +"fast-glob@^3.2.7", "fast-glob@^3.2.9", "fast-glob@^3.3.1": + "integrity" "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" + "version" "3.3.1" dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.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, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-redact@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.2.0.tgz#b1e2d39bc731376d28bde844454fa23e26919987" - integrity sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw== - -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fast-stable-stringify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" - integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== - -fastq@^1.6.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.14.0.tgz#107f69d7295b11e0fccc264e1fc6389f623731ce" - integrity sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - -figures@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -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" - -file-selector@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.6.0.tgz#fa0a8d9007b829504db4d07dd4de0310b65287dc" - integrity sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw== - dependencies: - tslib "^2.4.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - -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-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@^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== + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.4" + +"fast-json-stable-stringify@^2.0.0", "fast-json-stable-stringify@^2.1.0": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"fast-levenshtein@^2.0.6", "fast-levenshtein@~2.0.6": + "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + "version" "2.0.6" + +"fast-redact@^3.0.0": + "integrity" "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==" + "resolved" "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz" + "version" "3.3.0" + +"fast-safe-stringify@^2.0.6": + "integrity" "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + "version" "2.1.1" + +"fast-stable-stringify@^1.0.0": + "integrity" "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" + "resolved" "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz" + "version" "1.0.0" + +"fastq@^1.6.0": + "integrity" "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz" + "version" "1.14.0" + dependencies: + "reusify" "^1.0.4" + +"fb-watchman@^2.0.0": + "integrity" "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" + "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "bser" "2.1.1" + +"fd-slicer@~1.1.0": + "integrity" "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==" + "resolved" "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "pend" "~1.2.0" + +"figures@^3.2.0": + "integrity" "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==" + "resolved" "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "escape-string-regexp" "^1.0.5" + +"file-entry-cache@^6.0.1": + "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "flat-cache" "^3.0.4" + +"file-selector@^0.6.0": + "integrity" "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==" + "resolved" "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "tslib" "^2.4.0" + +"file-uri-to-path@1.0.0": + "integrity" "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + "resolved" "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" + "version" "1.0.0" + +"filelist@^1.0.1": + "integrity" "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==" + "resolved" "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "minimatch" "^5.0.1" + +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "to-regex-range" "^5.0.1" + +"filter-obj@^1.1.0": + "integrity" "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" + "resolved" "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" + "version" "1.1.0" + +"finalhandler@1.2.0": + "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" + "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + "version" "1.2.0" + 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-cache-dir@^3.3.1": + "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" + "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "commondir" "^1.0.1" + "make-dir" "^3.0.2" + "pkg-dir" "^4.1.0" + +"find-replace@^3.0.0": + "integrity" "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==" + "resolved" "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "array-back" "^3.0.1" + +"find-root@^1.1.0": + "integrity" "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "resolved" "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" + "version" "1.1.0" + +"find-up@^3.0.0": + "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "locate-path" "^3.0.0" + +"find-up@^4.0.0", "find-up@^4.1.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"find-up@^5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"flat-cache@^3.0.4": + "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "flatted" "^3.1.0" + "rimraf" "^3.0.2" + +"flatted@^3.1.0": + "integrity" "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" + "version" "3.2.7" + +"follow-redirects@^1.14.8": + "version" "1.15.2" + +"for-each@^0.3.3": + "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" + "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "is-callable" "^1.1.3" + +"forever-agent@~0.6.1": + "integrity" "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + "version" "0.6.1" + +"form-data-encoder@1.7.1": + "integrity" "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" + "resolved" "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz" + "version" "1.7.1" + +"form-data@^4.0.0": + "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" + +"form-data@~2.3.2": + "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + "version" "2.3.3" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.6" + "mime-types" "^2.1.12" + +"forwarded@0.2.0": + "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + "version" "0.2.0" + +"framer-motion@^10.13.1": + "integrity" "sha512-6avJj/Uftblw0fMmo6jDHkKRH4TBdkMX/FiyR3G/hFe3hQHE4BUNJCqlMPKg9EzfI5jyqDOwO5oDnU+bW5y0eg==" + "resolved" "https://registry.npmjs.org/framer-motion/-/framer-motion-10.15.1.tgz" + "version" "10.15.1" dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -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.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -follow-redirects@^1.15.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -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" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -form-data-encoder@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" - integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== - -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" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - 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== - -framer-motion@^10.13.1: - version "10.13.1" - resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.13.1.tgz#f717c924ce9a8927264b41692a870d1366fe296c" - integrity sha512-uiKsaLEoySeln3eOPy8wUB3FkNtRRiVga5xJOkgs7C0sHVyvpJajXJFSoabt+emBojgnMQY0epnjl0ppoYPxkQ== - dependencies: - tslib "^2.4.0" + "tslib" "^2.4.0" optionalDependencies: "@emotion/is-prop-valid" "^0.8.2" -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-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.1, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -functions-have-names@^1.2.2: - 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== - -fuse.js@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-6.6.2.tgz#fe463fed4b98c0226ac3da2856a415576dc9a111" - integrity sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-tsconfig@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.3.0.tgz#4c26fae115d1050e836aea65d6fe56b507ee249b" - integrity sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ== - -getos@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" - integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== - dependencies: - async "^3.2.0" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-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.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - 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" - -global-dirs@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" - integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== - dependencies: - ini "2.0.0" - -global@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.19.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" - integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== - dependencies: - type-fest "^0.20.2" - -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - -globby@^11.0.4, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globby@^13.1.2: - version "13.1.3" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.3.tgz#f62baf5720bcb2c1330c8d4ef222ee12318563ff" - integrity sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.2.11" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^4.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -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" - -got@12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" - integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== - dependencies: - "@sindresorhus/is" "^4.6.0" - "@szmarczak/http-timer" "^5.0.1" - "@types/cacheable-request" "^6.0.2" - "@types/responselike" "^1.0.0" - cacheable-lookup "^6.0.4" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - form-data-encoder "1.7.1" - get-stream "^6.0.1" - http2-wrapper "^2.1.10" - lowercase-keys "^3.0.0" - p-cancelable "^3.0.0" - responselike "^2.0.0" - -got@^11.8.5: - version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" - integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== +"fresh@0.5.2": + "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + "version" "0.5.2" + +"fs-extra@^4.0.2": + "integrity" "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "graceful-fs" "^4.1.2" + "jsonfile" "^4.0.0" + "universalify" "^0.1.0" + +"fs-extra@^7.0.0": + "integrity" "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "graceful-fs" "^4.1.2" + "jsonfile" "^4.0.0" + "universalify" "^0.1.0" + +"fs-extra@^9.0.1", "fs-extra@^9.1.0": + "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + "version" "9.1.0" + dependencies: + "at-least-node" "^1.0.0" + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-minipass@^1.2.7": + "integrity" "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==" + "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" + "version" "1.2.7" + dependencies: + "minipass" "^2.6.0" + +"fs.realpath@^1.0.0": + "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"fsevents@^2.3.2", "fsevents@~2.3.2": + "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" + "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + "version" "2.3.2" + +"function-bind@^1.1.1": + "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + "version" "1.1.1" + +"function.prototype.name@^1.1.5": + "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" + "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.0" + "functions-have-names" "^1.2.2" + +"functional-red-black-tree@^1.0.1": + "integrity" "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + "version" "1.0.1" + +"functions-have-names@^1.2.2", "functions-have-names@^1.2.3": + "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + "version" "1.2.3" + +"fuse.js@^6.6.2": + "integrity" "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==" + "resolved" "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz" + "version" "6.6.2" + +"gensync@^1.0.0-beta.2": + "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + "version" "1.0.0-beta.2" + +"get-caller-file@^2.0.1", "get-caller-file@^2.0.5": + "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + "version" "2.0.5" + +"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3", "get-intrinsic@^1.2.0", "get-intrinsic@^1.2.1": + "integrity" "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==" + "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "function-bind" "^1.1.1" + "has" "^1.0.3" + "has-proto" "^1.0.1" + "has-symbols" "^1.0.3" + +"get-own-enumerable-property-symbols@^3.0.0": + "integrity" "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + "resolved" "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" + "version" "3.0.2" + +"get-package-type@^0.1.0": + "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + "version" "0.1.0" + +"get-stream@^5.0.0", "get-stream@^5.1.0": + "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "pump" "^3.0.0" + +"get-stream@^6.0.0": + "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + "version" "6.0.1" + +"get-stream@^6.0.1": + "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + "version" "6.0.1" + +"get-symbol-description@^1.0.0": + "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" + "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.1" + +"get-tsconfig@^4.5.0": + "integrity" "sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==" + "resolved" "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.2.tgz" + "version" "4.6.2" + dependencies: + "resolve-pkg-maps" "^1.0.0" + +"getos@^3.2.1": + "integrity" "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==" + "resolved" "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "async" "^3.2.0" + +"getpass@^0.1.1": + "integrity" "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==" + "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + "version" "0.1.7" + dependencies: + "assert-plus" "^1.0.0" + +"glob-parent@^5.1.2", "glob-parent@~5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.2": + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob@^7.0.3", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + 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" + +"glob@7.1.7": + "integrity" "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" + "version" "7.1.7" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.0.4" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"global-dirs@^3.0.0": + "integrity" "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==" + "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "ini" "2.0.0" + +"global@~4.4.0": + "integrity" "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==" + "resolved" "https://registry.npmjs.org/global/-/global-4.4.0.tgz" + "version" "4.4.0" + dependencies: + "min-document" "^2.19.0" + "process" "^0.11.10" + +"globals@^11.1.0": + "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + "version" "11.12.0" + +"globals@^13.19.0": + "integrity" "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz" + "version" "13.20.0" + dependencies: + "type-fest" "^0.20.2" + +"globalthis@^1.0.3": + "integrity" "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==" + "resolved" "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "define-properties" "^1.1.3" + +"globalyzer@0.1.0": + "integrity" "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + "resolved" "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz" + "version" "0.1.0" + +"globby@^11.0.4", "globby@^11.1.0": + "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + "version" "11.1.0" + dependencies: + "array-union" "^2.1.0" + "dir-glob" "^3.0.1" + "fast-glob" "^3.2.9" + "ignore" "^5.2.0" + "merge2" "^1.4.1" + "slash" "^3.0.0" + +"globby@^6.1.0": + "integrity" "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==" + "resolved" "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "array-union" "^1.0.1" + "glob" "^7.0.3" + "object-assign" "^4.0.1" + "pify" "^2.0.0" + "pinkie-promise" "^2.0.0" + +"globrex@^0.1.2": + "integrity" "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + "resolved" "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz" + "version" "0.1.2" + +"gopd@^1.0.1": + "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" + "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "get-intrinsic" "^1.1.3" + +"got@^11.8.5": + "integrity" "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==" + "resolved" "https://registry.npmjs.org/got/-/got-11.8.6.tgz" + "version" "11.8.6" dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" "@types/cacheable-request" "^6.0.1" "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^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@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-symbols@^1.0.1, 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: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hdkey@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-2.0.1.tgz#0a211d0c510bfc44fa3ec9d44b13b634641cad74" - integrity sha512-c+tl9PHG9/XkGgG0tD7CJpRVaE0jfZizDNmnErUAKQ4EjQSOcOUcV3EN9ZEZS8pZ4usaeiiK0H7stzuzna8feA== - dependencies: - bs58check "^2.1.2" - safe-buffer "^5.1.1" - secp256k1 "^4.0.0" - -hey-listen@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" - integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -html-encoding-sniffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" - integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== - dependencies: - whatwg-encoding "^2.0.0" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-tokenize@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-tokenize/-/html-tokenize-2.0.1.tgz#c3b2ea6e2837d4f8c06693393e9d2a12c960be5f" - integrity sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w== - dependencies: - buffer-from "~0.1.1" - inherits "~2.0.1" - minimist "~1.2.5" - readable-stream "~1.0.27-1" - through2 "~0.4.1" - -http-cache-semantics@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -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" - -http-https@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + "cacheable-lookup" "^5.0.3" + "cacheable-request" "^7.0.2" + "decompress-response" "^6.0.0" + "http2-wrapper" "^1.0.0-beta.5.2" + "lowercase-keys" "^2.0.0" + "p-cancelable" "^2.0.0" + "responselike" "^2.0.0" + +"got@12.1.0": + "integrity" "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==" + "resolved" "https://registry.npmjs.org/got/-/got-12.1.0.tgz" + "version" "12.1.0" + dependencies: + "@sindresorhus/is" "^4.6.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + "cacheable-lookup" "^6.0.4" + "cacheable-request" "^7.0.2" + "decompress-response" "^6.0.0" + "form-data-encoder" "1.7.1" + "get-stream" "^6.0.1" + "http2-wrapper" "^2.1.10" + "lowercase-keys" "^3.0.0" + "p-cancelable" "^3.0.0" + "responselike" "^2.0.0" + +"graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.9": + "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + "version" "4.2.10" + +"grapheme-splitter@^1.0.4": + "integrity" "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + "resolved" "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + "version" "1.0.4" + +"graphemer@^1.4.0": + "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + "version" "1.4.0" + +"gzip-size@^6.0.0": + "integrity" "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==" + "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "duplexer" "^0.1.2" + +"har-schema@^2.0.0": + "integrity" "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + "version" "2.0.0" + +"har-validator@~5.1.3": + "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" + "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + "version" "5.1.5" + dependencies: + "ajv" "^6.12.3" + "har-schema" "^2.0.0" + +"has-bigints@^1.0.1", "has-bigints@^1.0.2": + "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + "version" "1.0.2" + +"has-flag@^3.0.0": + "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"has-property-descriptors@^1.0.0": + "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" + "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "get-intrinsic" "^1.1.1" + +"has-proto@^1.0.1": + "integrity" "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "resolved" "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + "version" "1.0.1" + +"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3": + "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + "version" "1.0.3" + +"has-tostringtag@^1.0.0": + "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" + "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has-symbols" "^1.0.2" + +"has@^1.0.3": + "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "function-bind" "^1.1.1" + +"hash-base@^3.0.0": + "integrity" "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==" + "resolved" "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "inherits" "^2.0.4" + "readable-stream" "^3.6.0" + "safe-buffer" "^5.2.0" + +"hash.js@^1.0.0", "hash.js@^1.0.3", "hash.js@^1.1.7", "hash.js@1.1.7": + "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" + "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "inherits" "^2.0.3" + "minimalistic-assert" "^1.0.1" + +"hdkey@^2.0.1": + "integrity" "sha512-c+tl9PHG9/XkGgG0tD7CJpRVaE0jfZizDNmnErUAKQ4EjQSOcOUcV3EN9ZEZS8pZ4usaeiiK0H7stzuzna8feA==" + "resolved" "https://registry.npmjs.org/hdkey/-/hdkey-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "bs58check" "^2.1.2" + "safe-buffer" "^5.1.1" + "secp256k1" "^4.0.0" + +"hey-listen@^1.0.8": + "integrity" "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + "resolved" "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz" + "version" "1.0.8" + +"hmac-drbg@^1.0.1": + "integrity" "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" + "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "hash.js" "^1.0.3" + "minimalistic-assert" "^1.0.0" + "minimalistic-crypto-utils" "^1.0.1" + +"hoist-non-react-statics@^3.3.0", "hoist-non-react-statics@^3.3.1", "hoist-non-react-statics@^3.3.2": + "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" + "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "react-is" "^16.7.0" + +"html-encoding-sniffer@^3.0.0": + "integrity" "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==" + "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "whatwg-encoding" "^2.0.0" + +"html-escaper@^2.0.0": + "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + "version" "2.0.2" + +"html-tokenize@^2.0.0": + "integrity" "sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==" + "resolved" "https://registry.npmjs.org/html-tokenize/-/html-tokenize-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "buffer-from" "~0.1.1" + "inherits" "~2.0.1" + "minimist" "~1.2.5" + "readable-stream" "~1.0.27-1" + "through2" "~0.4.1" + +"http-cache-semantics@^4.0.0": + "integrity" "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" + "version" "4.1.1" + +"http-errors@2.0.0": + "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "depd" "2.0.0" + "inherits" "2.0.4" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "toidentifier" "1.0.1" + +"http-https@^1.0.0": + "integrity" "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==" + "resolved" "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz" + "version" "1.0.0" + +"http-proxy-agent@^5.0.0": + "integrity" "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==" + "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" + "version" "5.0.0" dependencies: "@tootallnate/once" "2" - agent-base "6" - debug "4" + "agent-base" "6" + "debug" "4" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -http-signature@~1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" - integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== - dependencies: - assert-plus "^1.0.0" - jsprim "^2.0.2" - sshpk "^1.14.1" - -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" - -http2-wrapper@^2.1.10: - version "2.2.0" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" - integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.2.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@0.6.3, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -idb@^7.0.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" - integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== - -idna-uts46-hx@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" - integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== - dependencies: - punycode "2.1.0" - -ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== - -immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== - -immer@^9.0.21: - version "9.0.21" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== - -immutable@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" - integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -int64-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-1.0.1.tgz#c78d841b444cadf036cd04f8683696c740f15dca" - integrity sha512-+3azY4pXrjAupJHU1V9uGERWlhoqNswJNji6aD/02xac7oxol508AsMC5lxKhEqyZeDFy3enq5OGWXF4u75hiw== - -internal-slot@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.4.tgz#8551e7baf74a7a6ba5f749cfb16aa60722f0d6f3" - integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== - dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - side-channel "^1.0.4" - -intl-messageformat@^9.13.0: - version "9.13.0" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.13.0.tgz#97360b73bd82212e4f6005c712a4a16053165468" - integrity sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw== +"http-signature@~1.2.0": + "integrity" "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==" + "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "assert-plus" "^1.0.0" + "jsprim" "^1.2.2" + "sshpk" "^1.7.0" + +"http-signature@~1.3.6": + "integrity" "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==" + "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz" + "version" "1.3.6" + dependencies: + "assert-plus" "^1.0.0" + "jsprim" "^2.0.2" + "sshpk" "^1.14.1" + +"http2-wrapper@^1.0.0-beta.5.2": + "integrity" "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==" + "resolved" "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "quick-lru" "^5.1.1" + "resolve-alpn" "^1.0.0" + +"http2-wrapper@^2.1.10": + "integrity" "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==" + "resolved" "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "quick-lru" "^5.1.1" + "resolve-alpn" "^1.2.0" + +"https-proxy-agent@^5.0.0": + "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" + "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "agent-base" "6" + "debug" "4" + +"human-signals@^1.1.1": + "integrity" "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" + "version" "1.1.1" + +"human-signals@^2.1.0": + "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + "version" "2.1.0" + +"humanize-ms@^1.2.1": + "integrity" "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==" + "resolved" "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "ms" "^2.0.0" + +"iconv-lite@^0.6.3": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"iconv-lite@0.4.24": + "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + "version" "0.4.24" + dependencies: + "safer-buffer" ">= 2.1.2 < 3" + +"iconv-lite@0.6.3": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"icss-utils@^5.0.0", "icss-utils@^5.1.0": + "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + "version" "5.1.0" + +"idb@^7.0.1": + "integrity" "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + "resolved" "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" + "version" "7.1.1" + +"idna-uts46-hx@^2.3.1": + "integrity" "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==" + "resolved" "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz" + "version" "2.3.1" + dependencies: + "punycode" "2.1.0" + +"ieee754@^1.1.13", "ieee754@^1.2.1": + "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + "version" "1.2.1" + +"ignore@^5.2.0": + "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + "version" "5.2.4" + +"image-size@~0.5.0": + "integrity" "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==" + "resolved" "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" + "version" "0.5.5" + +"immediate@^3.2.3": + "integrity" "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + "resolved" "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz" + "version" "3.3.0" + +"immer@^9.0.21": + "integrity" "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==" + "resolved" "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" + "version" "9.0.21" + +"immutable@^4.0.0": + "integrity" "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" + "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz" + "version" "4.1.0" + +"import-fresh@^3.0.0", "import-fresh@^3.2.1": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "parent-module" "^1.0.0" + "resolve-from" "^4.0.0" + +"import-local@^3.0.2": + "integrity" "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==" + "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "pkg-dir" "^4.2.0" + "resolve-cwd" "^3.0.0" + +"imurmurhash@^0.1.4": + "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" + +"indent-string@^4.0.0": + "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + "version" "4.0.0" + +"inflight@^1.0.4": + "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.1", "inherits@~2.0.3", "inherits@~2.0.4", "inherits@2", "inherits@2.0.4": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"ini@2.0.0": + "integrity" "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + "resolved" "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + "version" "2.0.0" + +"int64-buffer@^1.0.1": + "integrity" "sha512-+3azY4pXrjAupJHU1V9uGERWlhoqNswJNji6aD/02xac7oxol508AsMC5lxKhEqyZeDFy3enq5OGWXF4u75hiw==" + "resolved" "https://registry.npmjs.org/int64-buffer/-/int64-buffer-1.0.1.tgz" + "version" "1.0.1" + +"internal-slot@^1.0.3", "internal-slot@^1.0.5": + "integrity" "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==" + "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "get-intrinsic" "^1.2.0" + "has" "^1.0.3" + "side-channel" "^1.0.4" + +"intl-messageformat@^9.13.0": + "integrity" "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==" + "resolved" "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz" + "version" "9.13.0" dependencies: "@formatjs/ecma402-abstract" "1.11.4" "@formatjs/fast-memoize" "1.2.1" "@formatjs/icu-messageformat-parser" "2.1.0" - tslib "^2.1.0" + "tslib" "^2.1.0" -invariant@2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== +"invariant@2": + "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" + "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + "version" "2.2.4" dependencies: - loose-envify "^1.0.0" - -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== - -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-arguments@^1.0.4, is-arguments@^1.1.0, is-arguments@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + "loose-envify" "^1.0.0" + +"ip@^2.0.0": + "integrity" "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + "resolved" "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" + "version" "2.0.0" -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-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" +"ipaddr.js@1.9.1": + "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + "version" "1.9.1" -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-ci@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-core-module@^2.10.0, is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" - -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-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -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-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" - integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-hex-prefixed@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== - -is-installed-globally@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-map@^2.0.1, is-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - -is-nan@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-path-inside@^3.0.2, 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-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-promise@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - -is-set@^2.0.1, is-set@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.3: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -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.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" - integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -is-what@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" - integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@^2.0.1, 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== - -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== +"is-arguments@^1.0.4", "is-arguments@^1.1.0", "is-arguments@^1.1.1": + "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" + "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-array-buffer@^3.0.1", "is-array-buffer@^3.0.2": + "integrity" "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==" + "resolved" "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.2.0" + "is-typed-array" "^1.1.10" + +"is-arrayish@^0.2.1": + "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + "version" "0.2.1" + +"is-bigint@^1.0.1": + "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" + "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-bigints" "^1.0.1" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "binary-extensions" "^2.0.0" + +"is-boolean-object@^1.1.0": + "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" + "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + "version" "1.1.2" + 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": + "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + "version" "1.2.7" + +"is-ci@^3.0.0": + "integrity" "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==" + "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "ci-info" "^3.2.0" + +"is-core-module@^2.11.0", "is-core-module@^2.12.1", "is-core-module@^2.13.0", "is-core-module@^2.9.0": + "integrity" "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==" + "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" + "version" "2.13.0" + dependencies: + "has" "^1.0.3" + +"is-date-object@^1.0.1", "is-date-object@^1.0.5": + "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" + "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-extglob@^2.1.1": + "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" + +"is-fn@^1.0.0": + "integrity" "sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==" + "resolved" "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz" + "version" "1.0.0" + +"is-fullwidth-code-point@^2.0.0": + "integrity" "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + "version" "2.0.0" + +"is-fullwidth-code-point@^3.0.0": + "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + "version" "3.0.0" + +"is-function@^1.0.1": + "integrity" "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + "resolved" "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" + "version" "1.0.2" + +"is-generator-fn@^2.0.0": + "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + "version" "2.1.0" + +"is-generator-function@^1.0.7": + "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" + "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-extglob" "^2.1.1" + +"is-hex-prefixed@1.0.0": + "integrity" "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==" + "resolved" "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz" + "version" "1.0.0" + +"is-installed-globally@~0.4.0": + "integrity" "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==" + "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "global-dirs" "^3.0.0" + "is-path-inside" "^3.0.2" + +"is-map@^2.0.1", "is-map@^2.0.2": + "integrity" "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" + "resolved" "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" + "version" "2.0.2" + +"is-module@^1.0.0": + "integrity" "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + "resolved" "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" + "version" "1.0.0" + +"is-nan@^1.2.1": + "integrity" "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==" + "resolved" "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "call-bind" "^1.0.0" + "define-properties" "^1.1.3" + +"is-negative-zero@^2.0.2": + "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + "version" "2.0.2" + +"is-number-object@^1.0.4": + "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" + "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-obj@^1.0.1": + "integrity" "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" + "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" + "version" "1.0.1" + +"is-path-cwd@^2.0.0": + "integrity" "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + "resolved" "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" + "version" "2.2.0" + +"is-path-in-cwd@^2.0.0": + "integrity" "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==" + "resolved" "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "is-path-inside" "^2.1.0" + +"is-path-inside@^2.1.0": + "integrity" "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "path-is-inside" "^1.0.2" + +"is-path-inside@^3.0.2", "is-path-inside@^3.0.3": + "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + "version" "3.0.3" + +"is-potential-custom-element-name@^1.0.1": + "integrity" "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "resolved" "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + "version" "1.0.1" + +"is-promise@^2.2.2": + "integrity" "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + "resolved" "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" + "version" "2.2.2" + +"is-regex@^1.1.4": + "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" + "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + "version" "1.1.4" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-regexp@^1.0.0": + "integrity" "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" + "resolved" "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" + "version" "1.0.0" + +"is-set@^2.0.1", "is-set@^2.0.2": + "integrity" "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" + "resolved" "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" + "version" "2.0.2" + +"is-shared-array-buffer@^1.0.2": + "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" + "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + +"is-stream@^2.0.0": + "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + "version" "2.0.1" + +"is-string@^1.0.5", "is-string@^1.0.7": + "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" + "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-symbol@^1.0.2", "is-symbol@^1.0.3": + "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" + "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-symbols" "^1.0.2" + +"is-typed-array@^1.1.10", "is-typed-array@^1.1.3", "is-typed-array@^1.1.9": + "integrity" "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==" + "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" + "version" "1.1.10" + dependencies: + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "for-each" "^0.3.3" + "gopd" "^1.0.1" + "has-tostringtag" "^1.0.0" + +"is-typedarray@^1.0.0", "is-typedarray@~1.0.0", "is-typedarray@1.0.0": + "integrity" "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "version" "1.0.0" + +"is-unicode-supported@^0.1.0": + "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + "version" "0.1.0" + +"is-weakmap@^2.0.1": + "integrity" "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" + "resolved" "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" + "version" "2.0.1" + +"is-weakref@^1.0.2": + "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" + "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + +"is-weakset@^2.0.1": + "integrity" "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==" + "resolved" "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.1" + +"is-what@^3.14.1": + "integrity" "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + "resolved" "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" + "version" "3.14.1" + +"isarray@^2.0.1", "isarray@^2.0.5": + "integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + "version" "2.0.5" + +"isarray@~1.0.0": + "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version" "1.0.0" + +"isarray@0.0.1": + "integrity" "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "version" "0.0.1" + +"isexe@^2.0.0": + "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"isomorphic-ws@^4.0.1": + "integrity" "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==" + "resolved" "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" + "version" "4.0.1" + +"isstream@~0.1.2": + "integrity" "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "version" "0.1.2" + +"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": + "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + "version" "3.2.0" + +"istanbul-lib-instrument@^5.0.4", "istanbul-lib-instrument@^5.1.0": + "integrity" "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" + "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + "version" "5.2.1" dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -jayson@^3.4.4: - version "3.7.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.7.0.tgz#b735b12d06d348639ae8230d7a1e2916cb078f25" - integrity sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ== + "istanbul-lib-coverage" "^3.2.0" + "semver" "^6.3.0" + +"istanbul-lib-report@^3.0.0": + "integrity" "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "istanbul-lib-coverage" "^3.0.0" + "make-dir" "^3.0.0" + "supports-color" "^7.1.0" + +"istanbul-lib-source-maps@^4.0.0": + "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "debug" "^4.1.1" + "istanbul-lib-coverage" "^3.0.0" + "source-map" "^0.6.1" + +"istanbul-reports@^3.1.3": + "integrity" "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==" + "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "html-escaper" "^2.0.0" + "istanbul-lib-report" "^3.0.0" + +"jake@^10.8.5": + "integrity" "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==" + "resolved" "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" + "version" "10.8.5" + dependencies: + "async" "^3.2.3" + "chalk" "^4.0.2" + "filelist" "^1.0.1" + "minimatch" "^3.0.4" + +"jayson@^4.1.0": + "integrity" "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==" + "resolved" "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz" + "version" "4.1.0" dependencies: "@types/connect" "^3.4.33" "@types/node" "^12.12.54" "@types/ws" "^7.4.4" - JSONStream "^1.3.5" - commander "^2.20.3" - delay "^5.0.0" - es6-promisify "^5.0.0" - eyes "^0.1.8" - isomorphic-ws "^4.0.1" - json-stringify-safe "^5.0.1" - lodash "^4.17.20" - uuid "^8.3.2" - ws "^7.4.5" - -jest-changed-files@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" - integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== - dependencies: - execa "^5.0.0" - p-limit "^3.1.0" - -jest-circus@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" - integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== + "commander" "^2.20.3" + "delay" "^5.0.0" + "es6-promisify" "^5.0.0" + "eyes" "^0.1.8" + "isomorphic-ws" "^4.0.1" + "json-stringify-safe" "^5.0.1" + "JSONStream" "^1.3.5" + "uuid" "^8.3.2" + "ws" "^7.4.5" + +"jest-changed-files@^28.1.3": + "integrity" "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==" + "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz" + "version" "28.1.3" + dependencies: + "execa" "^5.0.0" + "p-limit" "^3.1.0" + +"jest-circus@^28.1.3": + "integrity" "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==" + "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/environment" "^28.1.3" "@jest/expect" "^28.1.3" "@jest/test-result" "^28.1.3" "@jest/types" "^28.1.3" "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - is-generator-fn "^2.0.0" - jest-each "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - p-limit "^3.1.0" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" - integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== + "chalk" "^4.0.0" + "co" "^4.6.0" + "dedent" "^0.7.0" + "is-generator-fn" "^2.0.0" + "jest-each" "^28.1.3" + "jest-matcher-utils" "^28.1.3" + "jest-message-util" "^28.1.3" + "jest-runtime" "^28.1.3" + "jest-snapshot" "^28.1.3" + "jest-util" "^28.1.3" + "p-limit" "^3.1.0" + "pretty-format" "^28.1.3" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" + +"jest-cli@^28.1.3": + "integrity" "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==" + "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/core" "^28.1.3" "@jest/test-result" "^28.1.3" "@jest/types" "^28.1.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - prompts "^2.0.1" - yargs "^17.3.1" - -jest-config@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" - integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ== + "chalk" "^4.0.0" + "exit" "^0.1.2" + "graceful-fs" "^4.2.9" + "import-local" "^3.0.2" + "jest-config" "^28.1.3" + "jest-util" "^28.1.3" + "jest-validate" "^28.1.3" + "prompts" "^2.0.1" + "yargs" "^17.3.1" + +"jest-config@^28.1.3": + "integrity" "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==" + "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz" + "version" "28.1.3" dependencies: "@babel/core" "^7.11.6" "@jest/test-sequencer" "^28.1.3" "@jest/types" "^28.1.3" - babel-jest "^28.1.3" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^28.1.3" - jest-environment-node "^28.1.3" - jest-get-type "^28.0.2" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-runner "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^28.1.3" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" - integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== - dependencies: - chalk "^4.0.0" - diff-sequences "^28.1.1" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - -jest-diff@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527" - integrity sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.3.1" - jest-get-type "^29.2.0" - pretty-format "^29.3.1" - -jest-docblock@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" - integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== - dependencies: - detect-newline "^3.0.0" - -jest-each@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" - integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== + "babel-jest" "^28.1.3" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "deepmerge" "^4.2.2" + "glob" "^7.1.3" + "graceful-fs" "^4.2.9" + "jest-circus" "^28.1.3" + "jest-environment-node" "^28.1.3" + "jest-get-type" "^28.0.2" + "jest-regex-util" "^28.0.2" + "jest-resolve" "^28.1.3" + "jest-runner" "^28.1.3" + "jest-util" "^28.1.3" + "jest-validate" "^28.1.3" + "micromatch" "^4.0.4" + "parse-json" "^5.2.0" + "pretty-format" "^28.1.3" + "slash" "^3.0.0" + "strip-json-comments" "^3.1.1" + +"jest-diff@^28.1.3": + "integrity" "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==" + "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz" + "version" "28.1.3" + dependencies: + "chalk" "^4.0.0" + "diff-sequences" "^28.1.1" + "jest-get-type" "^28.0.2" + "pretty-format" "^28.1.3" + +"jest-diff@^29.3.1": + "integrity" "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==" + "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz" + "version" "29.3.1" + dependencies: + "chalk" "^4.0.0" + "diff-sequences" "^29.3.1" + "jest-get-type" "^29.2.0" + "pretty-format" "^29.3.1" + +"jest-docblock@^28.1.1": + "integrity" "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==" + "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz" + "version" "28.1.1" + dependencies: + "detect-newline" "^3.0.0" + +"jest-each@^28.1.3": + "integrity" "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==" + "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/types" "^28.1.3" - chalk "^4.0.0" - jest-get-type "^28.0.2" - jest-util "^28.1.3" - pretty-format "^28.1.3" + "chalk" "^4.0.0" + "jest-get-type" "^28.0.2" + "jest-util" "^28.1.3" + "pretty-format" "^28.1.3" -jest-environment-jsdom@^28.1.2: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz#2d4e5d61b7f1d94c3bddfbb21f0308ee506c09fb" - integrity sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg== +"jest-environment-jsdom@^28.1.2": + "integrity" "sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==" + "resolved" "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/environment" "^28.1.3" "@jest/fake-timers" "^28.1.3" "@jest/types" "^28.1.3" "@types/jsdom" "^16.2.4" "@types/node" "*" - jest-mock "^28.1.3" - jest-util "^28.1.3" - jsdom "^19.0.0" + "jest-mock" "^28.1.3" + "jest-util" "^28.1.3" + "jsdom" "^19.0.0" -jest-environment-node@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" - integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== +"jest-environment-node@^28.1.3": + "integrity" "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==" + "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/environment" "^28.1.3" "@jest/fake-timers" "^28.1.3" "@jest/types" "^28.1.3" "@types/node" "*" - jest-mock "^28.1.3" - jest-util "^28.1.3" + "jest-mock" "^28.1.3" + "jest-util" "^28.1.3" -jest-get-type@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" - integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== +"jest-get-type@^28.0.2": + "integrity" "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==" + "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz" + "version" "28.0.2" -jest-get-type@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" - integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== +"jest-get-type@^29.2.0": + "integrity" "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==" + "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz" + "version" "29.2.0" -jest-haste-map@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" - integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== +"jest-haste-map@^28.1.3": + "integrity" "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==" + "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/types" "^28.1.3" "@types/graceful-fs" "^4.1.3" "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - jest-worker "^28.1.3" - micromatch "^4.0.4" - walker "^1.0.8" + "anymatch" "^3.0.3" + "fb-watchman" "^2.0.0" + "graceful-fs" "^4.2.9" + "jest-regex-util" "^28.0.2" + "jest-util" "^28.1.3" + "jest-worker" "^28.1.3" + "micromatch" "^4.0.4" + "walker" "^1.0.8" optionalDependencies: - fsevents "^2.3.2" + "fsevents" "^2.3.2" -jest-leak-detector@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" - integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA== +"jest-leak-detector@^28.1.3": + "integrity" "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==" + "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz" + "version" "28.1.3" dependencies: - jest-get-type "^28.0.2" - pretty-format "^28.1.3" + "jest-get-type" "^28.0.2" + "pretty-format" "^28.1.3" -jest-matcher-utils@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" - integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== +"jest-matcher-utils@^28.1.3": + "integrity" "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==" + "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz" + "version" "28.1.3" dependencies: - chalk "^4.0.0" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" + "chalk" "^4.0.0" + "jest-diff" "^28.1.3" + "jest-get-type" "^28.0.2" + "pretty-format" "^28.1.3" -jest-matcher-utils@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572" - integrity sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ== +"jest-matcher-utils@^29.3.1": + "integrity" "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==" + "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz" + "version" "29.3.1" dependencies: - chalk "^4.0.0" - jest-diff "^29.3.1" - jest-get-type "^29.2.0" - pretty-format "^29.3.1" + "chalk" "^4.0.0" + "jest-diff" "^29.3.1" + "jest-get-type" "^29.2.0" + "pretty-format" "^29.3.1" -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== +"jest-message-util@^28.1.3": + "integrity" "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==" + "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz" + "version" "28.1.3" dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^28.1.3" "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-message-util@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.3.1.tgz#37bc5c468dfe5120712053dd03faf0f053bd6adb" - integrity sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA== + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "micromatch" "^4.0.4" + "pretty-format" "^28.1.3" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" + +"jest-message-util@^29.3.1": + "integrity" "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==" + "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz" + "version" "29.3.1" dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^29.3.1" "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.3.1" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" - integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "micromatch" "^4.0.4" + "pretty-format" "^29.3.1" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" + +"jest-mock@^28.1.3": + "integrity" "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==" + "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/types" "^28.1.3" "@types/node" "*" -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== - -jest-resolve-dependencies@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" - integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA== - dependencies: - jest-regex-util "^28.0.2" - jest-snapshot "^28.1.3" - -jest-resolve@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" - integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-pnp-resolver "^1.2.2" - jest-util "^28.1.3" - jest-validate "^28.1.3" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" - -jest-runner@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" - integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA== +"jest-pnp-resolver@^1.2.2": + "integrity" "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==" + "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + "version" "1.2.3" + +"jest-regex-util@^28.0.2": + "integrity" "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==" + "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz" + "version" "28.0.2" + +"jest-resolve-dependencies@^28.1.3": + "integrity" "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==" + "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz" + "version" "28.1.3" + dependencies: + "jest-regex-util" "^28.0.2" + "jest-snapshot" "^28.1.3" + +"jest-resolve@*", "jest-resolve@^28.1.3": + "integrity" "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==" + "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz" + "version" "28.1.3" + dependencies: + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^28.1.3" + "jest-pnp-resolver" "^1.2.2" + "jest-util" "^28.1.3" + "jest-validate" "^28.1.3" + "resolve" "^1.20.0" + "resolve.exports" "^1.1.0" + "slash" "^3.0.0" + +"jest-runner@^28.1.3": + "integrity" "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==" + "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/console" "^28.1.3" "@jest/environment" "^28.1.3" @@ -9854,26 +9856,26 @@ jest-runner@^28.1.3: "@jest/transform" "^28.1.3" "@jest/types" "^28.1.3" "@types/node" "*" - chalk "^4.0.0" - emittery "^0.10.2" - graceful-fs "^4.2.9" - jest-docblock "^28.1.1" - jest-environment-node "^28.1.3" - jest-haste-map "^28.1.3" - jest-leak-detector "^28.1.3" - jest-message-util "^28.1.3" - jest-resolve "^28.1.3" - jest-runtime "^28.1.3" - jest-util "^28.1.3" - jest-watcher "^28.1.3" - jest-worker "^28.1.3" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" - integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw== + "chalk" "^4.0.0" + "emittery" "^0.10.2" + "graceful-fs" "^4.2.9" + "jest-docblock" "^28.1.1" + "jest-environment-node" "^28.1.3" + "jest-haste-map" "^28.1.3" + "jest-leak-detector" "^28.1.3" + "jest-message-util" "^28.1.3" + "jest-resolve" "^28.1.3" + "jest-runtime" "^28.1.3" + "jest-util" "^28.1.3" + "jest-watcher" "^28.1.3" + "jest-worker" "^28.1.3" + "p-limit" "^3.1.0" + "source-map-support" "0.5.13" + +"jest-runtime@^28.1.3": + "integrity" "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==" + "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/environment" "^28.1.3" "@jest/fake-timers" "^28.1.3" @@ -9882,26 +9884,26 @@ jest-runtime@^28.1.3: "@jest/test-result" "^28.1.3" "@jest/transform" "^28.1.3" "@jest/types" "^28.1.3" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" - integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg== + "chalk" "^4.0.0" + "cjs-module-lexer" "^1.0.0" + "collect-v8-coverage" "^1.0.0" + "execa" "^5.0.0" + "glob" "^7.1.3" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^28.1.3" + "jest-message-util" "^28.1.3" + "jest-mock" "^28.1.3" + "jest-regex-util" "^28.0.2" + "jest-resolve" "^28.1.3" + "jest-snapshot" "^28.1.3" + "jest-util" "^28.1.3" + "slash" "^3.0.0" + "strip-bom" "^4.0.0" + +"jest-snapshot@^28.1.3": + "integrity" "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==" + "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz" + "version" "28.1.3" dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -9913,111 +9915,111 @@ jest-snapshot@^28.1.3: "@jest/types" "^28.1.3" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^28.1.3" - graceful-fs "^4.2.9" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - jest-haste-map "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - natural-compare "^1.4.0" - pretty-format "^28.1.3" - semver "^7.3.5" - -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + "babel-preset-current-node-syntax" "^1.0.0" + "chalk" "^4.0.0" + "expect" "^28.1.3" + "graceful-fs" "^4.2.9" + "jest-diff" "^28.1.3" + "jest-get-type" "^28.0.2" + "jest-haste-map" "^28.1.3" + "jest-matcher-utils" "^28.1.3" + "jest-message-util" "^28.1.3" + "jest-util" "^28.1.3" + "natural-compare" "^1.4.0" + "pretty-format" "^28.1.3" + "semver" "^7.3.5" + +"jest-util@^28.1.3": + "integrity" "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==" + "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/types" "^28.1.3" "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "graceful-fs" "^4.2.9" + "picomatch" "^2.2.3" -jest-util@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1" - integrity sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ== +"jest-util@^29.3.1": + "integrity" "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==" + "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz" + "version" "29.3.1" dependencies: "@jest/types" "^29.3.1" "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "graceful-fs" "^4.2.9" + "picomatch" "^2.2.3" -jest-validate@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" - integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== +"jest-validate@^28.1.3": + "integrity" "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==" + "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/types" "^28.1.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^28.0.2" - leven "^3.1.0" - pretty-format "^28.1.3" + "camelcase" "^6.2.0" + "chalk" "^4.0.0" + "jest-get-type" "^28.0.2" + "leven" "^3.1.0" + "pretty-format" "^28.1.3" -jest-watcher@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" - integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== +"jest-watcher@^28.1.3": + "integrity" "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==" + "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/test-result" "^28.1.3" "@jest/types" "^28.1.3" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^28.1.3" - string-length "^4.0.1" + "ansi-escapes" "^4.2.1" + "chalk" "^4.0.0" + "emittery" "^0.10.2" + "jest-util" "^28.1.3" + "string-length" "^4.0.1" -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== +"jest-worker@^26.2.1": + "integrity" "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" + "version" "26.6.2" dependencies: "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" + "merge-stream" "^2.0.0" + "supports-color" "^7.0.0" -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +"jest-worker@^27.4.5": + "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + "version" "27.5.1" dependencies: "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" -jest-worker@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== +"jest-worker@^28.1.3": + "integrity" "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz" + "version" "28.1.3" dependencies: "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" -jest@^28.1.2: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" - integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== +"jest@^28.1.2": + "integrity" "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==" + "resolved" "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/core" "^28.1.3" "@jest/types" "^28.1.3" - import-local "^3.0.2" - jest-cli "^28.1.3" + "import-local" "^3.0.2" + "jest-cli" "^28.1.3" -joi@17.9.1: - version "17.9.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.1.tgz#74899b9fa3646904afa984a11df648eca66c9018" - integrity sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw== +"joi@17.9.1": + "integrity" "sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw==" + "resolved" "https://registry.npmjs.org/joi/-/joi-17.9.1.tgz" + "version" "17.9.1" dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" @@ -10025,840 +10027,824 @@ joi@17.9.1: "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" -js-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.1.tgz#9e39b4c6c2f56563708d7d31f6f5f21873a92414" - integrity sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw== - -js-sdsl@^4.1.4: - version "4.2.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" - integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== - -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -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" - -jsbi@^3.1.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-3.2.5.tgz#b37bb90e0e5c2814c1c2a1bcd8c729888a2e37d6" - integrity sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ== - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsdom@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" - integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A== - dependencies: - abab "^2.0.5" - acorn "^8.5.0" - acorn-globals "^6.0.0" - cssom "^0.5.0" - cssstyle "^2.3.0" - data-urls "^3.0.1" - decimal.js "^10.3.1" - domexception "^4.0.0" - escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^3.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^10.0.0" - ws "^8.2.3" - xml-name-validator "^4.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-rpc-engine@6.1.0, json-rpc-engine@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" - integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== +"js-cookie@^3.0.1": + "integrity" "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==" + "resolved" "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz" + "version" "3.0.1" + +"js-sdsl@^4.1.4": + "integrity" "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==" + "resolved" "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz" + "version" "4.4.2" + +"js-sha3@^0.5.7": + "integrity" "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" + "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz" + "version" "0.5.7" + +"js-sha3@^0.8.0", "js-sha3@0.8.0": + "integrity" "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" + "version" "0.8.0" + +"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": + "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + "version" "4.0.0" + +"js-yaml@^3.13.1": + "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + "version" "3.14.1" + dependencies: + "argparse" "^1.0.7" + "esprima" "^4.0.0" + +"js-yaml@^4.1.0": + "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "argparse" "^2.0.1" + +"jsbi@^3.1.5": + "integrity" "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==" + "resolved" "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz" + "version" "3.2.5" + +"jsbn@~0.1.0": + "integrity" "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + "version" "0.1.1" + +"jsdom@^19.0.0": + "integrity" "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==" + "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz" + "version" "19.0.0" + dependencies: + "abab" "^2.0.5" + "acorn" "^8.5.0" + "acorn-globals" "^6.0.0" + "cssom" "^0.5.0" + "cssstyle" "^2.3.0" + "data-urls" "^3.0.1" + "decimal.js" "^10.3.1" + "domexception" "^4.0.0" + "escodegen" "^2.0.0" + "form-data" "^4.0.0" + "html-encoding-sniffer" "^3.0.0" + "http-proxy-agent" "^5.0.0" + "https-proxy-agent" "^5.0.0" + "is-potential-custom-element-name" "^1.0.1" + "nwsapi" "^2.2.0" + "parse5" "6.0.1" + "saxes" "^5.0.1" + "symbol-tree" "^3.2.4" + "tough-cookie" "^4.0.0" + "w3c-hr-time" "^1.0.2" + "w3c-xmlserializer" "^3.0.0" + "webidl-conversions" "^7.0.0" + "whatwg-encoding" "^2.0.0" + "whatwg-mimetype" "^3.0.0" + "whatwg-url" "^10.0.0" + "ws" "^8.2.3" + "xml-name-validator" "^4.0.0" + +"jsesc@^2.5.1": + "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + "version" "2.5.2" + +"jsesc@~0.5.0": + "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + "version" "0.5.0" + +"json-buffer@3.0.1": + "integrity" "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + "version" "3.0.1" + +"json-parse-even-better-errors@^2.3.0": + "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + "version" "2.3.1" + +"json-rpc-engine@^5.3.0": + "integrity" "sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==" + "resolved" "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz" + "version" "5.4.0" + dependencies: + "eth-rpc-errors" "^3.0.0" + "safe-event-emitter" "^1.0.1" + +"json-rpc-engine@^6.1.0", "json-rpc-engine@6.1.0": + "integrity" "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==" + "resolved" "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz" + "version" "6.1.0" dependencies: "@metamask/safe-event-emitter" "^2.0.0" - eth-rpc-errors "^4.0.2" - -json-rpc-engine@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" - integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== - dependencies: - eth-rpc-errors "^3.0.0" - safe-event-emitter "^1.0.1" - -json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" - integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.4.0, json-schema@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -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== - -json-stable-stringify@^1.0.1, json-stable-stringify@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" - integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== - dependencies: - jsonify "^0.0.1" - -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@^1.0.1: - 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" - -json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.1, json5@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + "eth-rpc-errors" "^4.0.2" + +"json-rpc-random-id@^1.0.0", "json-rpc-random-id@^1.0.1": + "integrity" "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==" + "resolved" "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz" + "version" "1.0.1" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-schema-traverse@^1.0.0": + "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + "version" "1.0.0" + +"json-schema@^0.4.0", "json-schema@0.4.0": + "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + "version" "0.4.0" + +"json-stable-stringify-without-jsonify@^1.0.1": + "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + "version" "1.0.1" + +"json-stable-stringify@^1.0.1", "json-stable-stringify@^1.0.2": + "integrity" "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==" + "resolved" "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "jsonify" "^0.0.1" + +"json-stringify-safe@^5.0.1", "json-stringify-safe@~5.0.1": + "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "version" "5.0.1" + +"json5@^1.0.2": + "integrity" "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==" + "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "minimist" "^1.2.0" + +"json5@^2.1.2", "json5@^2.1.3", "json5@^2.2.0", "json5@^2.2.1", "json5@^2.2.2": + "version" "2.2.2" + +"jsonfile@^4.0.0": + "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + "version" "4.0.0" optionalDependencies: - graceful-fs "^4.1.6" + "graceful-fs" "^4.1.6" -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== +"jsonfile@^6.0.1": + "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + "version" "6.1.0" dependencies: - universalify "^2.0.0" + "universalify" "^2.0.0" optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" - integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - -jsonpointer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== - -jsonschema@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.2.tgz#83ab9c63d65bf4d596f91d81195e78772f6452bc" - integrity sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA== - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -jsprim@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" - integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -jsqr@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsqr/-/jsqr-1.4.0.tgz#8efb8d0a7cc6863cb6d95116b9069123ce9eb2d1" - integrity sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A== - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== - dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" - -keccak@3.0.2, keccak@^3.0.0, keccak@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -keccak@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" - integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -keyv@^4.0.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" - integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== - dependencies: - json-buffer "3.0.1" - -keyvaluestorage-interface@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" - integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -language-subtag-registry@^0.3.20: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== - -language-tags@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.7.tgz#41cc248730f3f12a452c2e2efe32bc0bbce67967" - integrity sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw== - dependencies: - language-subtag-registry "^0.3.20" - -lazy-ass@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" - integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== - -less@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/less/-/less-4.1.3.tgz#175be9ddcbf9b250173e0a00b4d6920a5b770246" - integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== - dependencies: - copy-anything "^2.0.1" - parse-node-version "^1.0.1" - tslib "^2.3.0" + "graceful-fs" "^4.1.6" + +"jsonify@^0.0.1": + "integrity" "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==" + "resolved" "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz" + "version" "0.0.1" + +"jsonparse@^1.2.0": + "integrity" "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" + "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" + "version" "1.3.1" + +"jsonpointer@^5.0.0": + "integrity" "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" + "resolved" "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" + "version" "5.0.1" + +"jsonschema@1.2.2": + "integrity" "sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA==" + "resolved" "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.2.tgz" + "version" "1.2.2" + +"JSONStream@^1.3.5": + "integrity" "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" + "resolved" "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "jsonparse" "^1.2.0" + "through" ">=2.2.7 <3" + +"jsprim@^1.2.2": + "integrity" "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==" + "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" + "version" "1.4.2" + dependencies: + "assert-plus" "1.0.0" + "extsprintf" "1.3.0" + "json-schema" "0.4.0" + "verror" "1.10.0" + +"jsprim@^2.0.2": + "integrity" "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==" + "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "assert-plus" "1.0.0" + "extsprintf" "1.3.0" + "json-schema" "0.4.0" + "verror" "1.10.0" + +"jsqr@^1.2.0": + "integrity" "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" + "resolved" "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz" + "version" "1.4.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", "jsx-ast-utils@^3.3.2": + "integrity" "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==" + "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" + "version" "3.3.3" + dependencies: + "array-includes" "^3.1.5" + "object.assign" "^4.1.3" + +"keccak@^3.0.0", "keccak@^3.0.1", "keccak@3.0.2": + "integrity" "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==" + "resolved" "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "node-addon-api" "^2.0.0" + "node-gyp-build" "^4.2.0" + "readable-stream" "^3.6.0" + +"keyv@^4.0.0": + "integrity" "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==" + "resolved" "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz" + "version" "4.5.3" + dependencies: + "json-buffer" "3.0.1" + +"keyvaluestorage-interface@^1.0.0": + "integrity" "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==" + "resolved" "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz" + "version" "1.0.0" + +"kleur@^3.0.3": + "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + "version" "3.0.3" + +"language-subtag-registry@^0.3.20": + "integrity" "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" + "resolved" "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" + "version" "0.3.22" + +"language-tags@^1.0.5": + "integrity" "sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw==" + "resolved" "https://registry.npmjs.org/language-tags/-/language-tags-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "language-subtag-registry" "^0.3.20" + +"lazy-ass@^1.6.0": + "integrity" "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==" + "resolved" "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz" + "version" "1.6.0" + +"less@^4.1.3": + "integrity" "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==" + "resolved" "https://registry.npmjs.org/less/-/less-4.1.3.tgz" + "version" "4.1.3" + dependencies: + "copy-anything" "^2.0.1" + "parse-node-version" "^1.0.1" + "tslib" "^2.3.0" optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - needle "^3.1.0" - source-map "~0.6.0" - -level-codec@~7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" - integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== - -level-errors@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" - integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== - dependencies: - errno "~0.1.1" - -level-errors@~1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" - integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== - dependencies: - errno "~0.1.1" - -level-iterator-stream@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" - integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== - dependencies: - inherits "^2.0.1" - level-errors "^1.0.3" - readable-stream "^1.0.33" - xtend "^4.0.0" - -level-ws@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" - integrity sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw== - dependencies: - readable-stream "~1.0.15" - xtend "~2.1.1" - -levelup@^1.2.1: - version "1.3.9" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" - integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== - dependencies: - deferred-leveldown "~1.2.1" - level-codec "~7.0.0" - level-errors "~1.0.3" - level-iterator-stream "~1.3.0" - prr "~1.0.1" - semver "~5.4.1" - xtend "~4.0.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -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" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lilconfig@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" - integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -listr2@^3.8.3: - version "3.14.0" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" - integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.1" - through "^2.3.8" - wrap-ansi "^7.0.0" - -lit-element@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.2.tgz#9913bf220b85065f0e5f1bb8878cc44f36b50cfa" - integrity sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ== + "errno" "^0.1.1" + "graceful-fs" "^4.1.2" + "image-size" "~0.5.0" + "make-dir" "^2.1.0" + "mime" "^1.4.1" + "needle" "^3.1.0" + "source-map" "~0.6.0" + +"level-codec@~7.0.0": + "integrity" "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==" + "resolved" "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz" + "version" "7.0.1" + +"level-errors@^1.0.3": + "integrity" "sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w==" + "resolved" "https://registry.npmjs.org/level-errors/-/level-errors-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "errno" "~0.1.1" + +"level-errors@~1.0.3": + "integrity" "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==" + "resolved" "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "errno" "~0.1.1" + +"level-iterator-stream@~1.3.0": + "integrity" "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==" + "resolved" "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "inherits" "^2.0.1" + "level-errors" "^1.0.3" + "readable-stream" "^1.0.33" + "xtend" "^4.0.0" + +"level-ws@0.0.0": + "integrity" "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==" + "resolved" "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz" + "version" "0.0.0" + dependencies: + "readable-stream" "~1.0.15" + "xtend" "~2.1.1" + +"levelup@^1.2.1": + "integrity" "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==" + "resolved" "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz" + "version" "1.3.9" + dependencies: + "deferred-leveldown" "~1.2.1" + "level-codec" "~7.0.0" + "level-errors" "~1.0.3" + "level-iterator-stream" "~1.3.0" + "prr" "~1.0.1" + "semver" "~5.4.1" + "xtend" "~4.0.0" + +"leven@^3.1.0": + "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + "version" "3.1.0" + +"levn@^0.4.1": + "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + "version" "0.4.1" + dependencies: + "prelude-ls" "^1.2.1" + "type-check" "~0.4.0" + +"levn@~0.3.0": + "integrity" "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + "version" "0.3.0" + dependencies: + "prelude-ls" "~1.1.2" + "type-check" "~0.3.2" + +"lilconfig@^2.0.5": + "integrity" "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==" + "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz" + "version" "2.0.6" + +"lines-and-columns@^1.1.6": + "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + "version" "1.2.4" + +"listr2@^3.8.3": + "integrity" "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==" + "resolved" "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz" + "version" "3.14.0" + dependencies: + "cli-truncate" "^2.1.0" + "colorette" "^2.0.16" + "log-update" "^4.0.0" + "p-map" "^4.0.0" + "rfdc" "^1.3.0" + "rxjs" "^7.5.1" + "through" "^2.3.8" + "wrap-ansi" "^7.0.0" + +"lit-element@^3.3.0": + "integrity" "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==" + "resolved" "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz" + "version" "3.3.3" dependencies: "@lit-labs/ssr-dom-shim" "^1.1.0" "@lit/reactive-element" "^1.3.0" - lit-html "^2.7.0" + "lit-html" "^2.8.0" -lit-html@^2.7.0: - version "2.7.4" - resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.7.4.tgz#6d75001977c206683685b9d76594a516afda2954" - integrity sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g== +"lit-html@^2.7.0", "lit-html@^2.8.0": + "integrity" "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==" + "resolved" "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz" + "version" "2.8.0" dependencies: "@types/trusted-types" "^2.0.2" -lit@2.7.5: - version "2.7.5" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.5.tgz#60bc82990cfad169d42cd786999356dcf79b035f" - integrity sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ== +"lit@2.7.5": + "integrity" "sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==" + "resolved" "https://registry.npmjs.org/lit/-/lit-2.7.5.tgz" + "version" "2.7.5" dependencies: "@lit/reactive-element" "^1.6.0" - lit-element "^3.3.0" - lit-html "^2.7.0" - -loader-utils@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -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@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -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.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - -lodash.isequal@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -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.once@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - -lodash.partition@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.partition/-/lodash.partition-4.6.0.tgz#a38e46b73469e0420b0da1212e66d414be364ba4" - integrity sha512-35L3dSF3Q6V1w5j6V3NhNlQjzsRDC/pYKCTdYTmwqSib+Q8ponkAmt/PwEOq3EmI38DSCl+SkIVwLd+uSlVdrg== - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== - -lodash.uniqby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" - integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== - -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lowercase-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" - integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== - -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== - dependencies: - es5-ext "~0.10.2" - -ltgt@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== - -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== - -magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -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== - -memdown@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" - integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== - dependencies: - abstract-leveldown "~2.7.1" - functional-red-black-tree "^1.0.1" - immediate "^3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memoizee@^0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" - integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.53" - es6-weak-map "^2.0.3" - event-emitter "^0.3.5" - is-promise "^2.2.2" - lru-queue "^0.1.0" - next-tick "^1.1.0" - timers-ext "^0.1.7" - -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== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" - integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== - dependencies: - async "^1.4.2" - ethereumjs-util "^5.0.0" - level-ws "0.0.0" - levelup "^1.2.1" - memdown "^1.0.0" - readable-stream "^2.0.0" - rlp "^2.0.0" - semaphore ">=1.0.1" - -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== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -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.16, mime-types@~2.1.19, 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, mime@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== - dependencies: - dom-walk "^0.1.0" - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@^3.0.4, minimatch@^3.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" - -minimatch@^5.0.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.2.tgz#0939d7d6f0898acbd1508abe534d1929368a8fff" - integrity sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" + "lit-element" "^3.3.0" + "lit-html" "^2.7.0" + +"loader-utils@^2.0.0": + "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "big.js" "^5.2.2" + "emojis-list" "^3.0.0" + "json5" "^2.1.2" + +"locate-path@^3.0.0": + "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-locate" "^3.0.0" + "path-exists" "^3.0.0" + +"locate-path@^5.0.0": + "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-locate" "^4.1.0" + +"locate-path@^6.0.0": + "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "p-locate" "^5.0.0" + +"lodash.camelcase@^4.3.0": + "integrity" "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + "resolved" "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" + "version" "4.3.0" + +"lodash.debounce@^4.0.8": + "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + "version" "4.0.8" + +"lodash.defaults@^4.2.0": + "integrity" "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + "resolved" "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" + "version" "4.2.0" + +"lodash.isequal@4.5.0": + "integrity" "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + "version" "4.5.0" + +"lodash.merge@^4.6.2": + "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + "version" "4.6.2" + +"lodash.once@^4.1.1": + "integrity" "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + "resolved" "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" + "version" "4.1.1" + +"lodash.partition@^4.6.0": + "integrity" "sha512-35L3dSF3Q6V1w5j6V3NhNlQjzsRDC/pYKCTdYTmwqSib+Q8ponkAmt/PwEOq3EmI38DSCl+SkIVwLd+uSlVdrg==" + "resolved" "https://registry.npmjs.org/lodash.partition/-/lodash.partition-4.6.0.tgz" + "version" "4.6.0" + +"lodash.sortby@^4.7.0": + "integrity" "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + "resolved" "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" + "version" "4.7.0" + +"lodash.uniqby@^4.7.0": + "integrity" "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + "resolved" "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" + "version" "4.7.0" + +"lodash@^4.17.14", "lodash@^4.17.15", "lodash@^4.17.20", "lodash@^4.17.21", "lodash@^4.17.4": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"log-symbols@^4.0.0": + "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "chalk" "^4.1.0" + "is-unicode-supported" "^0.1.0" + +"log-update@^4.0.0": + "integrity" "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==" + "resolved" "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "ansi-escapes" "^4.3.0" + "cli-cursor" "^3.1.0" + "slice-ansi" "^4.0.0" + "wrap-ansi" "^6.2.0" + +"long@^4.0.0": + "integrity" "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + "resolved" "https://registry.npmjs.org/long/-/long-4.0.0.tgz" + "version" "4.0.0" + +"long@~3": + "integrity" "sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==" + "resolved" "https://registry.npmjs.org/long/-/long-3.2.0.tgz" + "version" "3.2.0" + +"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.4.0": + "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" + "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "js-tokens" "^3.0.0 || ^4.0.0" + +"lowercase-keys@^2.0.0": + "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + "version" "2.0.0" + +"lowercase-keys@^3.0.0": + "integrity" "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" + "version" "3.0.0" + +"lru-cache@^4.0.1": + "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" + "version" "4.1.5" + dependencies: + "pseudomap" "^1.0.2" + "yallist" "^2.1.2" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + +"lru-queue@^0.1.0": + "integrity" "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==" + "resolved" "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz" + "version" "0.1.0" + dependencies: + "es5-ext" "~0.10.2" + +"ltgt@~2.2.0": + "integrity" "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==" + "resolved" "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz" + "version" "2.2.1" + +"lz-string@^1.4.4": + "integrity" "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==" + "resolved" "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" + "version" "1.4.4" + +"magic-string@^0.25.0", "magic-string@^0.25.7": + "integrity" "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==" + "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" + "version" "0.25.9" + dependencies: + "sourcemap-codec" "^1.4.8" + +"make-dir@^2.1.0": + "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "pify" "^4.0.1" + "semver" "^5.6.0" + +"make-dir@^3.0.0", "make-dir@^3.0.2", "make-dir@^3.1.0": + "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "semver" "^6.0.0" + +"make-error@^1.1.1": + "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + "version" "1.3.6" + +"makeerror@1.0.12": + "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" + "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + "version" "1.0.12" + dependencies: + "tmpl" "1.0.5" + +"md5.js@^1.3.4": + "integrity" "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==" + "resolved" "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "hash-base" "^3.0.0" + "inherits" "^2.0.1" + "safe-buffer" "^5.1.2" + +"mdn-data@2.0.14": + "integrity" "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + "version" "2.0.14" + +"media-typer@0.3.0": + "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "version" "0.3.0" + +"memdown@^1.0.0": + "integrity" "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==" + "resolved" "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "abstract-leveldown" "~2.7.1" + "functional-red-black-tree" "^1.0.1" + "immediate" "^3.2.3" + "inherits" "~2.0.1" + "ltgt" "~2.2.0" + "safe-buffer" "~5.1.1" + +"memoizee@^0.4.15": + "integrity" "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==" + "resolved" "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz" + "version" "0.4.15" + dependencies: + "d" "^1.0.1" + "es5-ext" "^0.10.53" + "es6-weak-map" "^2.0.3" + "event-emitter" "^0.3.5" + "is-promise" "^2.2.2" + "lru-queue" "^0.1.0" + "next-tick" "^1.1.0" + "timers-ext" "^0.1.7" + +"merge-descriptors@1.0.1": + "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + "version" "1.0.1" + +"merge-stream@^2.0.0": + "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + "version" "2.0.0" + +"merge2@^1.3.0", "merge2@^1.4.1": + "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + "version" "1.4.1" + +"merkle-patricia-tree@^2.1.2", "merkle-patricia-tree@^2.3.2": + "integrity" "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==" + "resolved" "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz" + "version" "2.3.2" + dependencies: + "async" "^1.4.2" + "ethereumjs-util" "^5.0.0" + "level-ws" "0.0.0" + "levelup" "^1.2.1" + "memdown" "^1.0.0" + "readable-stream" "^2.0.0" + "rlp" "^2.0.0" + "semaphore" ">=1.0.1" + +"methods@~1.1.2": + "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "version" "1.1.2" + +"micromatch@^4.0.4": + "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + "version" "4.0.5" + dependencies: + "braces" "^3.0.2" + "picomatch" "^2.3.1" + +"mime-db@1.52.0": + "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + "version" "1.52.0" + +"mime-types@^2.1.12", "mime-types@^2.1.16", "mime-types@~2.1.19", "mime-types@~2.1.24", "mime-types@~2.1.34": + "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + "version" "2.1.35" + dependencies: + "mime-db" "1.52.0" + +"mime@^1.4.1", "mime@1.6.0": + "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + "version" "1.6.0" + +"mimic-fn@^2.1.0": + "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + "version" "2.1.0" + +"mimic-response@^1.0.0": + "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + "version" "1.0.1" + +"mimic-response@^3.1.0": + "integrity" "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + "version" "3.1.0" + +"min-document@^2.19.0": + "integrity" "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==" + "resolved" "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" + "version" "2.19.0" + dependencies: + "dom-walk" "^0.1.0" + +"min-indent@^1.0.0": + "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + "version" "1.0.1" + +"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": + "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + "version" "1.0.1" + +"minimalistic-crypto-utils@^1.0.1": + "integrity" "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + "version" "1.0.1" + +"minimatch@^3.0.4", "minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@^3.1.2": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + +"minimatch@^5.0.1": + "integrity" "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "brace-expansion" "^2.0.1" + +"minimist@^1.2.0", "minimist@^1.2.6", "minimist@~1.2.5": + "integrity" "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" + "version" "1.2.7" + +"minipass@^2.6.0", "minipass@^2.9.0": + "integrity" "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" + "version" "2.9.0" + dependencies: + "safe-buffer" "^5.1.2" + "yallist" "^3.0.0" + +"minizlib@^1.3.3": + "integrity" "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==" + "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" + "version" "1.3.3" + dependencies: + "minipass" "^2.9.0" + +"mkdirp-promise@^5.0.1": + "integrity" "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==" + "resolved" "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "mkdirp" "*" -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== - dependencies: - mkdirp "*" +"mkdirp@*", "mkdirp@^1.0.4": + "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + "version" "1.0.4" -mkdirp@*, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mkdirp@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== +"mkdirp@^0.5.5": + "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + "version" "0.5.6" dependencies: - minimist "^1.2.6" + "minimist" "^1.2.6" -mock-fs@^4.1.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" - integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== +"mock-fs@^4.1.0": + "integrity" "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" + "resolved" "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz" + "version" "4.14.0" -motion@10.16.2: - version "10.16.2" - resolved "https://registry.yarnpkg.com/motion/-/motion-10.16.2.tgz#7dc173c6ad62210a7e9916caeeaf22c51e598d21" - integrity sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ== +"motion@10.16.2": + "integrity" "sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==" + "resolved" "https://registry.npmjs.org/motion/-/motion-10.16.2.tgz" + "version" "10.16.2" dependencies: "@motionone/animation" "^10.15.1" "@motionone/dom" "^10.16.2" @@ -10867,161 +10853,161 @@ motion@10.16.2: "@motionone/utils" "^10.15.1" "@motionone/vue" "^10.16.2" -mri@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - -mrmime@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" - integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== - -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.0.0, 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== - -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multicodec@^0.5.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== - dependencies: - varint "^5.0.0" - -multicodec@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== - dependencies: - buffer "^5.6.0" - varint "^5.0.0" - -multiformats@^9.4.2: - version "9.9.0" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" - integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== - -multihashes@^0.4.15, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== - dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" - -multipipe@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-1.0.2.tgz#cc13efd833c9cda99f224f868461b8e1a3fd939d" - integrity sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ== - dependencies: - duplexer2 "^0.1.2" - object-assign "^4.1.0" - -nan@2.14.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== - -nan@^2.13.2, nan@^2.14.0: - version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== - -nano-json-stream-parser@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" - integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== - -nanoid@^3.1.30, nanoid@^3.3.1, nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -nanoid@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.0.tgz#6e144dee117609232c3f415c34b0e550e64999a5" - integrity sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg== - -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - -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== - -needle@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-3.2.0.tgz#07d240ebcabfd65c76c03afae7f6defe6469df44" - integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.6.3" - sax "^1.2.4" - -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== - -next-pwa@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/next-pwa/-/next-pwa-5.6.0.tgz#f7b1960c4fdd7be4253eb9b41b612ac773392bf4" - integrity sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A== - dependencies: - babel-loader "^8.2.5" - clean-webpack-plugin "^4.0.0" - globby "^11.0.4" - terser-webpack-plugin "^5.3.3" - workbox-webpack-plugin "^6.5.4" - workbox-window "^6.5.4" - -next-tick@1, next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -next@12.2.0: - version "12.2.0" - resolved "https://registry.yarnpkg.com/next/-/next-12.2.0.tgz#aef47cd96b602bc1307d1dcf9a1ee3e753845544" - integrity sha512-B4j7D3SHYopLYx6/Ark0fenwIar9tEaZZFAaxmKjgcMMexhVJzB3jt7X+6wcdXPPMeUD6r09weUtnDpjox/vIA== +"mri@^1.1.0": + "integrity" "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + "resolved" "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" + "version" "1.2.0" + +"mrmime@^1.0.0": + "integrity" "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==" + "resolved" "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz" + "version" "1.0.1" + +"ms@^2.0.0", "ms@^2.1.1", "ms@2.1.3": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" + +"ms@2.0.0": + "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "version" "2.0.0" + +"ms@2.1.2": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" + +"multibase@^0.7.0": + "integrity" "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==" + "resolved" "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz" + "version" "0.7.0" + dependencies: + "base-x" "^3.0.8" + "buffer" "^5.5.0" + +"multibase@~0.6.0": + "integrity" "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==" + "resolved" "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz" + "version" "0.6.1" + dependencies: + "base-x" "^3.0.8" + "buffer" "^5.5.0" + +"multicodec@^0.5.5": + "integrity" "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==" + "resolved" "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz" + "version" "0.5.7" + dependencies: + "varint" "^5.0.0" + +"multicodec@^1.0.0": + "integrity" "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==" + "resolved" "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "buffer" "^5.6.0" + "varint" "^5.0.0" + +"multiformats@^9.4.2": + "integrity" "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" + "resolved" "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz" + "version" "9.9.0" + +"multihashes@^0.4.15", "multihashes@~0.4.15": + "integrity" "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==" + "resolved" "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz" + "version" "0.4.21" + dependencies: + "buffer" "^5.5.0" + "multibase" "^0.7.0" + "varint" "^5.0.0" + +"multipipe@^1.0.2": + "integrity" "sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==" + "resolved" "https://registry.npmjs.org/multipipe/-/multipipe-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "duplexer2" "^0.1.2" + "object-assign" "^4.1.0" + +"nan@^2.13.2", "nan@2.14.0": + "integrity" "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + "resolved" "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz" + "version" "2.14.0" + +"nan@^2.14.0": + "integrity" "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + "resolved" "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" + "version" "2.17.0" + +"nano-json-stream-parser@^0.1.2": + "integrity" "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==" + "resolved" "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz" + "version" "0.1.2" + +"nanoid@^3.1.30", "nanoid@^3.3.1", "nanoid@^3.3.6": + "integrity" "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + "version" "3.3.6" + +"nanoid@^4.0.0": + "integrity" "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz" + "version" "4.0.0" + +"natural-compare-lite@^1.4.0": + "integrity" "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + "resolved" "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" + "version" "1.4.0" + +"natural-compare@^1.4.0": + "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + "version" "1.4.0" + +"needle@^3.1.0": + "integrity" "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==" + "resolved" "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "debug" "^3.2.6" + "iconv-lite" "^0.6.3" + "sax" "^1.2.4" + +"negotiator@0.6.3": + "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + "version" "0.6.3" + +"next-pwa@^5.6.0": + "integrity" "sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==" + "resolved" "https://registry.npmjs.org/next-pwa/-/next-pwa-5.6.0.tgz" + "version" "5.6.0" + dependencies: + "babel-loader" "^8.2.5" + "clean-webpack-plugin" "^4.0.0" + "globby" "^11.0.4" + "terser-webpack-plugin" "^5.3.3" + "workbox-webpack-plugin" "^6.5.4" + "workbox-window" "^6.5.4" + +"next-tick@^1.1.0", "next-tick@1": + "integrity" "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + "version" "1.1.0" + +"next@>=9.0.0", "next@12.2.0": + "integrity" "sha512-B4j7D3SHYopLYx6/Ark0fenwIar9tEaZZFAaxmKjgcMMexhVJzB3jt7X+6wcdXPPMeUD6r09weUtnDpjox/vIA==" + "resolved" "https://registry.npmjs.org/next/-/next-12.2.0.tgz" + "version" "12.2.0" dependencies: "@next/env" "12.2.0" "@swc/helpers" "0.4.2" - caniuse-lite "^1.0.30001332" - postcss "8.4.5" - styled-jsx "5.0.2" - use-sync-external-store "1.1.0" + "caniuse-lite" "^1.0.30001332" + "postcss" "8.4.5" + "styled-jsx" "5.0.2" + "use-sync-external-store" "1.1.0" optionalDependencies: "@next/swc-android-arm-eabi" "12.2.0" "@next/swc-android-arm64" "12.2.0" @@ -11037,702 +11023,697 @@ next@12.2.0: "@next/swc-win32-ia32-msvc" "12.2.0" "@next/swc-win32-x64-msvc" "12.2.0" -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-addon-api@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-fetch@2, node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" - integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== - -node-gyp-build@^4.2.2: - version "4.6.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" - integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.6: - version "2.0.8" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae" - integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -number-to-bn@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" - integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== - dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" - -nwsapi@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" - integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -object-is@^1.0.1, object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -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-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== - -object.assign@^4.1.3, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.hasown@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" - integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.values@^1.1.5, object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -oboe@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" - integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== - dependencies: - http-https "^1.0.0" - -on-exit-leak-free@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" - integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== - -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, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - 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.3" - -os-shim@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" - integrity sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A== - -ospath@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" - integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== - -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== - -p-cancelable@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" - integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-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@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-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-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -papaparse@^5.3.1, papaparse@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.2.tgz#d1abed498a0ee299f103130a6109720404fbd467" - integrity sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-headers@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" - integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== +"node-addon-api@^2.0.0": + "integrity" "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" + "version" "2.0.2" + +"node-addon-api@^3.0.0": + "integrity" "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" + "version" "3.2.1" + +"node-fetch@^2.6.0", "node-fetch@^2.6.1", "node-fetch@^2.6.12", "node-fetch@^2.6.7": + "integrity" "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz" + "version" "2.6.12" + dependencies: + "whatwg-url" "^5.0.0" + +"node-gyp-build@^4.2.0", "node-gyp-build@^4.2.2", "node-gyp-build@^4.3.0": + "integrity" "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" + "resolved" "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz" + "version" "4.5.0" + +"node-int64@^0.4.0": + "integrity" "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + "version" "0.4.0" + +"node-releases@^2.0.6": + "integrity" "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" + "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz" + "version" "2.0.8" + +"normalize-path@^3.0.0", "normalize-path@~3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"normalize-url@^6.0.1": + "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + "version" "6.1.0" + +"npm-run-path@^4.0.0", "npm-run-path@^4.0.1": + "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "path-key" "^3.0.0" + +"nth-check@^2.0.1": + "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" + "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "boolbase" "^1.0.0" + +"number-to-bn@1.7.0": + "integrity" "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==" + "resolved" "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" + "version" "1.7.0" + dependencies: + "bn.js" "4.11.6" + "strip-hex-prefix" "1.0.0" + +"nwsapi@^2.2.0": + "integrity" "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" + "resolved" "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz" + "version" "2.2.2" + +"oauth-sign@~0.9.0": + "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + "version" "0.9.0" + +"object-assign@^4", "object-assign@^4.0.1", "object-assign@^4.1.0", "object-assign@^4.1.1": + "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + +"object-inspect@^1.12.3", "object-inspect@^1.9.0": + "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + "version" "1.12.3" + +"object-is@^1.0.1", "object-is@^1.1.5": + "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" + "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + +"object-keys@^1.1.1": + "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + "version" "1.1.1" + +"object-keys@~0.4.0": + "integrity" "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" + "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz" + "version" "0.4.0" + +"object.assign@^4.1.3", "object.assign@^4.1.4": + "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" + "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + "version" "4.1.4" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "has-symbols" "^1.0.3" + "object-keys" "^1.1.1" + +"object.entries@^1.1.6": + "integrity" "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==" + "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" + "version" "1.1.6" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"object.fromentries@^2.0.6": + "integrity" "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==" + "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"object.groupby@^1.0.0": + "integrity" "sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==" + "resolved" "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.21.2" + "get-intrinsic" "^1.2.1" + +"object.hasown@^1.1.2": + "integrity" "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==" + "resolved" "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"object.values@^1.1.6": + "integrity" "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==" + "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" + "version" "1.1.6" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"oboe@2.1.5": + "integrity" "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==" + "resolved" "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz" + "version" "2.1.5" + dependencies: + "http-https" "^1.0.0" + +"on-exit-leak-free@^0.2.0": + "integrity" "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==" + "resolved" "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz" + "version" "0.2.0" + +"on-finished@2.4.1": + "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" + "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + "version" "2.4.1" + dependencies: + "ee-first" "1.1.1" + +"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": + "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"onetime@^5.1.0", "onetime@^5.1.2": + "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "mimic-fn" "^2.1.0" + +"opener@^1.5.2": + "integrity" "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + "resolved" "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" + "version" "1.5.2" + +"optionator@^0.8.1": + "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + "version" "0.8.3" + dependencies: + "deep-is" "~0.1.3" + "fast-levenshtein" "~2.0.6" + "levn" "~0.3.0" + "prelude-ls" "~1.1.2" + "type-check" "~0.3.2" + "word-wrap" "~1.2.3" + +"optionator@^0.9.1": + "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + "version" "0.9.1" + 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.3" + +"os-shim@^0.1.2": + "integrity" "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==" + "resolved" "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz" + "version" "0.1.3" + +"ospath@^1.2.2": + "integrity" "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==" + "resolved" "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz" + "version" "1.2.2" + +"p-cancelable@^2.0.0": + "integrity" "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" + "version" "2.1.1" + +"p-cancelable@^3.0.0": + "integrity" "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" + "version" "3.0.0" + +"p-limit@^2.0.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^2.2.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^3.0.2", "p-limit@^3.1.0": + "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "yocto-queue" "^0.1.0" + +"p-locate@^3.0.0": + "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-limit" "^2.0.0" + +"p-locate@^4.1.0": + "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "p-limit" "^2.2.0" + +"p-locate@^5.0.0": + "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-limit" "^3.0.2" + +"p-map@^2.0.0": + "integrity" "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + "resolved" "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" + "version" "2.1.0" + +"p-map@^4.0.0": + "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" + "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "aggregate-error" "^3.0.0" + +"p-try@^2.0.0": + "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + "version" "2.2.0" + +"papaparse@^5.3.1", "papaparse@^5.3.2": + "integrity" "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==" + "resolved" "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz" + "version" "5.3.2" + +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "callsites" "^3.0.0" -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== +"parse-headers@^2.0.0": + "integrity" "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + "resolved" "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz" + "version" "2.0.5" + +"parse-json@^5.0.0", "parse-json@^5.2.0": + "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + "version" "5.2.0" dependencies: "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-node-version@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -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-browserify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-exists@^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-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-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== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.17, pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.0.0, pify@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -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== - -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - -pino-abstract-transport@v0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" - integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== - dependencies: - duplexify "^4.1.2" - split2 "^4.0.0" - -pino-std-serializers@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" - integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== - -pino@7.11.0: - version "7.11.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6" - integrity sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg== - dependencies: - atomic-sleep "^1.0.0" - fast-redact "^3.0.0" - on-exit-leak-free "^0.2.0" - pino-abstract-transport v0.5.0 - pino-std-serializers "^4.0.0" - process-warning "^1.0.0" - quick-format-unescaped "^4.0.3" - real-require "^0.1.0" - safe-stable-stringify "^2.1.0" - sonic-boom "^2.2.1" - thread-stream "^0.15.1" - -pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pngjs@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - -pngjs@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" - integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== - -pnglib@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/pnglib/-/pnglib-0.0.1.tgz#f9ab6f9c688f4a9d579ad8be28878a716e30c096" - integrity sha512-95ChzOoYLOPIyVmL+Y6X+abKGXUJlvOVLkB1QQkyXl7Uczc6FElUy/x01NS7r2GX6GRezloO/ecCX9h4U9KadA== - -postcss-load-config@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" - integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== - dependencies: - lilconfig "^2.0.5" - yaml "^1.10.2" - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.11" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" - integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@8.4.5: - version "8.4.5" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" - integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== - dependencies: - nanoid "^3.1.30" - picocolors "^1.0.0" - source-map-js "^1.0.1" - -postcss@^8.0.0, postcss@^8.4.21: - version "8.4.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" - integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -pre-commit@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/pre-commit/-/pre-commit-1.2.2.tgz#dbcee0ee9de7235e57f79c56d7ce94641a69eec6" - integrity sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA== - dependencies: - cross-spawn "^5.0.1" - spawn-sync "^1.0.15" - which "1.2.x" - -preact@10.4.1: - version "10.4.1" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.4.1.tgz#9b3ba020547673a231c6cf16f0fbaef0e8863431" - integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== - -preact@^10.5.9: - version "10.11.3" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.11.3.tgz#8a7e4ba19d3992c488b0785afcc0f8aa13c78d19" - integrity sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg== - -precond@0.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" - integrity sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ== - -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== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@2.8.7: - version "2.8.7" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" - integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== - -prettier@^2.3.1, prettier@^2.7.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" - integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== - -pretty-bytes@^5.3.0, pretty-bytes@^5.4.1, pretty-bytes@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-format@^27.0.2: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^28.0.0, pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + "error-ex" "^1.3.1" + "json-parse-even-better-errors" "^2.3.0" + "lines-and-columns" "^1.1.6" + +"parse-node-version@^1.0.1": + "integrity" "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + "resolved" "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" + "version" "1.0.1" + +"parse5@6.0.1": + "integrity" "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "resolved" "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" + "version" "6.0.1" + +"parseurl@~1.3.3": + "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + "version" "1.3.3" + +"path-browserify@^1.0.1": + "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + "version" "1.0.1" + +"path-exists@^3.0.0": + "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + "version" "3.0.0" + +"path-exists@^4.0.0": + "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + "version" "4.0.0" + +"path-is-absolute@^1.0.0": + "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"path-is-inside@^1.0.2": + "integrity" "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + "resolved" "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + "version" "1.0.2" + +"path-key@^3.0.0", "path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" + +"path-parse@^1.0.7": + "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + "version" "1.0.7" + +"path-to-regexp@0.1.7": + "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + "version" "0.1.7" + +"path-type@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" + +"pbkdf2@^3.0.17": + "integrity" "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==" + "resolved" "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "create-hash" "^1.1.2" + "create-hmac" "^1.1.4" + "ripemd160" "^2.0.1" + "safe-buffer" "^5.0.1" + "sha.js" "^2.4.8" + +"pend@~1.2.0": + "integrity" "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + "resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + "version" "1.2.0" + +"performance-now@^2.1.0": + "integrity" "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + "version" "2.1.0" + +"picocolors@^1.0.0": + "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + "version" "1.0.0" + +"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.2", "picomatch@^2.2.3", "picomatch@^2.3.1": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"pify@^2.0.0": + "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + "version" "2.3.0" + +"pify@^2.2.0": + "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + "version" "2.3.0" + +"pify@^3.0.0": + "integrity" "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + "version" "3.0.0" + +"pify@^4.0.1": + "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + "version" "4.0.1" + +"pify@^5.0.0": + "integrity" "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==" + "resolved" "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz" + "version" "5.0.0" + +"pinkie-promise@^2.0.0": + "integrity" "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==" + "resolved" "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "pinkie" "^2.0.0" + +"pinkie@^2.0.0": + "integrity" "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" + "resolved" "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + "version" "2.0.4" + +"pino-abstract-transport@v0.5.0": + "integrity" "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==" + "resolved" "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz" + "version" "0.5.0" + dependencies: + "duplexify" "^4.1.2" + "split2" "^4.0.0" + +"pino-std-serializers@^4.0.0": + "integrity" "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" + "resolved" "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz" + "version" "4.0.0" + +"pino@7.11.0": + "integrity" "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==" + "resolved" "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz" + "version" "7.11.0" + dependencies: + "atomic-sleep" "^1.0.0" + "fast-redact" "^3.0.0" + "on-exit-leak-free" "^0.2.0" + "pino-abstract-transport" "v0.5.0" + "pino-std-serializers" "^4.0.0" + "process-warning" "^1.0.0" + "quick-format-unescaped" "^4.0.3" + "real-require" "^0.1.0" + "safe-stable-stringify" "^2.1.0" + "sonic-boom" "^2.2.1" + "thread-stream" "^0.15.1" + +"pirates@^4.0.4": + "integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" + "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" + "version" "4.0.5" + +"pkg-dir@^4.1.0", "pkg-dir@^4.2.0": + "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "find-up" "^4.0.0" + +"pngjs@^3.3.0": + "integrity" "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + "resolved" "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz" + "version" "3.4.0" + +"pngjs@^5.0.0": + "integrity" "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" + "resolved" "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz" + "version" "5.0.0" + +"pnglib@0.0.1": + "integrity" "sha512-95ChzOoYLOPIyVmL+Y6X+abKGXUJlvOVLkB1QQkyXl7Uczc6FElUy/x01NS7r2GX6GRezloO/ecCX9h4U9KadA==" + "resolved" "https://registry.npmjs.org/pnglib/-/pnglib-0.0.1.tgz" + "version" "0.0.1" + +"postcss-load-config@^3.1.4": + "version" "3.1.4" + dependencies: + "lilconfig" "^2.0.5" + "yaml" "^1.10.2" + +"postcss-modules-extract-imports@^3.0.0": + "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" + "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" + "version" "3.0.0" + +"postcss-modules-local-by-default@^4.0.0": + "integrity" "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==" + "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "icss-utils" "^5.0.0" + "postcss-selector-parser" "^6.0.2" + "postcss-value-parser" "^4.1.0" + +"postcss-modules-scope@^3.0.0": + "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" + "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "postcss-selector-parser" "^6.0.4" + +"postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4": + "integrity" "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==" + "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" + "version" "6.0.13" + dependencies: + "cssesc" "^3.0.0" + "util-deprecate" "^1.0.2" + +"postcss-value-parser@^4.1.0": + "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + "version" "4.2.0" + +"postcss@^8.0.0", "postcss@^8.1.0", "postcss@^8.4.21", "postcss@>=8.0.9": + "integrity" "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==" + "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz" + "version" "8.4.27" + dependencies: + "nanoid" "^3.3.6" + "picocolors" "^1.0.0" + "source-map-js" "^1.0.2" + +"postcss@8.4.5": + "integrity" "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==" + "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz" + "version" "8.4.5" + dependencies: + "nanoid" "^3.1.30" + "picocolors" "^1.0.0" + "source-map-js" "^1.0.1" + +"pre-commit@^1.2.2": + "integrity" "sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA==" + "resolved" "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz" + "version" "1.2.2" + dependencies: + "cross-spawn" "^5.0.1" + "spawn-sync" "^1.0.15" + "which" "1.2.x" + +"preact@^10.5.9": + "integrity" "sha512-XTSj3dJ4roKIC93pald6rWuB2qQJO9gO2iLLyTe87MrjQN+HklueLsmskbywEWqCHlclgz3/M4YLL2iBr9UmMA==" + "resolved" "https://registry.npmjs.org/preact/-/preact-10.16.0.tgz" + "version" "10.16.0" + +"preact@10.4.1": + "integrity" "sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==" + "resolved" "https://registry.npmjs.org/preact/-/preact-10.4.1.tgz" + "version" "10.4.1" + +"precond@0.2": + "integrity" "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==" + "resolved" "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" + "version" "0.2.3" + +"prelude-ls@^1.2.1": + "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + "version" "1.2.1" + +"prelude-ls@~1.1.2": + "integrity" "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + "version" "1.1.2" + +"prettier-linter-helpers@^1.0.0": + "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" + "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "fast-diff" "^1.1.2" + +"prettier@^2.3.1", "prettier@^2.7.0", "prettier@>=2.0.0", "prettier@2.8.7": + "integrity" "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz" + "version" "2.8.7" + +"pretty-bytes@^5.3.0", "pretty-bytes@^5.4.1", "pretty-bytes@^5.6.0": + "integrity" "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" + "resolved" "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" + "version" "5.6.0" + +"pretty-format@^27.0.2": + "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "ansi-regex" "^5.0.1" + "ansi-styles" "^5.0.0" + "react-is" "^17.0.1" + +"pretty-format@^28.0.0", "pretty-format@^28.1.3": + "integrity" "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz" + "version" "28.1.3" dependencies: "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" + "ansi-regex" "^5.0.1" + "ansi-styles" "^5.0.0" + "react-is" "^18.0.0" -pretty-format@^29.0.0, pretty-format@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da" - integrity sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg== +"pretty-format@^29.0.0", "pretty-format@^29.3.1": + "integrity" "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz" + "version" "29.3.1" dependencies: "@jest/schemas" "^29.0.0" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process-warning@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" - integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -promise-to-callback@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" - integrity sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA== - dependencies: - is-fn "^1.0.0" - set-immediate-shim "^1.0.1" - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -protobufjs@6.11.3, protobufjs@^7.2.4: - version "7.2.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae" - integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ== + "ansi-styles" "^5.0.0" + "react-is" "^18.0.0" + +"process-nextick-args@~2.0.0": + "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + "version" "2.0.1" + +"process-warning@^1.0.0": + "integrity" "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + "resolved" "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz" + "version" "1.0.0" + +"process@^0.11.10": + "integrity" "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + "version" "0.11.10" + +"promise-to-callback@^1.0.0": + "integrity" "sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA==" + "resolved" "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "is-fn" "^1.0.0" + "set-immediate-shim" "^1.0.1" + +"prompts@^2.0.1": + "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" + "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "kleur" "^3.0.3" + "sisteransi" "^1.0.5" + +"prop-types@^15.6.0", "prop-types@^15.6.2", "prop-types@^15.7.2", "prop-types@^15.8.1": + "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" + "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + "version" "15.8.1" + dependencies: + "loose-envify" "^1.4.0" + "object-assign" "^4.1.1" + "react-is" "^16.13.1" + +"protobufjs@6.11.3": + "integrity" "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==" + "resolved" "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz" + "version" "6.11.3" dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -11744,2800 +11725,2922 @@ protobufjs@6.11.3, protobufjs@^7.2.4: "@protobufjs/path" "^1.1.2" "@protobufjs/pool" "^1.1.0" "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" "@types/node" ">=13.7.0" - long "^5.0.0" - -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-compare@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" - integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== - -proxy-from-env@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== - -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== - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - -psl@^1.1.28, psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pushdata-bitcoin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz#15931d3cd967ade52206f523aa7331aef7d43af7" - integrity sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ== - dependencies: - bitcoin-ops "^1.3.0" - -qr.js@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f" - integrity sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ== - -qrcode.react@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-1.0.1.tgz#2834bb50e5e275ffe5af6906eff15391fe9e38a5" - integrity sha512-8d3Tackk8IRLXTo67Y+c1rpaiXjoz/Dd2HpcMdW//62/x8J1Nbho14Kh8x974t9prsLHN6XqVgcnRiBGFptQmg== - dependencies: - loose-envify "^1.4.0" - prop-types "^15.6.0" - qr.js "0.0.0" - -qrcode.react@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8" - integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== - -qrcode@1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" - integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== - dependencies: - buffer "^5.4.3" - buffer-alloc "^1.2.0" - buffer-from "^1.1.1" - dijkstrajs "^1.0.1" - isarray "^2.0.1" - pngjs "^3.3.0" - yargs "^13.2.4" - -qrcode@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" - integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== - dependencies: - dijkstrajs "^1.0.1" - encode-utf8 "^1.0.3" - pngjs "^5.0.0" - yargs "^15.3.1" - -qs@6.11.0, qs@^6.10.3: - 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" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@6.13.5: - version "6.13.5" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" - integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== - dependencies: - decode-uri-component "^0.2.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -query-string@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" - integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== - dependencies: - decode-uri-component "^0.2.2" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -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== - -quick-format-unescaped@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" - integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -randombytes@2.1.0, randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -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.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-dom@16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" - integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - -react-dom@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react-dropzone@^14.2.3: - version "14.2.3" - resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-14.2.3.tgz#0acab68308fda2d54d1273a1e626264e13d4e84b" - integrity sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug== - dependencies: - attr-accept "^2.2.2" - file-selector "^0.6.0" - prop-types "^15.8.1" - -react-gtm-module@^2.0.11: - version "2.0.11" - resolved "https://registry.yarnpkg.com/react-gtm-module/-/react-gtm-module-2.0.11.tgz#14484dac8257acd93614e347c32da9c5ac524206" - integrity sha512-8gyj4TTxeP7eEyc2QKawEuQoAZdjKvMY4pgWfycGmqGByhs17fR+zEBs0JUDq4US/l+vbTl+6zvUIx27iDo/Vw== - -react-hook-form@7.41.1: - version "7.41.1" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.41.1.tgz#0e25e231550d477c5774b7f5a4ff800485281e6a" - integrity sha512-IHUozfwuqE+P201KIJwotMd+UCKqzIprseR8UUjz1jRupkZeubg0xyeMLIaT192zHv7vBBu9bibpNV5cIB4E9g== - -react-is@^16.13.1, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-is@^18.0.0, react-is@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-lifecycles-compat@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" - integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== - -react-modal@^3.12.1: - version "3.16.1" - resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.16.1.tgz#34018528fc206561b1a5467fc3beeaddafb39b2b" - integrity sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg== - dependencies: - exenv "^1.2.0" - prop-types "^15.7.2" - react-lifecycles-compat "^3.0.0" - warning "^4.0.3" - -react-papaparse@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/react-papaparse/-/react-papaparse-4.1.0.tgz#09e1cdae55a0f3e36650aaf7ff9bb5ee2aed164a" - integrity sha512-sGJqK+OE2rVVQPxQUCCDW2prLIglv9kTdizhNe2awXvKo0gLShmhpRN3BwA+ujw5M2gSJ/KGNEwtgII0OsLgkg== + "long" "^4.0.0" + +"proxy-addr@~2.0.7": + "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" + "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "forwarded" "0.2.0" + "ipaddr.js" "1.9.1" + +"proxy-compare@2.5.1": + "integrity" "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==" + "resolved" "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz" + "version" "2.5.1" + +"proxy-from-env@1.0.0": + "integrity" "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==" + "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz" + "version" "1.0.0" + +"prr@~1.0.1": + "integrity" "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + "resolved" "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + "version" "1.0.1" + +"pseudomap@^1.0.2": + "integrity" "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + "resolved" "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + "version" "1.0.2" + +"psl@^1.1.28", "psl@^1.1.33": + "integrity" "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + "resolved" "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" + "version" "1.9.0" + +"pump@^3.0.0": + "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" + "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "end-of-stream" "^1.1.0" + "once" "^1.3.1" + +"punycode@^2.1.0", "punycode@^2.1.1": + "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + "version" "2.1.1" + +"punycode@2.1.0": + "integrity" "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz" + "version" "2.1.0" + +"pushdata-bitcoin@^1.0.1": + "integrity" "sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ==" + "resolved" "https://registry.npmjs.org/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "bitcoin-ops" "^1.3.0" + +"qr.js@0.0.0": + "integrity" "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==" + "resolved" "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz" + "version" "0.0.0" + +"qrcode.react@^1.0.1": + "integrity" "sha512-8d3Tackk8IRLXTo67Y+c1rpaiXjoz/Dd2HpcMdW//62/x8J1Nbho14Kh8x974t9prsLHN6XqVgcnRiBGFptQmg==" + "resolved" "https://registry.npmjs.org/qrcode.react/-/qrcode.react-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "loose-envify" "^1.4.0" + "prop-types" "^15.6.0" + "qr.js" "0.0.0" + +"qrcode.react@^3.1.0": + "integrity" "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==" + "resolved" "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz" + "version" "3.1.0" + +"qrcode@1.4.4": + "integrity" "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==" + "resolved" "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz" + "version" "1.4.4" + dependencies: + "buffer" "^5.4.3" + "buffer-alloc" "^1.2.0" + "buffer-from" "^1.1.1" + "dijkstrajs" "^1.0.1" + "isarray" "^2.0.1" + "pngjs" "^3.3.0" + "yargs" "^13.2.4" + +"qrcode@1.5.3": + "integrity" "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==" + "resolved" "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz" + "version" "1.5.3" + dependencies: + "dijkstrajs" "^1.0.1" + "encode-utf8" "^1.0.3" + "pngjs" "^5.0.0" + "yargs" "^15.3.1" + +"qs@^6.10.3": + "integrity" "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz" + "version" "6.11.2" + dependencies: + "side-channel" "^1.0.4" + +"qs@~6.5.2": + "integrity" "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" + "version" "6.5.3" + +"qs@6.11.0": + "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + "version" "6.11.0" + dependencies: + "side-channel" "^1.0.4" + +"query-string@^5.0.1": + "integrity" "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==" + "resolved" "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "decode-uri-component" "^0.2.0" + "object-assign" "^4.1.0" + "strict-uri-encode" "^1.0.0" + +"query-string@6.13.5": + "integrity" "sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==" + "resolved" "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz" + "version" "6.13.5" + dependencies: + "decode-uri-component" "^0.2.0" + "split-on-first" "^1.0.0" + "strict-uri-encode" "^2.0.0" + +"query-string@7.1.3": + "integrity" "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==" + "resolved" "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz" + "version" "7.1.3" + dependencies: + "decode-uri-component" "^0.2.2" + "filter-obj" "^1.1.0" + "split-on-first" "^1.0.0" + "strict-uri-encode" "^2.0.0" + +"querystringify@^2.1.1": + "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + "version" "2.2.0" + +"queue-microtask@^1.2.2": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"quick-format-unescaped@^4.0.3": + "integrity" "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + "resolved" "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz" + "version" "4.0.4" + +"quick-lru@^5.1.1": + "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" + "version" "5.1.1" + +"randombytes@^2.1.0", "randombytes@2.1.0": + "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" + "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "safe-buffer" "^5.1.0" + +"range-parser@~1.2.1": + "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + "version" "1.2.1" + +"raw-body@2.5.1": + "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" + "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + "version" "2.5.1" + dependencies: + "bytes" "3.1.2" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "unpipe" "1.0.0" + +"raw-body@2.5.2": + "integrity" "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==" + "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" + "version" "2.5.2" + dependencies: + "bytes" "3.1.2" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "unpipe" "1.0.0" + +"react-dom@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react-dom@16.13.1": + "integrity" "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz" + "version" "16.13.1" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + "prop-types" "^15.6.2" + "scheduler" "^0.19.1" + +"react-dom@^16.8 || ^17.0 || ^18.0", "react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.2 || ^18.0.0", "react-dom@^17.0.2 || ^18.0.0-0", "react-dom@^18.0.0", "react-dom@>=16.6.0", "react-dom@~16", "react-dom@17.x.x || 18.x.x", "react-dom@18.2.0": + "integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + "scheduler" "^0.23.0" + +"react-dropzone@^14.2.3": + "integrity" "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==" + "resolved" "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz" + "version" "14.2.3" + dependencies: + "attr-accept" "^2.2.2" + "file-selector" "^0.6.0" + "prop-types" "^15.8.1" + +"react-gtm-module@^2.0.11": + "integrity" "sha512-8gyj4TTxeP7eEyc2QKawEuQoAZdjKvMY4pgWfycGmqGByhs17fR+zEBs0JUDq4US/l+vbTl+6zvUIx27iDo/Vw==" + "resolved" "https://registry.npmjs.org/react-gtm-module/-/react-gtm-module-2.0.11.tgz" + "version" "2.0.11" + +"react-hook-form@7.41.1": + "integrity" "sha512-IHUozfwuqE+P201KIJwotMd+UCKqzIprseR8UUjz1jRupkZeubg0xyeMLIaT192zHv7vBBu9bibpNV5cIB4E9g==" + "resolved" "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.41.1.tgz" + "version" "7.41.1" + +"react-is@^16.13.1": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + +"react-is@^16.7.0": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + +"react-is@^17.0.1": + "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + "version" "17.0.2" + +"react-is@^18.0.0", "react-is@^18.2.0": + "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + "version" "18.2.0" + +"react-lifecycles-compat@^3.0.0": + "integrity" "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + "resolved" "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" + "version" "3.0.4" + +"react-modal@^3.12.1": + "integrity" "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==" + "resolved" "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz" + "version" "3.16.1" + dependencies: + "exenv" "^1.2.0" + "prop-types" "^15.7.2" + "react-lifecycles-compat" "^3.0.0" + "warning" "^4.0.3" + +"react-papaparse@^4.0.2": + "integrity" "sha512-sGJqK+OE2rVVQPxQUCCDW2prLIglv9kTdizhNe2awXvKo0gLShmhpRN3BwA+ujw5M2gSJ/KGNEwtgII0OsLgkg==" + "resolved" "https://registry.npmjs.org/react-papaparse/-/react-papaparse-4.1.0.tgz" + "version" "4.1.0" dependencies: "@types/papaparse" "^5.3.1" - papaparse "^5.3.1" + "papaparse" "^5.3.1" -react-qr-reader@2.2.1, react-qr-reader@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-qr-reader/-/react-qr-reader-2.2.1.tgz#dc89046d1c1a1da837a683dd970de5926817d55b" - integrity sha512-EL5JEj53u2yAOgtpAKAVBzD/SiKWn0Bl7AZy6ZrSf1lub7xHwtaXe6XSx36Wbhl1VMGmvmrwYMRwO1aSCT2fwA== +"react-qr-reader@^2.2.1", "react-qr-reader@2.2.1": + "integrity" "sha512-EL5JEj53u2yAOgtpAKAVBzD/SiKWn0Bl7AZy6ZrSf1lub7xHwtaXe6XSx36Wbhl1VMGmvmrwYMRwO1aSCT2fwA==" + "resolved" "https://registry.npmjs.org/react-qr-reader/-/react-qr-reader-2.2.1.tgz" + "version" "2.2.1" dependencies: - jsqr "^1.2.0" - prop-types "^15.7.2" - webrtc-adapter "^7.2.1" + "jsqr" "^1.2.0" + "prop-types" "^15.7.2" + "webrtc-adapter" "^7.2.1" -react-redux@^8.0.5: - version "8.0.5" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.0.5.tgz#e5fb8331993a019b8aaf2e167a93d10af469c7bd" - integrity sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw== +"react-redux@^7.2.1 || ^8.0.2", "react-redux@^8.0.5": + "integrity" "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==" + "resolved" "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz" + "version" "8.0.5" dependencies: "@babel/runtime" "^7.12.1" "@types/hoist-non-react-statics" "^3.3.1" "@types/use-sync-external-store" "^0.0.3" - hoist-non-react-statics "^3.3.2" - react-is "^18.0.0" - use-sync-external-store "^1.0.0" + "hoist-non-react-statics" "^3.3.2" + "react-is" "^18.0.0" + "use-sync-external-store" "^1.0.0" -react-transition-group@^4.4.5: - version "4.4.5" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" - integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== +"react-transition-group@^4.4.5": + "integrity" "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==" + "resolved" "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" + "version" "4.4.5" dependencies: "@babel/runtime" "^7.5.5" - dom-helpers "^5.0.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - -react@16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -react@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -readable-stream@^1.0.33: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - 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.1.1: - 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" - -readable-stream@^3.5.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~1.0.15, readable-stream@~1.0.17, readable-stream@~1.0.27-1: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -real-require@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" - integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -redux-thunk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.2.tgz#b9d05d11994b99f7a91ea223e8b04cf0afa5ef3b" - integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== - -redux@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" - integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== + "dom-helpers" "^5.0.1" + "loose-envify" "^1.4.0" + "prop-types" "^15.6.2" + +"react@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react@^15.5.3 || ^16.0.0 || ^17.0.0", "react@^16.13.1", "react@16.13.1": + "integrity" "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==" + "resolved" "https://registry.npmjs.org/react/-/react-16.13.1.tgz" + "version" "16.13.1" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + "prop-types" "^15.6.2" + +"react@^16.8 || ^17.0 || ^18.0", "react@^16.8.0 || ^17 || ^18", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18.0.0", "react@^17.0.2 || ^18.0.0-0", "react@^18.0.0", "react@^18.2.0", "react@>= 16.8 || 18.0.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", "react@>=16.6.0", "react@>=16.8", "react@>=16.8.0", "react@~16", "react@15.x || 16.x || 17.x || 18.x", "react@17.x.x || 18.x.x", "react@18.2.0": + "integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==" + "resolved" "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + +"readable-stream@^1.0.33": + "integrity" "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" + "version" "1.1.14" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.1" + "isarray" "0.0.1" + "string_decoder" "~0.10.x" + +"readable-stream@^2.0.0", "readable-stream@^2.0.2", "readable-stream@^2.2.2", "readable-stream@^2.2.9", "readable-stream@~2.3.6": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + 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.1.1": + "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + "version" "3.6.2" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readable-stream@^3.5.0": + "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + "version" "3.6.2" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readable-stream@^3.6.0": + "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + "version" "3.6.2" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readable-stream@~1.0.15": + "integrity" "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + "version" "1.0.34" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.1" + "isarray" "0.0.1" + "string_decoder" "~0.10.x" + +"readable-stream@~1.0.17": + "integrity" "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + "version" "1.0.34" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.1" + "isarray" "0.0.1" + "string_decoder" "~0.10.x" + +"readable-stream@~1.0.27-1": + "integrity" "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + "version" "1.0.34" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.1" + "isarray" "0.0.1" + "string_decoder" "~0.10.x" + +"readdirp@~3.6.0": + "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "picomatch" "^2.2.1" + +"real-require@^0.1.0": + "integrity" "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==" + "resolved" "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz" + "version" "0.1.0" + +"redent@^3.0.0": + "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" + "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "indent-string" "^4.0.0" + "strip-indent" "^3.0.0" + +"reduce-flatten@^2.0.0": + "integrity" "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==" + "resolved" "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz" + "version" "2.0.0" + +"redux-thunk@^2.4.2": + "integrity" "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==" + "resolved" "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz" + "version" "2.4.2" + +"redux@^4", "redux@^4.2.1": + "integrity" "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==" + "resolved" "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz" + "version" "4.2.1" dependencies: "@babel/runtime" "^7.9.2" -regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== +"regenerate-unicode-properties@^10.1.0": + "integrity" "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==" + "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" + "version" "10.1.0" dependencies: - regenerate "^1.4.2" + "regenerate" "^1.4.2" + +"regenerate@^1.4.2": + "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + "version" "1.4.2" -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +"regenerator-runtime@^0.13.11": + "integrity" "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + "version" "0.13.11" -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +"regenerator-runtime@^0.14.0": + "integrity" "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" + "version" "0.14.0" -regenerator-transform@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" - integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== +"regenerator-transform@^0.15.1": + "integrity" "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==" + "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" + "version" "0.15.1" dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^5.2.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.2.tgz#3e4e5d12103b64748711c3aad69934d7718e75fc" - integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsgen "^0.7.1" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regjsgen@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" - integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -request-progress@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" - integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg== - dependencies: - throttleit "^1.0.0" - -request@^2.79.0, request@^2.85.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -reselect@^4.1.8: - version "4.1.8" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" - integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== - -reserved-words@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" - integrity sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw== - -resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -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-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve.exports@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - -resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.3: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" - integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== - dependencies: - lowercase-keys "^2.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== - -rifm@^0.12.1: - version "0.12.1" - resolved "https://registry.yarnpkg.com/rifm/-/rifm-0.12.1.tgz#8fa77f45b7f1cda2a0068787ac821f0593967ac4" - integrity sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg== - -rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -ripple-address-codec@^4.1.1, ripple-address-codec@^4.2.5: - version "4.2.5" - resolved "https://registry.yarnpkg.com/ripple-address-codec/-/ripple-address-codec-4.2.5.tgz#9d31b2066abd4cf1a135cd865b4e8e63269701e7" - integrity sha512-SZ96zZH+0REeyEcYVFl0vqcsGRXiFXS2RUgHupHhtVkOEk6men53vngVjJwBrSnY+oa6Cri15q1zSni3DEoxNw== - dependencies: - base-x "^3.0.9" - create-hash "^1.1.2" - -ripple-binary-codec@^1.1.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/ripple-binary-codec/-/ripple-binary-codec-1.4.3.tgz#4737044f2aa5da496c1d57619339f26df01cd494" - integrity sha512-P4ALjAJWBJpRApTQO+dJCrHE6mZxm7ypZot9OS0a3RCKOWTReNw0pDWfdhCGh1qXh71TeQnAk4CHdMLwR/76oQ== - dependencies: - assert "^2.0.0" - big-integer "^1.6.48" - buffer "5.6.0" - create-hash "^1.2.0" - decimal.js "^10.2.0" - ripple-address-codec "^4.2.5" - -ripple-keypairs@^1.0.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ripple-keypairs/-/ripple-keypairs-1.1.5.tgz#eabfc371f2ef293fdc462664e18cbba32c4f5c7e" - integrity sha512-wLJXIBsMVazn2Yp/7oP4PvgA4Gd1HtuZLftdEJFNOLgraf82phqa2AnNK3t9f3XeQnApW1jAe/FcFFOY6QUn5w== - dependencies: - bn.js "^5.1.1" - brorand "^1.0.5" - elliptic "^6.5.4" - hash.js "^1.0.3" - ripple-address-codec "^4.2.5" - -ripple-lib-transactionparser@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/ripple-lib-transactionparser/-/ripple-lib-transactionparser-0.8.2.tgz#7aaad3ba1e1aeee1d5bcff32334a7a838f834dce" - integrity sha512-1teosQLjYHLyOQrKUQfYyMjDR3MAq/Ga+MJuLUfpBMypl4LZB4bEoMcmG99/+WVTEiZOezJmH9iCSvm/MyxD+g== - dependencies: - bignumber.js "^9.0.0" - lodash "^4.17.15" - -ripple-lib@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/ripple-lib/-/ripple-lib-1.10.1.tgz#9c353702792b25465cdb269265d6f5bb27b1471b" - integrity sha512-OQk+Syl2JfxKxV2KuF/kBMtnh012I5tNnziP3G4WDGCGSIAgeqkOgkR59IQ0YDNrs1YW8GbApxrdMSRi/QClcA== +"regexp.prototype.flags@^1.4.3", "regexp.prototype.flags@^1.5.0": + "integrity" "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==" + "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "functions-have-names" "^1.2.3" + +"regexpp@^3.2.0": + "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + "version" "3.2.0" + +"regexpu-core@^5.2.1": + "integrity" "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==" + "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz" + "version" "5.2.2" + dependencies: + "regenerate" "^1.4.2" + "regenerate-unicode-properties" "^10.1.0" + "regjsgen" "^0.7.1" + "regjsparser" "^0.9.1" + "unicode-match-property-ecmascript" "^2.0.0" + "unicode-match-property-value-ecmascript" "^2.1.0" + +"regjsgen@^0.7.1": + "integrity" "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" + "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" + "version" "0.7.1" + +"regjsparser@^0.9.1": + "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" + "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + "version" "0.9.1" + dependencies: + "jsesc" "~0.5.0" + +"request-progress@^3.0.0": + "integrity" "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==" + "resolved" "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "throttleit" "^1.0.0" + +"request@^2.79.0", "request@^2.85.0": + "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" + "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + "version" "2.88.2" + dependencies: + "aws-sign2" "~0.7.0" + "aws4" "^1.8.0" + "caseless" "~0.12.0" + "combined-stream" "~1.0.6" + "extend" "~3.0.2" + "forever-agent" "~0.6.1" + "form-data" "~2.3.2" + "har-validator" "~5.1.3" + "http-signature" "~1.2.0" + "is-typedarray" "~1.0.0" + "isstream" "~0.1.2" + "json-stringify-safe" "~5.0.1" + "mime-types" "~2.1.19" + "oauth-sign" "~0.9.0" + "performance-now" "^2.1.0" + "qs" "~6.5.2" + "safe-buffer" "^5.1.2" + "tough-cookie" "~2.5.0" + "tunnel-agent" "^0.6.0" + "uuid" "^3.3.2" + +"require-directory@^2.1.1": + "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + "version" "2.1.1" + +"require-from-string@^2.0.2": + "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + "version" "2.0.2" + +"require-main-filename@^2.0.0": + "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + "version" "2.0.0" + +"requires-port@^1.0.0": + "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "version" "1.0.0" + +"reselect@^4.1.8": + "integrity" "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + "resolved" "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz" + "version" "4.1.8" + +"reserved-words@^0.1.2": + "integrity" "sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==" + "resolved" "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz" + "version" "0.1.2" + +"resolve-alpn@^1.0.0", "resolve-alpn@^1.2.0": + "integrity" "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + "resolved" "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" + "version" "1.2.1" + +"resolve-cwd@^3.0.0": + "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" + "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "resolve-from" "^5.0.0" + +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" + +"resolve-from@^5.0.0": + "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + "version" "5.0.0" + +"resolve-pkg-maps@^1.0.0": + "integrity" "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" + "resolved" "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" + "version" "1.0.0" + +"resolve.exports@^1.1.0": + "integrity" "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==" + "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" + "version" "1.1.0" + +"resolve@^1.14.2", "resolve@^1.19.0", "resolve@^1.20.0", "resolve@^1.22.3", "resolve@^1.22.4": + "integrity" "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz" + "version" "1.22.4" + dependencies: + "is-core-module" "^2.13.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"resolve@^2.0.0-next.3": + "integrity" "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" + "version" "2.0.0-next.4" + dependencies: + "is-core-module" "^2.9.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"responselike@^2.0.0": + "integrity" "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==" + "resolved" "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "lowercase-keys" "^2.0.0" + +"restore-cursor@^3.1.0": + "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" + +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" + +"rfdc@^1.3.0": + "integrity" "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" + "version" "1.3.0" + +"rifm@^0.12.1": + "integrity" "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==" + "resolved" "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz" + "version" "0.12.1" + +"rimraf@^2.6.3": + "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + "version" "2.7.1" + dependencies: + "glob" "^7.1.3" + +"rimraf@^3.0.0", "rimraf@^3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"ripemd160@^2.0.0", "ripemd160@^2.0.1": + "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==" + "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "hash-base" "^3.0.0" + "inherits" "^2.0.1" + +"ripple-address-codec@^4.1.1", "ripple-address-codec@^4.3.0": + "integrity" "sha512-Tvd81i7hpDmNqHvkj6iYlj8Tv3I1Romw5gfjni9eacewJvGV2xe+p2y0FAw39z72qfciRMhQyHvpnviBcWVBNw==" + "resolved" "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "base-x" "^3.0.9" + "create-hash" "^1.1.2" + +"ripple-binary-codec@^1.1.3": + "integrity" "sha512-rtnLT6x1wKCRVWc/SL7jKD6lM5Nzf51HyM8A3AluBGTR8ubzAoAL3wzexCILKXbPhiBorrHRjLgB8L6IB2jhjw==" + "resolved" "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.8.0.tgz" + "version" "1.8.0" + dependencies: + "assert" "^2.0.0" + "big-integer" "^1.6.48" + "buffer" "6.0.3" + "create-hash" "^1.2.0" + "decimal.js" "^10.2.0" + "ripple-address-codec" "^4.3.0" + +"ripple-keypairs@^1.0.3": + "integrity" "sha512-LzM3Up9Pwz3dYqnczzNptimN3AxtjeGbDGeiOzREzbkslKiZcJ615b/ghBN4H23SC6W1GAL95juEzzimDi4THw==" + "resolved" "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "bn.js" "^5.1.1" + "brorand" "^1.0.5" + "elliptic" "^6.5.4" + "hash.js" "^1.0.3" + "ripple-address-codec" "^4.3.0" + +"ripple-lib-transactionparser@0.8.2": + "integrity" "sha512-1teosQLjYHLyOQrKUQfYyMjDR3MAq/Ga+MJuLUfpBMypl4LZB4bEoMcmG99/+WVTEiZOezJmH9iCSvm/MyxD+g==" + "resolved" "https://registry.npmjs.org/ripple-lib-transactionparser/-/ripple-lib-transactionparser-0.8.2.tgz" + "version" "0.8.2" + dependencies: + "bignumber.js" "^9.0.0" + "lodash" "^4.17.15" + +"ripple-lib@^1.10.1": + "integrity" "sha512-OQk+Syl2JfxKxV2KuF/kBMtnh012I5tNnziP3G4WDGCGSIAgeqkOgkR59IQ0YDNrs1YW8GbApxrdMSRi/QClcA==" + "resolved" "https://registry.npmjs.org/ripple-lib/-/ripple-lib-1.10.1.tgz" + "version" "1.10.1" dependencies: "@types/lodash" "^4.14.136" "@types/ws" "^7.2.0" - bignumber.js "^9.0.0" - https-proxy-agent "^5.0.0" - jsonschema "1.2.2" - lodash "^4.17.4" - ripple-address-codec "^4.1.1" - ripple-binary-codec "^1.1.3" - ripple-keypairs "^1.0.3" - ripple-lib-transactionparser "0.8.2" - ws "^7.2.0" - -rlp@^2.0.0, rlp@^2.2.3, rlp@^2.2.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" - integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== - dependencies: - bn.js "^5.2.0" - -rollup-plugin-terser@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + "bignumber.js" "^9.0.0" + "https-proxy-agent" "^5.0.0" + "jsonschema" "1.2.2" + "lodash" "^4.17.4" + "ripple-address-codec" "^4.1.1" + "ripple-binary-codec" "^1.1.3" + "ripple-keypairs" "^1.0.3" + "ripple-lib-transactionparser" "0.8.2" + "ws" "^7.2.0" + +"rlp@^2.0.0", "rlp@^2.2.3", "rlp@^2.2.4": + "integrity" "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==" + "resolved" "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" + "version" "2.2.7" + dependencies: + "bn.js" "^5.2.0" + +"rollup-plugin-terser@^7.0.0": + "integrity" "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==" + "resolved" "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" + "version" "7.0.2" dependencies: "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup@^2.43.1: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + "jest-worker" "^26.2.1" + "serialize-javascript" "^4.0.0" + "terser" "^5.0.0" + +"rollup@^1.20.0 || ^2.0.0", "rollup@^1.20.0||^2.0.0", "rollup@^2.0.0", "rollup@^2.43.1": + "integrity" "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==" + "resolved" "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" + "version" "2.79.1" optionalDependencies: - fsevents "~2.3.2" + "fsevents" "~2.3.2" -rpc-websockets@^7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.0.tgz#bbeb87572e66703ff151e50af1658f98098e2748" - integrity sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ== +"rpc-websockets@^7.5.1": + "integrity" "sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==" + "resolved" "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.1.tgz" + "version" "7.5.1" dependencies: "@babel/runtime" "^7.17.2" - eventemitter3 "^4.0.7" - uuid "^8.3.2" - ws "^8.5.0" + "eventemitter3" "^4.0.7" + "uuid" "^8.3.2" + "ws" "^8.5.0" optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" + "bufferutil" "^4.0.1" + "utf-8-validate" "^5.0.2" -rtcpeerconnection-shim@^1.2.15: - version "1.2.15" - resolved "https://registry.yarnpkg.com/rtcpeerconnection-shim/-/rtcpeerconnection-shim-1.2.15.tgz#e7cc189a81b435324c4949aa3dfb51888684b243" - integrity sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw== - dependencies: - sdp "^2.6.0" +"rtcpeerconnection-shim@^1.2.15": + "integrity" "sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw==" + "resolved" "https://registry.npmjs.org/rtcpeerconnection-shim/-/rtcpeerconnection-shim-1.2.15.tgz" + "version" "1.2.15" + dependencies: + "sdp" "^2.6.0" -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== +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" dependencies: - queue-microtask "^1.2.2" + "queue-microtask" "^1.2.2" -rustbn.js@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" - integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== +"rustbn.js@~0.2.0": + "integrity" "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" + "resolved" "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz" + "version" "0.2.0" -rxjs@6, rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +"rxjs@^6.6.3", "rxjs@6": + "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" + "version" "6.6.7" dependencies: - tslib "^1.9.0" + "tslib" "^1.9.0" -rxjs@^7.5.1, rxjs@^7.5.2: - version "7.8.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" - integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== +"rxjs@^7.5.1": + "integrity" "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz" + "version" "7.8.0" dependencies: - tslib "^2.1.0" + "tslib" "^2.1.0" + +"rxjs@^7.5.2": + "integrity" "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz" + "version" "7.8.0" + dependencies: + "tslib" "^2.1.0" -rxjs@^7.5.5: - version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== +"rxjs@^7.5.5": + "integrity" "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz" + "version" "7.8.0" + dependencies: + "tslib" "^2.1.0" + +"sade@^1.8.1": + "integrity" "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==" + "resolved" "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz" + "version" "1.8.1" dependencies: - tslib "^2.1.0" + "mri" "^1.1.0" -sade@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" - integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== +"safe-array-concat@^1.0.0": + "integrity" "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==" + "resolved" "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz" + "version" "1.0.0" dependencies: - mri "^1.1.0" + "call-bind" "^1.0.2" + "get-intrinsic" "^1.2.0" + "has-symbols" "^1.0.3" + "isarray" "^2.0.5" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@^5.2.0", "safe-buffer@^5.2.1", "safe-buffer@~5.2.0", "safe-buffer@5.2.1": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" -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-buffer@~5.1.0", "safe-buffer@~5.1.1": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" -safe-event-emitter@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" - integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== +"safe-event-emitter@^1.0.1": + "integrity" "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==" + "resolved" "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz" + "version" "1.0.1" dependencies: - events "^3.0.0" + "events" "^3.0.0" -safe-json-utils@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1" - integrity sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ== +"safe-json-utils@^1.1.1": + "integrity" "sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==" + "resolved" "https://registry.npmjs.org/safe-json-utils/-/safe-json-utils-1.1.1.tgz" + "version" "1.1.1" -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== +"safe-regex-test@^1.0.0": + "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" + "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + "version" "1.0.0" dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.3" + "is-regex" "^1.1.4" -safe-stable-stringify@^2.1.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== +"safe-stable-stringify@^2.1.0": + "integrity" "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" + "resolved" "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz" + "version" "2.4.3" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", "safer-buffer@~2.1.0": + "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + "version" "2.1.2" -sass@^1.58.3: - version "1.58.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.58.3.tgz#2348cc052061ba4f00243a208b09c40e031f270d" - integrity sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A== +"sass@^1.3.0", "sass@^1.58.3": + "integrity" "sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==" + "resolved" "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz" + "version" "1.64.2" dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + "chokidar" ">=3.0.0 <4.0.0" + "immutable" "^4.0.0" + "source-map-js" ">=0.6.2 <2.0.0" -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" +"sax@^1.2.4", "sax@~1.2.4": + "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + "version" "1.2.4" -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== +"saxes@^5.0.1": + "integrity" "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==" + "resolved" "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" + "version" "5.0.1" dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" + "xmlchars" "^2.2.0" -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== +"scheduler@^0.19.1": + "integrity" "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz" + "version" "0.19.1" dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"scheduler@^0.23.0": + "integrity" "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" + "version" "0.23.0" + dependencies: + "loose-envify" "^1.1.0" + +"schema-utils@^2.6.5": + "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + "version" "2.7.1" dependencies: "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" + "ajv" "^6.12.4" + "ajv-keywords" "^3.5.2" -schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== +"schema-utils@^3.1.1": + "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + "version" "3.1.1" dependencies: "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -sdp@^2.12.0, sdp@^2.6.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/sdp/-/sdp-2.12.0.tgz#338a106af7560c86e4523f858349680350d53b22" - integrity sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw== - -secp256k1@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.7.1.tgz#12e473e0e9a7c2f2d4d4818e722ad0e14cc1e2f1" - integrity sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g== - dependencies: - bindings "^1.5.0" - bip66 "^1.1.5" - bn.js "^4.11.8" - create-hash "^1.2.0" - drbg.js "^1.0.1" - elliptic "^6.4.1" - nan "^2.14.0" - safe-buffer "^5.1.2" - -secp256k1@4.0.3, secp256k1@^4.0.0, secp256k1@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" - integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semaphore@>=1.0.1, semaphore@^1.0.3: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" - integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== - -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2: - version "7.5.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.2.tgz#5b851e66d1be07c1cdaf37dfc856f543325a2beb" - integrity sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ== - dependencies: - lru-cache "^6.0.0" - -semver@~5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== - -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" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -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" - -servify@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" - integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== - dependencies: - body-parser "^1.16.0" - cors "^2.8.1" - express "^4.14.0" - request "^2.79.0" - xhr "^2.3.3" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -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@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -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: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^2.7.0: - version "2.8.2" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" - integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== - dependencies: - decompress-response "^3.3.0" - once "^1.3.1" - simple-concat "^1.0.0" - -sirv@^1.0.7: - version "1.0.19" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" - integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" + +"scrypt-js@^3.0.0", "scrypt-js@^3.0.1", "scrypt-js@3.0.1": + "integrity" "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + "resolved" "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" + "version" "3.0.1" + +"sdp@^2.12.0", "sdp@^2.6.0": + "integrity" "sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==" + "resolved" "https://registry.npmjs.org/sdp/-/sdp-2.12.0.tgz" + "version" "2.12.0" + +"secp256k1@^4.0.0", "secp256k1@^4.0.1", "secp256k1@4.0.3": + "integrity" "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==" + "resolved" "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "elliptic" "^6.5.4" + "node-addon-api" "^2.0.0" + "node-gyp-build" "^4.2.0" + +"secp256k1@3.7.1": + "integrity" "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==" + "resolved" "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz" + "version" "3.7.1" + dependencies: + "bindings" "^1.5.0" + "bip66" "^1.1.5" + "bn.js" "^4.11.8" + "create-hash" "^1.2.0" + "drbg.js" "^1.0.1" + "elliptic" "^6.4.1" + "nan" "^2.14.0" + "safe-buffer" "^5.1.2" + +"semaphore@^1.0.3", "semaphore@>=1.0.1": + "integrity" "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==" + "resolved" "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz" + "version" "1.1.0" + +"semver@^5.6.0": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"semver@^6.0.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.1.1": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.1.2": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.3.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.3.1": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^7.3.2", "semver@^7.3.5", "semver@^7.3.7", "semver@^7.3.8", "semver@^7.5.2": + "integrity" "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + "version" "7.5.4" + dependencies: + "lru-cache" "^6.0.0" + +"semver@~5.4.1": + "integrity" "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz" + "version" "5.4.1" + +"send@0.18.0": + "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" + "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + "version" "0.18.0" + 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" + +"serialize-javascript@^4.0.0": + "integrity" "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==" + "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "randombytes" "^2.1.0" + +"serialize-javascript@^6.0.0": + "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==" + "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "randombytes" "^2.1.0" + +"serve-static@1.15.0": + "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" + "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "parseurl" "~1.3.3" + "send" "0.18.0" + +"servify@^0.1.12": + "integrity" "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==" + "resolved" "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz" + "version" "0.1.12" + dependencies: + "body-parser" "^1.16.0" + "cors" "^2.8.1" + "express" "^4.14.0" + "request" "^2.79.0" + "xhr" "^2.3.3" + +"set-blocking@^2.0.0": + "integrity" "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "version" "2.0.0" + +"set-immediate-shim@^1.0.1": + "integrity" "sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==" + "resolved" "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" + "version" "1.0.1" + +"setimmediate@^1.0.5": + "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + "version" "1.0.5" + +"setprototypeof@1.2.0": + "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + "version" "1.2.0" + +"sha.js@^2.4.0", "sha.js@^2.4.11", "sha.js@^2.4.8": + "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" + "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + "version" "2.4.11" + dependencies: + "inherits" "^2.0.1" + "safe-buffer" "^5.0.1" + +"shebang-command@^1.2.0": + "integrity" "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "shebang-regex" "^1.0.0" + +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "shebang-regex" "^3.0.0" + +"shebang-regex@^1.0.0": + "integrity" "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + "version" "1.0.0" + +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" + +"side-channel@^1.0.4": + "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" + "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.0" + "get-intrinsic" "^1.0.2" + "object-inspect" "^1.9.0" + +"signal-exit@^3.0.2", "signal-exit@^3.0.3", "signal-exit@^3.0.7": + "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + "version" "3.0.7" + +"simple-concat@^1.0.0": + "integrity" "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + "resolved" "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + "version" "1.0.1" + +"simple-get@^2.7.0": + "integrity" "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==" + "resolved" "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz" + "version" "2.8.2" + dependencies: + "decompress-response" "^3.3.0" + "once" "^1.3.1" + "simple-concat" "^1.0.0" + +"sirv@^1.0.7": + "integrity" "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==" + "resolved" "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz" + "version" "1.0.19" dependencies: "@polka/url" "^1.0.0-next.20" - mrmime "^1.0.0" - totalist "^1.0.0" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -socks-proxy-agent@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" - integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== - dependencies: - agent-base "^6.0.2" - debug "^4.3.1" - socks "^2.6.1" - -socks@^2.6.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== - dependencies: - ip "^2.0.0" - smart-buffer "^4.2.0" - -sonic-boom@^2.2.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" - integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg== - dependencies: - atomic-sleep "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -source-map@^0.8.0-beta.0: - version "0.8.0-beta.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" - integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== - dependencies: - whatwg-url "^7.0.0" - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spawn-sync@^1.0.15: - version "1.0.15" - resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" - integrity sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw== - dependencies: - concat-stream "^1.4.7" - os-shim "^0.1.2" - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -split2@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" - integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sshpk@^1.14.1, sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -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== - -stream-browserify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" - integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== - dependencies: - inherits "~2.0.4" - readable-stream "^3.5.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" - integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.3" - side-channel "^1.0.4" - -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -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@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.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-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" - integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" - integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== - dependencies: - is-hex-prefixed "1.0.0" - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -sturdy-websocket@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz#84bb779f948b585a695f76961dc7d1c4a5e87629" - integrity sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew== - dependencies: - lodash.defaults "^4.2.0" - -styled-jsx@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.2.tgz#ff230fd593b737e9e68b630a694d460425478729" - integrity sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ== - -stylis@4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" - integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== - -stylis@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" - integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== - -stylus@^0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.59.0.tgz#a344d5932787142a141946536d6e24e6a6be7aa6" - integrity sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg== + "mrmime" "^1.0.0" + "totalist" "^1.0.0" + +"sisteransi@^1.0.5": + "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + "version" "1.0.5" + +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" + +"slice-ansi@^3.0.0": + "integrity" "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "astral-regex" "^2.0.0" + "is-fullwidth-code-point" "^3.0.0" + +"slice-ansi@^4.0.0": + "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "astral-regex" "^2.0.0" + "is-fullwidth-code-point" "^3.0.0" + +"smart-buffer@^4.2.0": + "integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + "resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" + "version" "4.2.0" + +"socks-proxy-agent@6.1.1": + "integrity" "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==" + "resolved" "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz" + "version" "6.1.1" + dependencies: + "agent-base" "^6.0.2" + "debug" "^4.3.1" + "socks" "^2.6.1" + +"socks@^2.6.1": + "integrity" "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==" + "resolved" "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" + "version" "2.7.1" + dependencies: + "ip" "^2.0.0" + "smart-buffer" "^4.2.0" + +"sonic-boom@^2.2.1": + "integrity" "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==" + "resolved" "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "atomic-sleep" "^1.0.0" + +"source-list-map@^2.0.0": + "integrity" "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + "resolved" "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" + "version" "2.0.1" + +"source-map-js@^1.0.1", "source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0": + "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + "version" "1.0.2" + +"source-map-support@~0.5.20": + "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + "version" "0.5.21" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map-support@0.5.13": + "integrity" "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + "version" "0.5.13" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map@^0.5.7": + "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + "version" "0.5.7" + +"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0", "source-map@~0.6.1": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@^0.7.3": + "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + "version" "0.7.4" + +"source-map@^0.8.0-beta.0": + "integrity" "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" + "version" "0.8.0-beta.0" + dependencies: + "whatwg-url" "^7.0.0" + +"sourcemap-codec@^1.4.8": + "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + "version" "1.4.8" + +"spawn-sync@^1.0.15": + "integrity" "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==" + "resolved" "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz" + "version" "1.0.15" + dependencies: + "concat-stream" "^1.4.7" + "os-shim" "^0.1.2" + +"split-on-first@^1.0.0": + "integrity" "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + "resolved" "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" + "version" "1.1.0" + +"split2@^4.0.0": + "integrity" "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" + "resolved" "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" + "version" "4.2.0" + +"sprintf-js@~1.0.2": + "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + "version" "1.0.3" + +"sshpk@^1.14.1", "sshpk@^1.7.0": + "integrity" "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==" + "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" + "version" "1.17.0" + dependencies: + "asn1" "~0.2.3" + "assert-plus" "^1.0.0" + "bcrypt-pbkdf" "^1.0.0" + "dashdash" "^1.12.0" + "ecc-jsbn" "~0.1.1" + "getpass" "^0.1.1" + "jsbn" "~0.1.0" + "safer-buffer" "^2.0.2" + "tweetnacl" "~0.14.0" + +"stable@^0.1.8": + "integrity" "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + "resolved" "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + "version" "0.1.8" + +"stack-utils@^2.0.3": + "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" + "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "escape-string-regexp" "^2.0.0" + +"statuses@2.0.1": + "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + "version" "2.0.1" + +"stream-browserify@^3.0.0": + "integrity" "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==" + "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "inherits" "~2.0.4" + "readable-stream" "^3.5.0" + +"stream-shift@^1.0.0": + "integrity" "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "resolved" "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" + "version" "1.0.1" + +"strict-uri-encode@^1.0.0": + "integrity" "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" + "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" + "version" "1.1.0" + +"strict-uri-encode@^2.0.0": + "integrity" "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" + "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" + "version" "2.0.0" + +"string_decoder@^1.1.1": + "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "safe-buffer" "~5.2.0" + +"string_decoder@~0.10.x": + "integrity" "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "version" "0.10.31" + +"string_decoder@~1.1.1": + "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "safe-buffer" "~5.1.0" + +"string-format@^2.0.0": + "integrity" "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==" + "resolved" "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz" + "version" "2.0.0" + +"string-length@^4.0.1": + "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" + "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "char-regex" "^1.0.2" + "strip-ansi" "^6.0.0" + +"string-width@^3.0.0", "string-width@^3.1.0": + "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "emoji-regex" "^7.0.1" + "is-fullwidth-code-point" "^2.0.0" + "strip-ansi" "^5.1.0" + +"string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string.prototype.matchall@^4.0.6", "string.prototype.matchall@^4.0.8": + "integrity" "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==" + "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz" + "version" "4.0.8" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + "get-intrinsic" "^1.1.3" + "has-symbols" "^1.0.3" + "internal-slot" "^1.0.3" + "regexp.prototype.flags" "^1.4.3" + "side-channel" "^1.0.4" + +"string.prototype.trim@^1.2.7": + "integrity" "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==" + "resolved" "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" + "version" "1.2.7" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"string.prototype.trimend@^1.0.6": + "integrity" "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==" + "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"string.prototype.trimstart@^1.0.6": + "integrity" "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==" + "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"stringify-object@^3.3.0": + "integrity" "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==" + "resolved" "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "get-own-enumerable-property-symbols" "^3.0.0" + "is-obj" "^1.0.1" + "is-regexp" "^1.0.0" + +"strip-ansi@^5.0.0", "strip-ansi@^5.1.0", "strip-ansi@^5.2.0": + "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "ansi-regex" "^4.1.0" + +"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "ansi-regex" "^5.0.1" + +"strip-bom@^3.0.0": + "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + "version" "3.0.0" + +"strip-bom@^4.0.0": + "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + "version" "4.0.0" + +"strip-comments@^2.0.1": + "integrity" "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==" + "resolved" "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz" + "version" "2.0.1" + +"strip-final-newline@^2.0.0": + "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + "version" "2.0.0" + +"strip-hex-prefix@1.0.0": + "integrity" "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==" + "resolved" "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "is-hex-prefixed" "1.0.0" + +"strip-indent@^3.0.0": + "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" + "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "min-indent" "^1.0.0" + +"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" + +"sturdy-websocket@^0.1.12": + "integrity" "sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew==" + "resolved" "https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz" + "version" "0.1.12" + dependencies: + "lodash.defaults" "^4.2.0" + +"styled-jsx@5.0.2": + "integrity" "sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==" + "resolved" "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.2.tgz" + "version" "5.0.2" + +"stylis@4.1.3": + "integrity" "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" + "resolved" "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz" + "version" "4.1.3" + +"stylis@4.2.0": + "integrity" "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + "resolved" "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz" + "version" "4.2.0" + +"stylus@^0.59.0": + "integrity" "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==" + "resolved" "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz" + "version" "0.59.0" dependencies: "@adobe/css-tools" "^4.0.1" - debug "^4.3.2" - glob "^7.1.6" - sax "~1.2.4" - source-map "^0.7.3" - -superstruct@^0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b" - integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0, supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" - integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.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== - -svelte-i18n@^3.3.13: - version "3.6.0" - resolved "https://registry.yarnpkg.com/svelte-i18n/-/svelte-i18n-3.6.0.tgz#0f345d066662dd8f46efefc0e867fb05b71c9dbd" - integrity sha512-qvvcMqHVCXJ5pHoQR5uGzWAW5vS3qB9mBq+W6veLZ6jkrzZGOziR+wyOUJsc59BupMh+Ae30qjOndFrRU6v5jA== - dependencies: - cli-color "^2.0.3" - deepmerge "^4.2.2" - estree-walker "^2" - intl-messageformat "^9.13.0" - sade "^1.8.1" - tiny-glob "^0.2.9" - -svelte@^3.49.0: - version "3.55.0" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.55.0.tgz#29cb958750a23e751309a6535ccd811fcabc9038" - integrity sha512-uGu2FVMlOuey4JoKHKrpZFkoYyj0VLjJdz47zX5+gVK5odxHM40RVhar9/iK2YFRVxvfg9FkhfVlR0sjeIrOiA== - -svg-parser@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + "debug" "^4.3.2" + "glob" "^7.1.6" + "sax" "~1.2.4" + "source-map" "^0.7.3" + +"superstruct@^0.14.2": + "integrity" "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + "resolved" "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz" + "version" "0.14.2" + +"superstruct@^1.0.3": + "integrity" "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==" + "resolved" "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz" + "version" "1.0.3" + +"supports-color@^5.3.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "has-flag" "^3.0.0" + +"supports-color@^7.0.0", "supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^8.0.0": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^8.1.1": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" + dependencies: + "has-flag" "^4.0.0" + +"supports-hyperlinks@^2.0.0": + "integrity" "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==" + "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "has-flag" "^4.0.0" + "supports-color" "^7.0.0" + +"supports-preserve-symlinks-flag@^1.0.0": + "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + "version" "1.0.0" + +"svelte-i18n@^3.3.13": + "integrity" "sha512-qvvcMqHVCXJ5pHoQR5uGzWAW5vS3qB9mBq+W6veLZ6jkrzZGOziR+wyOUJsc59BupMh+Ae30qjOndFrRU6v5jA==" + "resolved" "https://registry.npmjs.org/svelte-i18n/-/svelte-i18n-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "cli-color" "^2.0.3" + "deepmerge" "^4.2.2" + "estree-walker" "^2" + "intl-messageformat" "^9.13.0" + "sade" "^1.8.1" + "tiny-glob" "^0.2.9" + +"svelte@^3.25.1", "svelte@^3.49.0": + "integrity" "sha512-uGu2FVMlOuey4JoKHKrpZFkoYyj0VLjJdz47zX5+gVK5odxHM40RVhar9/iK2YFRVxvfg9FkhfVlR0sjeIrOiA==" + "resolved" "https://registry.npmjs.org/svelte/-/svelte-3.55.0.tgz" + "version" "3.55.0" + +"svg-parser@^2.0.4": + "integrity" "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + "resolved" "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" + "version" "2.0.4" + +"svgo@^2.8.0": + "integrity" "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==" + "resolved" "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" + "version" "2.8.0" dependencies: "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -swarm-js@^0.1.40: - version "0.1.42" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" - integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== - dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - eth-lib "^0.1.26" - fs-extra "^4.0.2" - got "^11.8.5" - mime-types "^2.1.16" - mkdirp-promise "^5.0.1" - mock-fs "^4.1.0" - setimmediate "^1.0.5" - tar "^4.0.2" - xhr-request "^1.0.1" - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -synckit@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.4.tgz#0e6b392b73fafdafcde56692e3352500261d64ec" - integrity sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw== - dependencies: - "@pkgr/utils" "^2.3.1" - tslib "^2.4.0" - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -tallyho-detect-provider@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tallyho-detect-provider/-/tallyho-detect-provider-1.0.2.tgz#6e462c34494217d39a83e22709dd855488b2d32d" - integrity sha512-VUGZiWUrKJUUjtnkib09tuNO7Kld4UWLs54nnNYP0tewvzmeb1VWDK0UTv88bEUcuRKx2YWGDIuOuK9v270Ewg== - -tallyho-onboarding@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tallyho-onboarding/-/tallyho-onboarding-1.0.2.tgz#afc7dc4eb05b3a7861ead215e798585e1cbe2e91" - integrity sha512-bdFT/fNrFrq1BYVgjl/JKtwDmeS+z2u0415PoxmGmmYYRfdcKqXtEPImMoEbVwGtOeN0iFVohuS8ESrrAe+w7w== - dependencies: - bowser "^2.9.0" - -tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar@^4.0.2: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -tempy@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" - integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== - dependencies: - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@^5.3.3: - version "5.3.6" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" - integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== + "commander" "^7.2.0" + "css-select" "^4.1.3" + "css-tree" "^1.1.3" + "csso" "^4.2.0" + "picocolors" "^1.0.0" + "stable" "^0.1.8" + +"swarm-js@^0.1.40": + "integrity" "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==" + "resolved" "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz" + "version" "0.1.42" + dependencies: + "bluebird" "^3.5.0" + "buffer" "^5.0.5" + "eth-lib" "^0.1.26" + "fs-extra" "^4.0.2" + "got" "^11.8.5" + "mime-types" "^2.1.16" + "mkdirp-promise" "^5.0.1" + "mock-fs" "^4.1.0" + "setimmediate" "^1.0.5" + "tar" "^4.0.2" + "xhr-request" "^1.0.1" + +"symbol-tree@^3.2.4": + "integrity" "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "resolved" "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + "version" "3.2.4" + +"table-layout@^1.0.2": + "integrity" "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==" + "resolved" "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "array-back" "^4.0.1" + "deep-extend" "~0.6.0" + "typical" "^5.2.0" + "wordwrapjs" "^4.0.0" + +"tallyho-detect-provider@^1.0.0": + "integrity" "sha512-VUGZiWUrKJUUjtnkib09tuNO7Kld4UWLs54nnNYP0tewvzmeb1VWDK0UTv88bEUcuRKx2YWGDIuOuK9v270Ewg==" + "resolved" "https://registry.npmjs.org/tallyho-detect-provider/-/tallyho-detect-provider-1.0.2.tgz" + "version" "1.0.2" + +"tallyho-onboarding@^1.0.2": + "integrity" "sha512-bdFT/fNrFrq1BYVgjl/JKtwDmeS+z2u0415PoxmGmmYYRfdcKqXtEPImMoEbVwGtOeN0iFVohuS8ESrrAe+w7w==" + "resolved" "https://registry.npmjs.org/tallyho-onboarding/-/tallyho-onboarding-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "bowser" "^2.9.0" + +"tapable@^2.2.0": + "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + "version" "2.2.1" + +"tar@^4.0.2": + "integrity" "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==" + "resolved" "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" + "version" "4.4.19" + dependencies: + "chownr" "^1.1.4" + "fs-minipass" "^1.2.7" + "minipass" "^2.9.0" + "minizlib" "^1.3.3" + "mkdirp" "^0.5.5" + "safe-buffer" "^5.2.1" + "yallist" "^3.1.1" + +"temp-dir@^2.0.0": + "integrity" "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" + "resolved" "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" + "version" "2.0.0" + +"tempy@^0.6.0": + "integrity" "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==" + "resolved" "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "is-stream" "^2.0.0" + "temp-dir" "^2.0.0" + "type-fest" "^0.16.0" + "unique-string" "^2.0.0" + +"terminal-link@^2.0.0": + "integrity" "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==" + "resolved" "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "ansi-escapes" "^4.2.1" + "supports-hyperlinks" "^2.0.0" + +"terser-webpack-plugin@^5.3.3": + "integrity" "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==" + "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" + "version" "5.3.6" dependencies: "@jridgewell/trace-mapping" "^0.3.14" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.14.1" + "jest-worker" "^27.4.5" + "schema-utils" "^3.1.1" + "serialize-javascript" "^6.0.0" + "terser" "^5.14.1" -terser@^5.0.0, terser@^5.14.1: - version "5.16.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880" - integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw== +"terser@^5.0.0", "terser@^5.14.1": + "integrity" "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==" + "resolved" "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz" + "version" "5.16.1" dependencies: "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" + "acorn" "^8.5.0" + "commander" "^2.20.0" + "source-map-support" "~0.5.20" -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== +"test-exclude@^6.0.0": + "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" + "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + "version" "6.0.0" dependencies: "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-encoding-utf-8@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" - integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== - -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== - -thread-stream@^0.15.1: - version "0.15.2" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.2.tgz#fb95ad87d2f1e28f07116eb23d85aba3bc0425f4" - integrity sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA== - dependencies: - real-require "^0.1.0" - -throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g== - -through2@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" - integrity sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ== - dependencies: - readable-stream "~1.0.17" - xtend "~2.1.1" - -"through@>=2.2.7 <3", through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== - -timers-ext@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" - -tiny-glob@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - -tiny-secp256k1@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" - integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== - dependencies: - bindings "^1.3.0" - bn.js "^4.11.8" - create-hmac "^1.1.7" - elliptic "^6.4.0" - nan "^2.13.2" - -tmp@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - -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== - -totalist@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" - integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== - -tough-cookie@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" - integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== - dependencies: - punycode "^2.1.0" - -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + "glob" "^7.1.4" + "minimatch" "^3.0.4" + +"text-encoding-utf-8@^1.0.2": + "integrity" "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + "resolved" "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz" + "version" "1.0.2" + +"text-table@^0.2.0": + "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + "version" "0.2.0" + +"thread-stream@^0.15.1": + "integrity" "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==" + "resolved" "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz" + "version" "0.15.2" + dependencies: + "real-require" "^0.1.0" + +"throttleit@^1.0.0": + "integrity" "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==" + "resolved" "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz" + "version" "1.0.0" + +"through@^2.3.8", "through@>=2.2.7 <3": + "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + "version" "2.3.8" + +"through2@^2.0.3": + "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" + "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "readable-stream" "~2.3.6" + "xtend" "~4.0.1" + +"through2@~0.4.1": + "integrity" "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==" + "resolved" "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz" + "version" "0.4.2" + dependencies: + "readable-stream" "~1.0.17" + "xtend" "~2.1.1" + +"timed-out@^4.0.1": + "integrity" "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==" + "resolved" "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz" + "version" "4.0.1" + +"timers-ext@^0.1.7": + "integrity" "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==" + "resolved" "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz" + "version" "0.1.7" + dependencies: + "es5-ext" "~0.10.46" + "next-tick" "1" + +"tiny-glob@^0.2.9": + "integrity" "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==" + "resolved" "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz" + "version" "0.2.9" + dependencies: + "globalyzer" "0.1.0" + "globrex" "^0.1.2" + +"tiny-secp256k1@^1.1.6": + "integrity" "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==" + "resolved" "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz" + "version" "1.1.6" + dependencies: + "bindings" "^1.3.0" + "bn.js" "^4.11.8" + "create-hmac" "^1.1.7" + "elliptic" "^6.4.0" + "nan" "^2.13.2" + +"tmp@~0.2.1": + "integrity" "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==" + "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" + "version" "0.2.1" + dependencies: + "rimraf" "^3.0.0" + +"tmpl@1.0.5": + "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + "version" "1.0.5" + +"to-fast-properties@^2.0.0": + "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + "version" "2.0.0" + +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "is-number" "^7.0.0" + +"toggle-selection@^1.0.6": + "integrity" "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "resolved" "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" + "version" "1.0.6" + +"toidentifier@1.0.1": + "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + "version" "1.0.1" + +"totalist@^1.0.0": + "integrity" "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" + "resolved" "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz" + "version" "1.1.0" + +"tough-cookie@^4.0.0": + "integrity" "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==" + "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "psl" "^1.1.33" + "punycode" "^2.1.1" + "universalify" "^0.2.0" + "url-parse" "^1.5.3" + +"tough-cookie@~2.5.0": + "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" + "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "psl" "^1.1.28" + "punycode" "^2.1.1" + +"tr46@^1.0.1": + "integrity" "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "punycode" "^2.1.0" + +"tr46@^3.0.0": + "integrity" "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "punycode" "^2.1.1" + +"tr46@~0.0.3": + "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + "version" "0.0.3" "true-myth@^4.1.0": - version "4.1.1" - resolved "https://registry.yarnpkg.com/true-myth/-/true-myth-4.1.1.tgz#ff4ac9d5130276e34aa338757e2416ec19248ba2" - integrity sha512-rqy30BSpxPznbbTcAcci90oZ1YR4DqvKcNXNerG5gQBU2v4jk0cygheiul5J6ExIMrgDVuanv/MkGfqZbKrNNg== - -ts-command-line-args@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz#b6188e42efc6cf7a8898e438a873fbb15505ddd6" - integrity sha512-FR3y7pLl/fuUNSmnPhfLArGqRrpojQgIEEOVzYx9DhTmfIN7C9RWSfpkJEF4J+Gk7aVx5pak8I7vWZsaN4N84g== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-morph@^13.0.1: - version "13.0.3" - resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-13.0.3.tgz#c0c51d1273ae2edb46d76f65161eb9d763444c1d" - integrity sha512-pSOfUMx8Ld/WUreoSzvMFQG5i9uEiWIsBYjpU9+TTASOeUa89j5HykomeqVULm1oqWtBdleI3KEFRLrlA3zGIw== + "integrity" "sha512-rqy30BSpxPznbbTcAcci90oZ1YR4DqvKcNXNerG5gQBU2v4jk0cygheiul5J6ExIMrgDVuanv/MkGfqZbKrNNg==" + "resolved" "https://registry.npmjs.org/true-myth/-/true-myth-4.1.1.tgz" + "version" "4.1.1" + +"ts-command-line-args@^2.2.0": + "integrity" "sha512-FR3y7pLl/fuUNSmnPhfLArGqRrpojQgIEEOVzYx9DhTmfIN7C9RWSfpkJEF4J+Gk7aVx5pak8I7vWZsaN4N84g==" + "resolved" "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz" + "version" "2.3.1" + dependencies: + "chalk" "^4.1.0" + "command-line-args" "^5.1.1" + "command-line-usage" "^6.1.0" + "string-format" "^2.0.0" + +"ts-essentials@^7.0.1": + "integrity" "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==" + "resolved" "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz" + "version" "7.0.3" + +"ts-morph@^13.0.1": + "integrity" "sha512-pSOfUMx8Ld/WUreoSzvMFQG5i9uEiWIsBYjpU9+TTASOeUa89j5HykomeqVULm1oqWtBdleI3KEFRLrlA3zGIw==" + "resolved" "https://registry.npmjs.org/ts-morph/-/ts-morph-13.0.3.tgz" + "version" "13.0.3" dependencies: "@ts-morph/common" "~0.12.3" - code-block-writer "^11.0.0" + "code-block-writer" "^11.0.0" -ts-node@^10.8.2: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== +"ts-node@^10.8.2", "ts-node@>=9.0.0": + "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" + "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + "version" "10.9.1" dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -ts-prune@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/ts-prune/-/ts-prune-0.10.3.tgz#b6c71a525543b38dcf947a7d3adfb7f9e8b91f38" - integrity sha512-iS47YTbdIcvN8Nh/1BFyziyUqmjXz7GVzWu02RaZXqb+e/3Qe1B7IQ4860krOeCGUeJmterAlaM2FRH0Ue0hjw== - dependencies: - commander "^6.2.1" - cosmiconfig "^7.0.1" - json5 "^2.1.3" - lodash "^4.17.21" + "acorn" "^8.4.1" + "acorn-walk" "^8.1.1" + "arg" "^4.1.0" + "create-require" "^1.1.0" + "diff" "^4.0.1" + "make-error" "^1.1.1" + "v8-compile-cache-lib" "^3.0.1" + "yn" "3.1.1" + +"ts-prune@^0.10.3": + "integrity" "sha512-iS47YTbdIcvN8Nh/1BFyziyUqmjXz7GVzWu02RaZXqb+e/3Qe1B7IQ4860krOeCGUeJmterAlaM2FRH0Ue0hjw==" + "resolved" "https://registry.npmjs.org/ts-prune/-/ts-prune-0.10.3.tgz" + "version" "0.10.3" + dependencies: + "commander" "^6.2.1" + "cosmiconfig" "^7.0.1" + "json5" "^2.1.3" + "lodash" "^4.17.21" "true-myth" "^4.1.0" - ts-morph "^13.0.1" + "ts-morph" "^13.0.1" -tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== +"tsconfig-paths@^3.14.2": + "integrity" "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==" + "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" + "version" "3.14.2" dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tsconfig-paths@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz#4819f861eef82e6da52fb4af1e8c930a39ed979a" - integrity sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== - -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" - integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== - -tslib@^2.3.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" - integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl-util@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - -tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -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-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-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" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" - integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== - -typechain@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.1.1.tgz#9c2e8012c2c4c586536fc18402dcd7034c4ff0bd" - integrity sha512-uF/sUvnXTOVF2FHKhQYnxHk4su4JjZR8vr4mA2mBaRwHTbwh0jIlqARz9XJr1tA0l7afJGvEa1dTSi4zt039LQ== + "json5" "^1.0.2" + "minimist" "^1.2.6" + "strip-bom" "^3.0.0" + +"tsconfig-paths@^4.1.2": + "integrity" "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==" + "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "json5" "^2.2.2" + "minimist" "^1.2.6" + "strip-bom" "^3.0.0" + +"tslib@^1.8.1", "tslib@^1.9.0", "tslib@^2.4.1 || ^1.9.3", "tslib@1.14.1": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" + +"tslib@^2.0.0": + "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + "version" "2.4.1" + +"tslib@^2.1.0": + "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + "version" "2.4.1" + +"tslib@^2.3.0": + "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + "version" "2.4.1" + +"tslib@^2.3.1": + "integrity" "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz" + "version" "2.6.1" + +"tslib@^2.4.0": + "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + "version" "2.4.1" + +"tslib@2.5.2": + "integrity" "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz" + "version" "2.5.2" + +"tsutils@^3.21.0": + "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" + "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + "version" "3.21.0" + dependencies: + "tslib" "^1.8.1" + +"tunnel-agent@^0.6.0": + "integrity" "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==" + "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "safe-buffer" "^5.0.1" + +"tweetnacl-util@^0.15.1": + "integrity" "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + "resolved" "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz" + "version" "0.15.1" + +"tweetnacl@^0.14.3", "tweetnacl@~0.14.0": + "integrity" "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "version" "0.14.5" + +"tweetnacl@^1.0.3": + "integrity" "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" + "version" "1.0.3" + +"type-check@^0.4.0": + "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "prelude-ls" "^1.2.1" + +"type-check@~0.3.2": + "integrity" "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + "version" "0.3.2" + dependencies: + "prelude-ls" "~1.1.2" + +"type-check@~0.4.0": + "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "prelude-ls" "^1.2.1" + +"type-detect@4.0.8": + "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + "version" "4.0.8" + +"type-fest@^0.16.0": + "integrity" "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" + "version" "0.16.0" + +"type-fest@^0.20.2": + "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + "version" "0.20.2" + +"type-fest@^0.21.3": + "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + "version" "0.21.3" + +"type-is@~1.6.18": + "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" + "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + "version" "1.6.18" + dependencies: + "media-typer" "0.3.0" + "mime-types" "~2.1.24" + +"type@^1.0.1": + "integrity" "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + "resolved" "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + "version" "1.2.0" + +"type@^2.7.2": + "integrity" "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + "resolved" "https://registry.npmjs.org/type/-/type-2.7.2.tgz" + "version" "2.7.2" + +"typechain@^8.0.0", "typechain@^8.1.1": + "integrity" "sha512-uF/sUvnXTOVF2FHKhQYnxHk4su4JjZR8vr4mA2mBaRwHTbwh0jIlqARz9XJr1tA0l7afJGvEa1dTSi4zt039LQ==" + "resolved" "https://registry.npmjs.org/typechain/-/typechain-8.1.1.tgz" + "version" "8.1.1" dependencies: "@types/prettier" "^2.1.1" - debug "^4.3.1" - fs-extra "^7.0.0" - glob "7.1.7" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.3.1" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^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== - -typeforce@^1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" - integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== - -typescript-plugin-css-modules@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/typescript-plugin-css-modules/-/typescript-plugin-css-modules-4.2.2.tgz#b612eb7ad58579d9c5c5b4e64eb26e4968826417" - integrity sha512-X5OYGkX96ENq2c7xFJO4tgtiMTlBkOMoRmVHQXH2H4CGFcVODKGieDqPU2B0IV0I+AyvKYDFdKh4ZKtKxAcAww== + "debug" "^4.3.1" + "fs-extra" "^7.0.0" + "glob" "7.1.7" + "js-sha3" "^0.8.0" + "lodash" "^4.17.15" + "mkdirp" "^1.0.4" + "prettier" "^2.3.1" + "ts-command-line-args" "^2.2.0" + "ts-essentials" "^7.0.1" + +"typed-array-buffer@^1.0.0": + "integrity" "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==" + "resolved" "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.2.1" + "is-typed-array" "^1.1.10" + +"typed-array-byte-length@^1.0.0": + "integrity" "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==" + "resolved" "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "for-each" "^0.3.3" + "has-proto" "^1.0.1" + "is-typed-array" "^1.1.10" + +"typed-array-byte-offset@^1.0.0": + "integrity" "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==" + "resolved" "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "for-each" "^0.3.3" + "has-proto" "^1.0.1" + "is-typed-array" "^1.1.10" + +"typed-array-length@^1.0.4": + "integrity" "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==" + "resolved" "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.2" + "for-each" "^0.3.3" + "is-typed-array" "^1.1.9" + +"typedarray-to-buffer@^3.1.5", "typedarray-to-buffer@3.1.5": + "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" + "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "is-typedarray" "^1.0.0" + +"typedarray@^0.0.6": + "integrity" "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + "version" "0.0.6" + +"typeforce@^1.18.0": + "integrity" "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" + "resolved" "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz" + "version" "1.18.0" + +"typescript-plugin-css-modules@^4.2.2": + "integrity" "sha512-jEEP2oUPOqR89QGgvPK2HSTZLkrCeKZQ9EwiNxm9VUcufUbNY1Tv053fPKRq6c13PMQjlBU3WrQjKN8u0j5Y6w==" + "resolved" "https://registry.npmjs.org/typescript-plugin-css-modules/-/typescript-plugin-css-modules-4.2.3.tgz" + "version" "4.2.3" dependencies: "@types/postcss-modules-local-by-default" "^4.0.0" "@types/postcss-modules-scope" "^3.0.1" - dotenv "^16.0.3" - icss-utils "^5.1.0" - less "^4.1.3" - lodash.camelcase "^4.3.0" - postcss "^8.4.21" - postcss-load-config "^3.1.4" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - reserved-words "^0.1.2" - sass "^1.58.3" - source-map-js "^1.0.2" - stylus "^0.59.0" - tsconfig-paths "^4.1.2" - -typescript@4.9.4, typescript@^4.6.2: - version "4.9.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" - integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -u2f-api@0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" - integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== - -ua-parser-js@^1.0.34: - version "1.0.35" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.35.tgz#c4ef44343bc3db0a3cbefdf21822f1b1fc1ab011" - integrity sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA== - -uint8arrays@^3.0.0, uint8arrays@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" - integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== - dependencies: - multiformats "^9.4.2" - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - -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" - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -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== - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -upath@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -update-browserslist-db@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -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" - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url-set-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== - -use-sync-external-store@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz#3343c3fe7f7e404db70f8c687adf5c1652d34e82" - integrity sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ== - -use-sync-external-store@1.2.0, use-sync-external-store@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - -utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== - dependencies: - node-gyp-build "^4.3.0" - -utf8@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util@^0.12.0, util@^0.12.4: - version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - -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.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-to-istanbul@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" - integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + "dotenv" "^16.0.3" + "icss-utils" "^5.1.0" + "less" "^4.1.3" + "lodash.camelcase" "^4.3.0" + "postcss" "^8.4.21" + "postcss-load-config" "^3.1.4" + "postcss-modules-extract-imports" "^3.0.0" + "postcss-modules-local-by-default" "^4.0.0" + "postcss-modules-scope" "^3.0.0" + "reserved-words" "^0.1.2" + "sass" "^1.58.3" + "source-map-js" "^1.0.2" + "stylus" "^0.59.0" + "tsconfig-paths" "^4.1.2" + +"typescript@^4.6.2", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=3.3.1", "typescript@>=3.7.0", "typescript@>=3.9.0", "typescript@>=4.3.0", "typescript@4.9.4": + "integrity" "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz" + "version" "4.9.4" + +"typical@^4.0.0": + "integrity" "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" + "resolved" "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz" + "version" "4.0.0" + +"typical@^5.2.0": + "integrity" "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" + "resolved" "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz" + "version" "5.2.0" + +"u2f-api@0.2.7": + "integrity" "sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg==" + "resolved" "https://registry.npmjs.org/u2f-api/-/u2f-api-0.2.7.tgz" + "version" "0.2.7" + +"ua-parser-js@^1.0.34": + "integrity" "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==" + "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz" + "version" "1.0.35" + +"uint8arrays@^3.0.0", "uint8arrays@^3.1.0": + "integrity" "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==" + "resolved" "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "multiformats" "^9.4.2" + +"ultron@~1.1.0": + "integrity" "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + "resolved" "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz" + "version" "1.1.1" + +"unbox-primitive@^1.0.2": + "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" + "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + "has-bigints" "^1.0.2" + "has-symbols" "^1.0.3" + "which-boxed-primitive" "^1.0.2" + +"unicode-canonical-property-names-ecmascript@^2.0.0": + "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + "version" "2.0.0" + +"unicode-match-property-ecmascript@^2.0.0": + "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" + "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "unicode-canonical-property-names-ecmascript" "^2.0.0" + "unicode-property-aliases-ecmascript" "^2.0.0" + +"unicode-match-property-value-ecmascript@^2.1.0": + "integrity" "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + "version" "2.1.0" + +"unicode-property-aliases-ecmascript@^2.0.0": + "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + "version" "2.1.0" + +"unique-string@^2.0.0": + "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" + "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "crypto-random-string" "^2.0.0" + +"universalify@^0.1.0": + "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + "version" "0.1.2" + +"universalify@^0.2.0": + "integrity" "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" + "version" "0.2.0" + +"universalify@^2.0.0": + "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + "version" "2.0.0" + +"unpipe@~1.0.0", "unpipe@1.0.0": + "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "version" "1.0.0" + +"untildify@^4.0.0": + "integrity" "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" + "resolved" "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" + "version" "4.0.0" + +"upath@^1.2.0": + "integrity" "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + "resolved" "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" + "version" "1.2.0" + +"update-browserslist-db@^1.0.9": + "integrity" "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==" + "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "escalade" "^3.1.1" + "picocolors" "^1.0.0" + +"uri-js@^4.2.2": + "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + "version" "4.4.1" + dependencies: + "punycode" "^2.1.0" + +"url-parse@^1.5.3": + "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" + "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + "version" "1.5.10" + dependencies: + "querystringify" "^2.1.1" + "requires-port" "^1.0.0" + +"url-set-query@^1.0.0": + "integrity" "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==" + "resolved" "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz" + "version" "1.0.0" + +"use-sync-external-store@^1.0.0": + "integrity" "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" + "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" + "version" "1.2.0" + +"use-sync-external-store@1.1.0": + "integrity" "sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ==" + "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz" + "version" "1.1.0" + +"use-sync-external-store@1.2.0": + "integrity" "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" + "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" + "version" "1.2.0" + +"utf-8-validate@^5.0.2", "utf-8-validate@>=5.0.2": + "integrity" "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==" + "resolved" "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz" + "version" "5.0.10" + dependencies: + "node-gyp-build" "^4.3.0" + +"utf8@3.0.0": + "integrity" "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + "resolved" "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" + "version" "3.0.0" + +"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": + "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.2" + +"util@^0.12.0", "util@^0.12.4", "util@^0.12.5": + "integrity" "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==" + "resolved" "https://registry.npmjs.org/util/-/util-0.12.5.tgz" + "version" "0.12.5" + dependencies: + "inherits" "^2.0.3" + "is-arguments" "^1.0.4" + "is-generator-function" "^1.0.7" + "is-typed-array" "^1.1.3" + "which-typed-array" "^1.1.2" + +"utils-merge@1.0.1": + "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + "version" "1.0.1" + +"uuid@^3.3.2": + "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + "version" "3.4.0" + +"uuid@^8.3.2": + "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + "version" "8.3.2" + +"uuid@^9.0.0": + "integrity" "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz" + "version" "9.0.0" + +"v8-compile-cache-lib@^3.0.1": + "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + "version" "3.0.1" + +"v8-to-istanbul@^9.0.1": + "integrity" "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==" + "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" + "version" "9.0.1" dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" + "convert-source-map" "^1.6.0" -valtio@1.10.6: - version "1.10.6" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.10.6.tgz#80ed00198b949939863a0fa56ae687abb417fc4f" - integrity sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA== +"valtio@1.10.6": + "integrity" "sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA==" + "resolved" "https://registry.npmjs.org/valtio/-/valtio-1.10.6.tgz" + "version" "1.10.6" dependencies: - proxy-compare "2.5.1" - use-sync-external-store "1.2.0" + "proxy-compare" "2.5.1" + "use-sync-external-store" "1.2.0" -varint@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== +"varint@^5.0.0": + "integrity" "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" + "resolved" "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" + "version" "5.0.2" -varuint-bitcoin@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" - integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== +"varuint-bitcoin@^1.1.2": + "integrity" "sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==" + "resolved" "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz" + "version" "1.1.2" dependencies: - safe-buffer "^5.1.1" + "safe-buffer" "^5.1.1" -vary@^1, 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== +"vary@^1", "vary@~1.1.2": + "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + "version" "1.1.2" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== +"verror@1.10.0": + "integrity" "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==" + "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + "version" "1.10.0" dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + "assert-plus" "^1.0.0" + "core-util-is" "1.0.2" + "extsprintf" "^1.2.0" -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== +"w3c-hr-time@^1.0.2": + "integrity" "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==" + "resolved" "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" + "version" "1.0.2" dependencies: - browser-process-hrtime "^1.0.0" + "browser-process-hrtime" "^1.0.0" -w3c-xmlserializer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" - integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== +"w3c-xmlserializer@^3.0.0": + "integrity" "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==" + "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz" + "version" "3.0.0" dependencies: - xml-name-validator "^4.0.0" + "xml-name-validator" "^4.0.0" -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== +"walker@^1.0.8": + "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" + "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + "version" "1.0.8" dependencies: - makeerror "1.0.12" + "makeerror" "1.0.12" -warning@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== +"warning@^4.0.3": + "integrity" "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==" + "resolved" "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" + "version" "4.0.3" dependencies: - loose-envify "^1.0.0" + "loose-envify" "^1.0.0" -web3-bzz@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.1.tgz#81397be5ce262d03d82b92e9d8acc11f8a609ea1" - integrity sha512-dJJHS84nvpoxv6ijTMkdUSlRr5beCXNtx4UZcrFLHBva8dT63QEtKdLyDt2AyMJJdVzTCk78uir/6XtVWrdS6w== +"web3-bzz@1.10.0": + "integrity" "sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==" + "resolved" "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.0.tgz" + "version" "1.10.0" dependencies: "@types/node" "^12.12.6" - got "12.1.0" - swarm-js "^0.1.40" + "got" "12.1.0" + "swarm-js" "^0.1.40" -web3-core-helpers@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.1.tgz#7904747b23fd0afa4f2c86ed98ea9418ccad7672" - integrity sha512-ClzNO6T1S1gifC+BThw0+GTfcsjLEY8T1qUp6Ly2+w4PntAdNtKahxWKApWJ0l9idqot/fFIDXwO3Euu7I0Xqw== +"web3-core-helpers@1.10.0": + "integrity" "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==" + "resolved" "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz" + "version" "1.10.0" dependencies: - web3-eth-iban "1.8.1" - web3-utils "1.8.1" + "web3-eth-iban" "1.10.0" + "web3-utils" "1.10.0" -web3-core-method@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.1.tgz#0fc5a433a9fc784c447522f141c0a8e0163c7790" - integrity sha512-oYGRodktfs86NrnFwaWTbv2S38JnpPslFwSSARwFv4W9cjbGUW3LDeA5MKD/dRY+ssZ5OaekeMsUCLoGhX68yA== +"web3-core-method@1.10.0": + "integrity" "sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==" + "resolved" "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz" + "version" "1.10.0" dependencies: "@ethersproject/transactions" "^5.6.2" - web3-core-helpers "1.8.1" - web3-core-promievent "1.8.1" - web3-core-subscriptions "1.8.1" - web3-utils "1.8.1" - -web3-core-promievent@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.1.tgz#f334c8b2ceac6c2228f06d2a515f6d103157f036" - integrity sha512-9mxqHlgB0MrZI4oUIRFkuoJMNj3E7btjrMv3sMer/Z9rYR1PfoSc1aAokw4rxKIcAh+ylVtd/acaB2HKB7aRPg== - dependencies: - eventemitter3 "4.0.4" - -web3-core-requestmanager@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.1.tgz#272ffa55b7b568ecbc8e4a257ca080355c31c60e" - integrity sha512-x+VC2YPPwZ1khvqA6TA69LvfFCOZXsoUVOxmTx/vIN22PrY9KzKhxcE7pBSiGhmab1jtmRYXUbcQSVpAXqL8cw== - dependencies: - util "^0.12.0" - web3-core-helpers "1.8.1" - web3-providers-http "1.8.1" - web3-providers-ipc "1.8.1" - web3-providers-ws "1.8.1" - -web3-core-subscriptions@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.1.tgz#f5ae1380e92746eadfab6475b8a70ef5a1be6bbf" - integrity sha512-bmCMq5OeA3E2vZUh8Js1HcJbhwtsE+yeMqGC4oIZB3XsL5SLqyKLB/pU+qUYqQ9o4GdcrFTDPhPg1bgvf7p1Pw== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.8.1" - -web3-core@1.8.1, web3-core@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.1.tgz#050b1c408d1f9b7ae539e90f7f7d1b7a7d10578b" - integrity sha512-LbRZlJH2N6nS3n3Eo9Y++25IvzMY7WvYnp4NM/Ajhh97dAdglYs6rToQ2DbL2RLvTYmTew4O/y9WmOk4nq9COw== - dependencies: - "@types/bn.js" "^5.1.0" + "web3-core-helpers" "1.10.0" + "web3-core-promievent" "1.10.0" + "web3-core-subscriptions" "1.10.0" + "web3-utils" "1.10.0" + +"web3-core-promievent@1.10.0": + "integrity" "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==" + "resolved" "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "eventemitter3" "4.0.4" + +"web3-core-requestmanager@1.10.0": + "integrity" "sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==" + "resolved" "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "util" "^0.12.5" + "web3-core-helpers" "1.10.0" + "web3-providers-http" "1.10.0" + "web3-providers-ipc" "1.10.0" + "web3-providers-ws" "1.10.0" + +"web3-core-subscriptions@1.10.0": + "integrity" "sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==" + "resolved" "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "eventemitter3" "4.0.4" + "web3-core-helpers" "1.10.0" + +"web3-core@^1.8.1", "web3-core@1.10.0": + "integrity" "sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==" + "resolved" "https://registry.npmjs.org/web3-core/-/web3-core-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "@types/bn.js" "^5.1.1" "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.8.1" - web3-core-method "1.8.1" - web3-core-requestmanager "1.8.1" - web3-utils "1.8.1" + "bignumber.js" "^9.0.0" + "web3-core-helpers" "1.10.0" + "web3-core-method" "1.10.0" + "web3-core-requestmanager" "1.10.0" + "web3-utils" "1.10.0" -web3-eth-abi@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.1.tgz#47455d6513217c4b0866fea6f97b1c4afa0b6535" - integrity sha512-0mZvCRTIG0UhDhJwNQJgJxu4b4DyIpuMA0GTfqxqeuqzX4Q/ZvmoNurw0ExTfXaGPP82UUmmdkRi6FdZOx+C6w== +"web3-eth-abi@1.10.0": + "integrity" "sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg==" + "resolved" "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.0.tgz" + "version" "1.10.0" dependencies: "@ethersproject/abi" "^5.6.3" - web3-utils "1.8.1" + "web3-utils" "1.10.0" -web3-eth-accounts@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.1.tgz#1ce7387721f118aeb0376291e4d8bbe2ac323406" - integrity sha512-mgzxSYgN54/NsOFBO1Fq1KkXp1S5KlBvI/DlgvajU72rupoFMq6Cu6Yp9GUaZ/w2ij9PzEJuFJk174XwtfMCmg== +"web3-eth-accounts@1.10.0": + "integrity" "sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==" + "resolved" "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz" + "version" "1.10.0" dependencies: "@ethereumjs/common" "2.5.0" "@ethereumjs/tx" "3.3.2" - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-util "^7.0.10" - scrypt-js "^3.0.1" - uuid "^9.0.0" - web3-core "1.8.1" - web3-core-helpers "1.8.1" - web3-core-method "1.8.1" - web3-utils "1.8.1" - -web3-eth-contract@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.1.tgz#bdf3e33bbcb79a1b6144dffd6a0deefd2e459272" - integrity sha512-1wphnl+/xwCE2io44JKnN+ti3oa47BKRiVzvWd42icwRbcpFfRxH9QH+aQX3u8VZIISNH7dAkTWpGIIJgGFTmg== - dependencies: - "@types/bn.js" "^5.1.0" - web3-core "1.8.1" - web3-core-helpers "1.8.1" - web3-core-method "1.8.1" - web3-core-promievent "1.8.1" - web3-core-subscriptions "1.8.1" - web3-eth-abi "1.8.1" - web3-utils "1.8.1" - -web3-eth-ens@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.1.tgz#e78a9651fea8282abe8565b001819e2d645e5929" - integrity sha512-FT8xTI9uN8RxeBQa/W8pLa2aoFh4+EE34w7W2271LICKzla1dtLyb6XSdn48vsUcPmhWsTVk9mO9RTU0l4LGQQ== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - web3-core "1.8.1" - web3-core-helpers "1.8.1" - web3-core-promievent "1.8.1" - web3-eth-abi "1.8.1" - web3-eth-contract "1.8.1" - web3-utils "1.8.1" - -web3-eth-iban@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.1.tgz#c6484e5d68ca644aa78431301e7acd5df24598d1" - integrity sha512-DomoQBfvIdtM08RyMGkMVBOH0vpOIxSSQ+jukWk/EkMLGMWJtXw/K2c2uHAeq3L/VPWNB7zXV2DUEGV/lNE2Dg== - dependencies: - bn.js "^5.2.1" - web3-utils "1.8.1" - -web3-eth-personal@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.1.tgz#00b5ff1898b62044d25ed5fddd8486168d4827cf" - integrity sha512-myIYMvj7SDIoV9vE5BkVdon3pya1WinaXItugoii2VoTcQNPOtBxmYVH+XS5ErzCJlnxzphpQrkywyY64bbbCA== + "eth-lib" "0.2.8" + "ethereumjs-util" "^7.1.5" + "scrypt-js" "^3.0.1" + "uuid" "^9.0.0" + "web3-core" "1.10.0" + "web3-core-helpers" "1.10.0" + "web3-core-method" "1.10.0" + "web3-utils" "1.10.0" + +"web3-eth-contract@1.10.0": + "integrity" "sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==" + "resolved" "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "@types/bn.js" "^5.1.1" + "web3-core" "1.10.0" + "web3-core-helpers" "1.10.0" + "web3-core-method" "1.10.0" + "web3-core-promievent" "1.10.0" + "web3-core-subscriptions" "1.10.0" + "web3-eth-abi" "1.10.0" + "web3-utils" "1.10.0" + +"web3-eth-ens@1.10.0": + "integrity" "sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==" + "resolved" "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "content-hash" "^2.5.2" + "eth-ens-namehash" "2.0.8" + "web3-core" "1.10.0" + "web3-core-helpers" "1.10.0" + "web3-core-promievent" "1.10.0" + "web3-eth-abi" "1.10.0" + "web3-eth-contract" "1.10.0" + "web3-utils" "1.10.0" + +"web3-eth-iban@1.10.0": + "integrity" "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==" + "resolved" "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "bn.js" "^5.2.1" + "web3-utils" "1.10.0" + +"web3-eth-personal@1.10.0": + "integrity" "sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==" + "resolved" "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz" + "version" "1.10.0" dependencies: "@types/node" "^12.12.6" - web3-core "1.8.1" - web3-core-helpers "1.8.1" - web3-core-method "1.8.1" - web3-net "1.8.1" - web3-utils "1.8.1" - -web3-eth@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.1.tgz#395f6cd56edaac5dbb23e8cec9886c3fd32c430e" - integrity sha512-LgyzbhFqiFRd8M8sBXoFN4ztzOnkeckl3H/9lH5ek7AdoRMhBg7tYpYRP3E5qkhd/q+yiZmcUgy1AF6NHrC1wg== - dependencies: - web3-core "1.8.1" - web3-core-helpers "1.8.1" - web3-core-method "1.8.1" - web3-core-subscriptions "1.8.1" - web3-eth-abi "1.8.1" - web3-eth-accounts "1.8.1" - web3-eth-contract "1.8.1" - web3-eth-ens "1.8.1" - web3-eth-iban "1.8.1" - web3-eth-personal "1.8.1" - web3-net "1.8.1" - web3-utils "1.8.1" - -web3-net@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.1.tgz#2bed4d4b93166724129ec33d0e5dea98880285f4" - integrity sha512-LyEJAwogdFo0UAXZqoSJGFjopdt+kLw0P00FSZn2yszbgcoI7EwC+nXiOsEe12xz4LqpYLOtbR7+gxgiTVjjHQ== - dependencies: - web3-core "1.8.1" - web3-core-method "1.8.1" - web3-utils "1.8.1" - -web3-provider-engine@16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-16.0.3.tgz#8ff93edf3a8da2f70d7f85c5116028c06a0d9f07" - integrity sha512-Q3bKhGqLfMTdLvkd4TtkGYJHcoVQ82D1l8jTIwwuJp/sAp7VHnRYb9YJ14SW/69VMWoOhSpPLZV2tWb9V0WJoA== + "web3-core" "1.10.0" + "web3-core-helpers" "1.10.0" + "web3-core-method" "1.10.0" + "web3-net" "1.10.0" + "web3-utils" "1.10.0" + +"web3-eth@1.10.0": + "integrity" "sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==" + "resolved" "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "web3-core" "1.10.0" + "web3-core-helpers" "1.10.0" + "web3-core-method" "1.10.0" + "web3-core-subscriptions" "1.10.0" + "web3-eth-abi" "1.10.0" + "web3-eth-accounts" "1.10.0" + "web3-eth-contract" "1.10.0" + "web3-eth-ens" "1.10.0" + "web3-eth-iban" "1.10.0" + "web3-eth-personal" "1.10.0" + "web3-net" "1.10.0" + "web3-utils" "1.10.0" + +"web3-net@1.10.0": + "integrity" "sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==" + "resolved" "https://registry.npmjs.org/web3-net/-/web3-net-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "web3-core" "1.10.0" + "web3-core-method" "1.10.0" + "web3-utils" "1.10.0" + +"web3-provider-engine@16.0.3": + "integrity" "sha512-Q3bKhGqLfMTdLvkd4TtkGYJHcoVQ82D1l8jTIwwuJp/sAp7VHnRYb9YJ14SW/69VMWoOhSpPLZV2tWb9V0WJoA==" + "resolved" "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-16.0.3.tgz" + "version" "16.0.3" dependencies: "@ethereumjs/tx" "^3.3.0" - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^4.4.2" - eth-json-rpc-filters "^4.2.1" - eth-json-rpc-infura "^5.1.0" - eth-json-rpc-middleware "^6.0.0" - eth-rpc-errors "^3.0.0" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.2.2" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" - -web3-providers-http@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.1.tgz#8aa89c11a9272f11ddb74b871273c92225faa28d" - integrity sha512-1Zyts4O9W/UNEPkp+jyL19Jc3D15S4yp8xuLTjVhcUEAlHo24NDWEKxtZGUuHk4HrKL2gp8OlsDbJ7MM+ESDgg== - dependencies: - abortcontroller-polyfill "^1.7.3" - cross-fetch "^3.1.4" - es6-promise "^4.2.8" - web3-core-helpers "1.8.1" - -web3-providers-ipc@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.1.tgz#6128a3a3a824d06bf0efcfe86325401f8691a5ca" - integrity sha512-nw/W5nclvi+P2z2dYkLWReKLnocStflWqFl+qjtv0xn3MrUTyXMzSF0+61i77+16xFsTgzo4wS/NWIOVkR0EFA== - dependencies: - oboe "2.1.5" - web3-core-helpers "1.8.1" - -web3-providers-ws@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.1.tgz#5e5370e07eb8c615ed298ebc8602b283c7b7d649" - integrity sha512-TNefIDAMpdx57+YdWpYZ/xdofS0P+FfKaDYXhn24ie/tH9G+AB+UBSOKnjN0KSadcRSCMBwGPRiEmNHPavZdsA== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.8.1" - websocket "^1.0.32" - -web3-shh@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.1.tgz#028a95cf9d3a36020380938b9a127610efbb9be7" - integrity sha512-sqHgarnfcY2Qt3PYS4R6YveHrDy7hmL09yeLLHHCI+RKirmjLVqV0rc5LJWUtlbYI+kDoa5gbgde489M9ZAC0g== - dependencies: - web3-core "1.8.1" - web3-core-method "1.8.1" - web3-core-subscriptions "1.8.1" - web3-net "1.8.1" - -web3-utils@1.8.1, web3-utils@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.1.tgz#f2f7ca7eb65e6feb9f3d61056d0de6bbd57125ff" - integrity sha512-LgnM9p6V7rHHUGfpMZod+NST8cRfGzJ1BTXAyNo7A9cJX9LczBfSRxJp+U/GInYe9mby40t3v22AJdlELibnsQ== - dependencies: - bn.js "^5.2.1" - ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" - -web3@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.1.tgz#8ea67215ef5f3a6f6d3381800b527242ea22885a" - integrity sha512-tAqFsQhGv340C9OgRJIuoScN7f7wa1tUvsnnDUMt9YE6J4gcm7TV2Uwv+KERnzvV+xgdeuULYpsioRRNKrUvoQ== - dependencies: - web3-bzz "1.8.1" - web3-core "1.8.1" - web3-eth "1.8.1" - web3-eth-personal "1.8.1" - web3-net "1.8.1" - web3-shh "1.8.1" - web3-utils "1.8.1" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -webpack-bundle-analyzer@4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz#33c1c485a7fcae8627c547b5c3328b46de733c66" - integrity sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg== - dependencies: - acorn "^8.0.4" - acorn-walk "^8.0.0" - chalk "^4.1.0" - commander "^7.2.0" - gzip-size "^6.0.0" - lodash "^4.17.20" - opener "^1.5.2" - sirv "^1.0.7" - ws "^7.3.1" - -webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webrtc-adapter@^7.2.1: - version "7.7.1" - resolved "https://registry.yarnpkg.com/webrtc-adapter/-/webrtc-adapter-7.7.1.tgz#b2c227a6144983b35057df67bd984a7d4bfd17f1" - integrity sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A== - dependencies: - rtcpeerconnection-shim "^1.2.15" - sdp "^2.12.0" - -websocket@^1.0.32: - version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" - integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - -whatwg-encoding@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" - integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== - dependencies: - iconv-lite "0.6.3" - -whatwg-fetch@3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-fetch@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" - integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== - -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - -whatwg-url@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" - integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - -whatwg-url@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" - integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -which-typed-array@^1.1.2, which-typed-array@^1.1.8: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" - -which@1.2.x: - version "1.2.14" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" - integrity sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw== - dependencies: - isexe "^2.0.0" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -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" - -wif@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" - integrity sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ== - dependencies: - bs58check "<3.0.0" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -workbox-background-sync@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz#3141afba3cc8aa2ae14c24d0f6811374ba8ff6a9" - integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g== - dependencies: - idb "^7.0.1" - workbox-core "6.5.4" - -workbox-broadcast-update@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz#8441cff5417cd41f384ba7633ca960a7ffe40f66" - integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw== - dependencies: - workbox-core "6.5.4" - -workbox-build@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389" - integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA== + "async" "^2.5.0" + "backoff" "^2.5.0" + "clone" "^2.0.0" + "cross-fetch" "^2.1.0" + "eth-block-tracker" "^4.4.2" + "eth-json-rpc-filters" "^4.2.1" + "eth-json-rpc-infura" "^5.1.0" + "eth-json-rpc-middleware" "^6.0.0" + "eth-rpc-errors" "^3.0.0" + "eth-sig-util" "^1.4.2" + "ethereumjs-block" "^1.2.2" + "ethereumjs-util" "^5.1.5" + "ethereumjs-vm" "^2.3.4" + "json-stable-stringify" "^1.0.1" + "promise-to-callback" "^1.0.0" + "readable-stream" "^2.2.9" + "request" "^2.85.0" + "semaphore" "^1.0.3" + "ws" "^5.1.1" + "xhr" "^2.2.0" + "xtend" "^4.0.1" + +"web3-providers-http@1.10.0": + "integrity" "sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==" + "resolved" "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "abortcontroller-polyfill" "^1.7.3" + "cross-fetch" "^3.1.4" + "es6-promise" "^4.2.8" + "web3-core-helpers" "1.10.0" + +"web3-providers-ipc@1.10.0": + "integrity" "sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==" + "resolved" "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "oboe" "2.1.5" + "web3-core-helpers" "1.10.0" + +"web3-providers-ws@1.10.0": + "integrity" "sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==" + "resolved" "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "eventemitter3" "4.0.4" + "web3-core-helpers" "1.10.0" + "websocket" "^1.0.32" + +"web3-shh@1.10.0": + "integrity" "sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==" + "resolved" "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "web3-core" "1.10.0" + "web3-core-method" "1.10.0" + "web3-core-subscriptions" "1.10.0" + "web3-net" "1.10.0" + +"web3-utils@^1.8.1", "web3-utils@1.10.0": + "integrity" "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==" + "resolved" "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "bn.js" "^5.2.1" + "ethereum-bloom-filters" "^1.0.6" + "ethereumjs-util" "^7.1.0" + "ethjs-unit" "0.1.6" + "number-to-bn" "1.7.0" + "randombytes" "^2.1.0" + "utf8" "3.0.0" + +"web3@1.10.0": + "integrity" "sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==" + "resolved" "https://registry.npmjs.org/web3/-/web3-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "web3-bzz" "1.10.0" + "web3-core" "1.10.0" + "web3-eth" "1.10.0" + "web3-eth-personal" "1.10.0" + "web3-net" "1.10.0" + "web3-shh" "1.10.0" + "web3-utils" "1.10.0" + +"webidl-conversions@^3.0.0": + "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + "version" "3.0.1" + +"webidl-conversions@^4.0.2": + "integrity" "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" + "version" "4.0.2" + +"webidl-conversions@^7.0.0": + "integrity" "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + "version" "7.0.0" + +"webpack-bundle-analyzer@4.7.0": + "integrity" "sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==" + "resolved" "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz" + "version" "4.7.0" + dependencies: + "acorn" "^8.0.4" + "acorn-walk" "^8.0.0" + "chalk" "^4.1.0" + "commander" "^7.2.0" + "gzip-size" "^6.0.0" + "lodash" "^4.17.20" + "opener" "^1.5.2" + "sirv" "^1.0.7" + "ws" "^7.3.1" + +"webpack-sources@^1.4.3": + "integrity" "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==" + "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" + "version" "1.4.3" + dependencies: + "source-list-map" "^2.0.0" + "source-map" "~0.6.1" + +"webrtc-adapter@^7.2.1": + "integrity" "sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A==" + "resolved" "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-7.7.1.tgz" + "version" "7.7.1" + dependencies: + "rtcpeerconnection-shim" "^1.2.15" + "sdp" "^2.12.0" + +"websocket@^1.0.32": + "integrity" "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==" + "resolved" "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz" + "version" "1.0.34" + dependencies: + "bufferutil" "^4.0.1" + "debug" "^2.2.0" + "es5-ext" "^0.10.50" + "typedarray-to-buffer" "^3.1.5" + "utf-8-validate" "^5.0.2" + "yaeti" "^0.0.6" + +"whatwg-encoding@^2.0.0": + "integrity" "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==" + "resolved" "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "iconv-lite" "0.6.3" + +"whatwg-fetch@^2.0.4": + "integrity" "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + "resolved" "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz" + "version" "2.0.4" + +"whatwg-fetch@3.6.2": + "integrity" "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" + "resolved" "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" + "version" "3.6.2" + +"whatwg-mimetype@^3.0.0": + "integrity" "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" + "resolved" "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" + "version" "3.0.0" + +"whatwg-url@^10.0.0": + "integrity" "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz" + "version" "10.0.0" + dependencies: + "tr46" "^3.0.0" + "webidl-conversions" "^7.0.0" + +"whatwg-url@^11.0.0": + "integrity" "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" + "version" "11.0.0" + dependencies: + "tr46" "^3.0.0" + "webidl-conversions" "^7.0.0" + +"whatwg-url@^5.0.0": + "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "tr46" "~0.0.3" + "webidl-conversions" "^3.0.0" + +"whatwg-url@^7.0.0": + "integrity" "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" + "version" "7.1.0" + dependencies: + "lodash.sortby" "^4.7.0" + "tr46" "^1.0.1" + "webidl-conversions" "^4.0.2" + +"which-boxed-primitive@^1.0.2": + "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" + "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + "version" "1.0.2" + 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-collection@^1.0.1": + "integrity" "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==" + "resolved" "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "is-map" "^2.0.1" + "is-set" "^2.0.1" + "is-weakmap" "^2.0.1" + "is-weakset" "^2.0.1" + +"which-module@^2.0.0": + "integrity" "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + "version" "2.0.0" + +"which-typed-array@^1.1.10", "which-typed-array@^1.1.2", "which-typed-array@^1.1.8": + "integrity" "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==" + "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "for-each" "^0.3.3" + "gopd" "^1.0.1" + "has-tostringtag" "^1.0.0" + +"which@^1.2.9": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "isexe" "^2.0.0" + +"which@^2.0.1": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"which@1.2.x": + "integrity" "sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw==" + "resolved" "https://registry.npmjs.org/which/-/which-1.2.14.tgz" + "version" "1.2.14" + dependencies: + "isexe" "^2.0.0" + +"wif@^2.0.6": + "integrity" "sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==" + "resolved" "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "bs58check" "<3.0.0" + +"word-wrap@^1.2.3", "word-wrap@~1.2.3": + "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + "version" "1.2.3" + +"wordwrapjs@^4.0.0": + "integrity" "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==" + "resolved" "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "reduce-flatten" "^2.0.0" + "typical" "^5.2.0" + +"workbox-background-sync@6.5.4": + "integrity" "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==" + "resolved" "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "idb" "^7.0.1" + "workbox-core" "6.5.4" + +"workbox-broadcast-update@6.5.4": + "integrity" "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==" + "resolved" "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "workbox-core" "6.5.4" + +"workbox-build@6.5.4": + "integrity" "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==" + "resolved" "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz" + "version" "6.5.4" dependencies: "@apideck/better-ajv-errors" "^0.3.1" "@babel/core" "^7.11.1" @@ -14547,391 +14650,401 @@ workbox-build@6.5.4: "@rollup/plugin-node-resolve" "^11.2.1" "@rollup/plugin-replace" "^2.4.1" "@surma/rollup-plugin-off-main-thread" "^2.2.3" - ajv "^8.6.0" - common-tags "^1.8.0" - fast-json-stable-stringify "^2.1.0" - fs-extra "^9.0.1" - glob "^7.1.6" - lodash "^4.17.20" - pretty-bytes "^5.3.0" - rollup "^2.43.1" - rollup-plugin-terser "^7.0.0" - source-map "^0.8.0-beta.0" - stringify-object "^3.3.0" - strip-comments "^2.0.1" - tempy "^0.6.0" - upath "^1.2.0" - workbox-background-sync "6.5.4" - workbox-broadcast-update "6.5.4" - workbox-cacheable-response "6.5.4" - workbox-core "6.5.4" - workbox-expiration "6.5.4" - workbox-google-analytics "6.5.4" - workbox-navigation-preload "6.5.4" - workbox-precaching "6.5.4" - workbox-range-requests "6.5.4" - workbox-recipes "6.5.4" - workbox-routing "6.5.4" - workbox-strategies "6.5.4" - workbox-streams "6.5.4" - workbox-sw "6.5.4" - workbox-window "6.5.4" - -workbox-cacheable-response@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz#a5c6ec0c6e2b6f037379198d4ef07d098f7cf137" - integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug== - dependencies: - workbox-core "6.5.4" - -workbox-core@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba" - integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== - -workbox-expiration@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539" - integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ== - dependencies: - idb "^7.0.1" - workbox-core "6.5.4" - -workbox-google-analytics@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d" - integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg== - dependencies: - workbox-background-sync "6.5.4" - workbox-core "6.5.4" - workbox-routing "6.5.4" - workbox-strategies "6.5.4" - -workbox-navigation-preload@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz#ede56dd5f6fc9e860a7e45b2c1a8f87c1c793212" - integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng== - dependencies: - workbox-core "6.5.4" - -workbox-precaching@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72" - integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== - dependencies: - workbox-core "6.5.4" - workbox-routing "6.5.4" - workbox-strategies "6.5.4" - -workbox-range-requests@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399" - integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg== - dependencies: - workbox-core "6.5.4" - -workbox-recipes@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.4.tgz#cca809ee63b98b158b2702dcfb741b5cc3e24acb" - integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA== - dependencies: - workbox-cacheable-response "6.5.4" - workbox-core "6.5.4" - workbox-expiration "6.5.4" - workbox-precaching "6.5.4" - workbox-routing "6.5.4" - workbox-strategies "6.5.4" - -workbox-routing@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da" - integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== - dependencies: - workbox-core "6.5.4" - -workbox-strategies@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d" - integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== - dependencies: - workbox-core "6.5.4" - -workbox-streams@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.4.tgz#1cb3c168a6101df7b5269d0353c19e36668d7d69" - integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg== - dependencies: - workbox-core "6.5.4" - workbox-routing "6.5.4" - -workbox-sw@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736" - integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA== - -workbox-webpack-plugin@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz#baf2d3f4b8f435f3469887cf4fba2b7fac3d0fd7" - integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg== - dependencies: - fast-json-stable-stringify "^2.1.0" - pretty-bytes "^5.4.1" - upath "^1.2.0" - webpack-sources "^1.4.3" - workbox-build "6.5.4" - -workbox-window@6.5.4, workbox-window@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91" - integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug== + "ajv" "^8.6.0" + "common-tags" "^1.8.0" + "fast-json-stable-stringify" "^2.1.0" + "fs-extra" "^9.0.1" + "glob" "^7.1.6" + "lodash" "^4.17.20" + "pretty-bytes" "^5.3.0" + "rollup" "^2.43.1" + "rollup-plugin-terser" "^7.0.0" + "source-map" "^0.8.0-beta.0" + "stringify-object" "^3.3.0" + "strip-comments" "^2.0.1" + "tempy" "^0.6.0" + "upath" "^1.2.0" + "workbox-background-sync" "6.5.4" + "workbox-broadcast-update" "6.5.4" + "workbox-cacheable-response" "6.5.4" + "workbox-core" "6.5.4" + "workbox-expiration" "6.5.4" + "workbox-google-analytics" "6.5.4" + "workbox-navigation-preload" "6.5.4" + "workbox-precaching" "6.5.4" + "workbox-range-requests" "6.5.4" + "workbox-recipes" "6.5.4" + "workbox-routing" "6.5.4" + "workbox-strategies" "6.5.4" + "workbox-streams" "6.5.4" + "workbox-sw" "6.5.4" + "workbox-window" "6.5.4" + +"workbox-cacheable-response@6.5.4": + "integrity" "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==" + "resolved" "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "workbox-core" "6.5.4" + +"workbox-core@6.5.4": + "integrity" "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==" + "resolved" "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz" + "version" "6.5.4" + +"workbox-expiration@6.5.4": + "integrity" "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==" + "resolved" "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "idb" "^7.0.1" + "workbox-core" "6.5.4" + +"workbox-google-analytics@6.5.4": + "integrity" "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==" + "resolved" "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "workbox-background-sync" "6.5.4" + "workbox-core" "6.5.4" + "workbox-routing" "6.5.4" + "workbox-strategies" "6.5.4" + +"workbox-navigation-preload@6.5.4": + "integrity" "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==" + "resolved" "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "workbox-core" "6.5.4" + +"workbox-precaching@6.5.4": + "integrity" "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==" + "resolved" "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "workbox-core" "6.5.4" + "workbox-routing" "6.5.4" + "workbox-strategies" "6.5.4" + +"workbox-range-requests@6.5.4": + "integrity" "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==" + "resolved" "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "workbox-core" "6.5.4" + +"workbox-recipes@6.5.4": + "integrity" "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==" + "resolved" "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "workbox-cacheable-response" "6.5.4" + "workbox-core" "6.5.4" + "workbox-expiration" "6.5.4" + "workbox-precaching" "6.5.4" + "workbox-routing" "6.5.4" + "workbox-strategies" "6.5.4" + +"workbox-routing@6.5.4": + "integrity" "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==" + "resolved" "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "workbox-core" "6.5.4" + +"workbox-strategies@6.5.4": + "integrity" "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==" + "resolved" "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "workbox-core" "6.5.4" + +"workbox-streams@6.5.4": + "integrity" "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==" + "resolved" "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "workbox-core" "6.5.4" + "workbox-routing" "6.5.4" + +"workbox-sw@6.5.4": + "integrity" "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==" + "resolved" "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz" + "version" "6.5.4" + +"workbox-webpack-plugin@^6.5.4": + "integrity" "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==" + "resolved" "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "fast-json-stable-stringify" "^2.1.0" + "pretty-bytes" "^5.4.1" + "upath" "^1.2.0" + "webpack-sources" "^1.4.3" + "workbox-build" "6.5.4" + +"workbox-window@^6.5.4", "workbox-window@6.5.4": + "integrity" "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==" + "resolved" "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz" + "version" "6.5.4" dependencies: "@types/trusted-types" "^2.0.2" - workbox-core "6.5.4" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -ws@7.5.3: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== - -ws@7.5.9, ws@^7.2.0, ws@^7.3.1, ws@^7.4.5, ws@^7.5.1: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -ws@^5.1.1: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" - integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== - dependencies: - async-limiter "~1.0.0" - -ws@^8.2.3, ws@^8.5.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" - integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== - -xhr-request-promise@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" - integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== - dependencies: - xhr-request "^1.1.0" - -xhr-request@^1.0.1, xhr-request@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" - integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== - dependencies: - buffer-to-arraybuffer "^0.0.5" - object-assign "^4.1.1" - query-string "^5.0.1" - simple-get "^2.7.0" - timed-out "^4.0.1" - url-set-query "^1.0.0" - xhr "^2.0.4" - -xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" - integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== - dependencies: - global "~4.4.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== - dependencies: - object-keys "~0.4.0" - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - -yallist@^3.0.0, yallist@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^13.2.4: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^17.3.1: - version "17.6.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" - integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -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== + "workbox-core" "6.5.4" + +"wrap-ansi@^5.1.0": + "integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "ansi-styles" "^3.2.0" + "string-width" "^3.0.0" + "strip-ansi" "^5.0.0" + +"wrap-ansi@^6.2.0": + "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrap-ansi@^7.0.0": + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrappy@1": + "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"write-file-atomic@^4.0.1": + "integrity" "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "imurmurhash" "^0.1.4" + "signal-exit" "^3.0.7" + +"ws@*", "ws@^7.2.0", "ws@^7.3.1", "ws@^7.4.5", "ws@7.4.6": + "integrity" "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" + "version" "7.4.6" + +"ws@^3.0.0": + "integrity" "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==" + "resolved" "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" + "version" "3.3.3" + dependencies: + "async-limiter" "~1.0.0" + "safe-buffer" "~5.1.0" + "ultron" "~1.1.0" + +"ws@^5.1.1": + "integrity" "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==" + "resolved" "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz" + "version" "5.2.3" + dependencies: + "async-limiter" "~1.0.0" + +"ws@^7.5.1": + "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + "version" "7.5.9" + +"ws@^8.2.3": + "integrity" "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz" + "version" "8.11.0" + +"ws@^8.5.0": + "integrity" "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" + "version" "8.13.0" + +"ws@7.5.3": + "integrity" "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz" + "version" "7.5.3" + +"ws@7.5.9": + "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + "version" "7.5.9" + +"xhr-request-promise@^0.1.2": + "integrity" "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==" + "resolved" "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz" + "version" "0.1.3" + dependencies: + "xhr-request" "^1.1.0" + +"xhr-request@^1.0.1", "xhr-request@^1.1.0": + "integrity" "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==" + "resolved" "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "buffer-to-arraybuffer" "^0.0.5" + "object-assign" "^4.1.1" + "query-string" "^5.0.1" + "simple-get" "^2.7.0" + "timed-out" "^4.0.1" + "url-set-query" "^1.0.0" + "xhr" "^2.0.4" + +"xhr@^2.0.4", "xhr@^2.2.0", "xhr@^2.3.3": + "integrity" "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==" + "resolved" "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz" + "version" "2.6.0" + dependencies: + "global" "~4.4.0" + "is-function" "^1.0.1" + "parse-headers" "^2.0.0" + "xtend" "^4.0.0" + +"xml-name-validator@^4.0.0": + "integrity" "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" + "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" + "version" "4.0.0" + +"xmlchars@^2.2.0": + "integrity" "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "resolved" "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + "version" "2.2.0" + +"xtend@^4.0.0", "xtend@^4.0.1", "xtend@~4.0.0", "xtend@~4.0.1": + "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + "version" "4.0.2" + +"xtend@~2.1.1": + "integrity" "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==" + "resolved" "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "object-keys" "~0.4.0" + +"y18n@^4.0.0": + "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + "version" "4.0.3" + +"y18n@^5.0.5": + "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + "version" "5.0.8" + +"yaeti@^0.0.6": + "integrity" "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" + "resolved" "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz" + "version" "0.0.6" + +"yallist@^2.1.2": + "integrity" "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" + "version" "2.1.2" + +"yallist@^3.0.0", "yallist@^3.1.1": + "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + "version" "3.1.1" + +"yallist@^4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" + +"yaml@^1.10.0", "yaml@^1.10.2": + "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + "version" "1.10.2" + +"yargs-parser@^13.1.2": + "integrity" "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" + "version" "13.1.2" + dependencies: + "camelcase" "^5.0.0" + "decamelize" "^1.2.0" + +"yargs-parser@^18.1.2": + "integrity" "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + "version" "18.1.3" + dependencies: + "camelcase" "^5.0.0" + "decamelize" "^1.2.0" + +"yargs-parser@^21.1.1": + "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + "version" "21.1.1" + +"yargs@^13.2.4": + "integrity" "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" + "version" "13.3.2" + dependencies: + "cliui" "^5.0.0" + "find-up" "^3.0.0" + "get-caller-file" "^2.0.1" + "require-directory" "^2.1.1" + "require-main-filename" "^2.0.0" + "set-blocking" "^2.0.0" + "string-width" "^3.0.0" + "which-module" "^2.0.0" + "y18n" "^4.0.0" + "yargs-parser" "^13.1.2" + +"yargs@^15.3.1": + "integrity" "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + "version" "15.4.1" + dependencies: + "cliui" "^6.0.0" + "decamelize" "^1.2.0" + "find-up" "^4.1.0" + "get-caller-file" "^2.0.1" + "require-directory" "^2.1.1" + "require-main-filename" "^2.0.0" + "set-blocking" "^2.0.0" + "string-width" "^4.2.0" + "which-module" "^2.0.0" + "y18n" "^4.0.0" + "yargs-parser" "^18.1.2" + +"yargs@^17.3.1": + "integrity" "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz" + "version" "17.6.2" + dependencies: + "cliui" "^8.0.1" + "escalade" "^3.1.1" + "get-caller-file" "^2.0.5" + "require-directory" "^2.1.1" + "string-width" "^4.2.3" + "y18n" "^5.0.5" + "yargs-parser" "^21.1.1" + +"yauzl@^2.10.0": + "integrity" "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==" + "resolved" "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + "version" "2.10.0" + dependencies: + "buffer-crc32" "~0.2.3" + "fd-slicer" "~1.1.0" + +"yn@3.1.1": + "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + "version" "3.1.1" + +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" From 35949a12f4d524b5b0348b3d621031504422f54c Mon Sep 17 00:00:00 2001 From: bannik Date: Wed, 9 Aug 2023 17:34:30 +0200 Subject: [PATCH 408/422] fixing merge --- .env.example | 5 - package-lock.json | 252 +++++++++++++++++++++++++++++++++++++++++ public/images/logo.svg | 16 --- 3 files changed, 252 insertions(+), 21 deletions(-) diff --git a/.env.example b/.env.example index 58dad70009..cfa64d7195 100644 --- a/.env.example +++ b/.env.example @@ -28,14 +28,9 @@ NEXT_PUBLIC_WC_PROJECT_ID= # E2E tests NEXT_PUBLIC_CYPRESS_MNEMONIC= -<<<<<<< HEAD # Safe Gelato relay service NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_PRODUCTION= NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING= # Redefine NEXT_PUBLIC_REDEFINE_API= -======= -# Chain -NEXT_DEFAULT_CHAINID= ->>>>>>> b6f80a27 (oryy rebranding) diff --git a/package-lock.json b/package-lock.json index 43d1854cef..c0af3f6e42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38874,6 +38874,186 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/@next/swc-android-arm-eabi": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.0.tgz", + "integrity": "sha512-hbneH8DNRB2x0Nf5fPCYoL8a0osvdTCe4pvOc9Rv5CpDsoOlf8BWBs2OWpeP0U2BktGvIsuUhmISmdYYGyrvTw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-android-arm64": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.0.tgz", + "integrity": "sha512-1eEk91JHjczcJomxJ8X0XaUeNcp5Lx1U2Ic7j15ouJ83oRX+3GIslOuabW2oPkSgXbHkThMClhirKpvG98kwZg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.0.tgz", + "integrity": "sha512-iwMNFsrAPjfedjKDv9AXPAV16PWIomP3qw/FfPaxkDVRbUls7BNdofBLzkQmqxqWh93WrawLwaqyXpJuAaiwJA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-freebsd-x64": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.0.tgz", + "integrity": "sha512-gRiAw8g3Akf6niTDLEm1Emfa7jXDjvaAj/crDO8hKASKA4Y1fS4kbi/tyWw5VtoFI4mUzRmCPmZ8eL0tBSG58A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm-gnueabihf": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.0.tgz", + "integrity": "sha512-/TJZkxaIpeEwnXh6A40trgwd40C5+LJroLUOEQwMOJdavLl62PjCA6dGl1pgooWLCIb5YdBQ0EG4ylzvLwS2+Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.0.tgz", + "integrity": "sha512-++WAB4ElXCSOKG9H8r4ENF8EaV+w0QkrpjehmryFkQXmt5juVXz+nKDVlCRMwJU7A1O0Mie82XyEoOrf6Np1pA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.0.tgz", + "integrity": "sha512-XrqkHi/VglEn5zs2CYK6ofJGQySrd+Lr4YdmfJ7IhsCnMKkQY1ma9Hv5THwhZVof3e+6oFHrQ9bWrw9K4WTjFA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.0.tgz", + "integrity": "sha512-MyhHbAKVjpn065WzRbqpLu2krj4kHLi6RITQdD1ee+uxq9r2yg5Qe02l24NxKW+1/lkmpusl4Y5Lks7rBiJn4w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.0.tgz", + "integrity": "sha512-Tz1tJZ5egE0S/UqCd5V6ZPJsdSzv/8aa7FkwFmIJ9neLS8/00za+OY5pq470iZQbPrkTwpKzmfTTIPRVD5iqDg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.0.tgz", + "integrity": "sha512-0iRO/CPMCdCYUzuH6wXLnsfJX1ykBX4emOOvH0qIgtiZM0nVYbF8lkEyY2ph4XcsurpinS+ziWuYCXVqrOSqiw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.0.tgz", + "integrity": "sha512-8A26RJVcJHwIKm8xo/qk2ePRquJ6WCI2keV2qOW/Qm+ZXrPXHMIWPYABae/nKN243YFBNyPiHytjX37VrcpUhg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.0.tgz", + "integrity": "sha512-OI14ozFLThEV3ey6jE47zrzSTV/6eIMsvbwozo+XfdWqOPwQ7X00YkRx4GVMKMC0rM44oGS2gmwMKYpe4EblnA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } }, "dependencies": { @@ -63735,6 +63915,78 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true + }, + "@next/swc-android-arm-eabi": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.0.tgz", + "integrity": "sha512-hbneH8DNRB2x0Nf5fPCYoL8a0osvdTCe4pvOc9Rv5CpDsoOlf8BWBs2OWpeP0U2BktGvIsuUhmISmdYYGyrvTw==", + "optional": true + }, + "@next/swc-android-arm64": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.0.tgz", + "integrity": "sha512-1eEk91JHjczcJomxJ8X0XaUeNcp5Lx1U2Ic7j15ouJ83oRX+3GIslOuabW2oPkSgXbHkThMClhirKpvG98kwZg==", + "optional": true + }, + "@next/swc-darwin-x64": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.0.tgz", + "integrity": "sha512-iwMNFsrAPjfedjKDv9AXPAV16PWIomP3qw/FfPaxkDVRbUls7BNdofBLzkQmqxqWh93WrawLwaqyXpJuAaiwJA==", + "optional": true + }, + "@next/swc-freebsd-x64": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.0.tgz", + "integrity": "sha512-gRiAw8g3Akf6niTDLEm1Emfa7jXDjvaAj/crDO8hKASKA4Y1fS4kbi/tyWw5VtoFI4mUzRmCPmZ8eL0tBSG58A==", + "optional": true + }, + "@next/swc-linux-arm-gnueabihf": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.0.tgz", + "integrity": "sha512-/TJZkxaIpeEwnXh6A40trgwd40C5+LJroLUOEQwMOJdavLl62PjCA6dGl1pgooWLCIb5YdBQ0EG4ylzvLwS2+Q==", + "optional": true + }, + "@next/swc-linux-arm64-gnu": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.0.tgz", + "integrity": "sha512-++WAB4ElXCSOKG9H8r4ENF8EaV+w0QkrpjehmryFkQXmt5juVXz+nKDVlCRMwJU7A1O0Mie82XyEoOrf6Np1pA==", + "optional": true + }, + "@next/swc-linux-arm64-musl": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.0.tgz", + "integrity": "sha512-XrqkHi/VglEn5zs2CYK6ofJGQySrd+Lr4YdmfJ7IhsCnMKkQY1ma9Hv5THwhZVof3e+6oFHrQ9bWrw9K4WTjFA==", + "optional": true + }, + "@next/swc-linux-x64-gnu": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.0.tgz", + "integrity": "sha512-MyhHbAKVjpn065WzRbqpLu2krj4kHLi6RITQdD1ee+uxq9r2yg5Qe02l24NxKW+1/lkmpusl4Y5Lks7rBiJn4w==", + "optional": true + }, + "@next/swc-linux-x64-musl": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.0.tgz", + "integrity": "sha512-Tz1tJZ5egE0S/UqCd5V6ZPJsdSzv/8aa7FkwFmIJ9neLS8/00za+OY5pq470iZQbPrkTwpKzmfTTIPRVD5iqDg==", + "optional": true + }, + "@next/swc-win32-arm64-msvc": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.0.tgz", + "integrity": "sha512-0iRO/CPMCdCYUzuH6wXLnsfJX1ykBX4emOOvH0qIgtiZM0nVYbF8lkEyY2ph4XcsurpinS+ziWuYCXVqrOSqiw==", + "optional": true + }, + "@next/swc-win32-ia32-msvc": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.0.tgz", + "integrity": "sha512-8A26RJVcJHwIKm8xo/qk2ePRquJ6WCI2keV2qOW/Qm+ZXrPXHMIWPYABae/nKN243YFBNyPiHytjX37VrcpUhg==", + "optional": true + }, + "@next/swc-win32-x64-msvc": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.0.tgz", + "integrity": "sha512-OI14ozFLThEV3ey6jE47zrzSTV/6eIMsvbwozo+XfdWqOPwQ7X00YkRx4GVMKMC0rM44oGS2gmwMKYpe4EblnA==", + "optional": true } } } diff --git a/public/images/logo.svg b/public/images/logo.svg index 665d7aa55f..c4df7debe5 100644 --- a/public/images/logo.svg +++ b/public/images/logo.svg @@ -1,18 +1,3 @@ -<<<<<<< HEAD - - - - - - - - - - - - - -======= @@ -26,5 +11,4 @@ ->>>>>>> b6f80a27 (oryy rebranding) From 2c592dbf1433085ff24fb55de70c7ade12eca661 Mon Sep 17 00:00:00 2001 From: bannik Date: Wed, 9 Aug 2023 17:36:30 +0200 Subject: [PATCH 409/422] fixing merge --- src/components/common/ConnectWallet/ConnectionCenter.tsx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/components/common/ConnectWallet/ConnectionCenter.tsx b/src/components/common/ConnectWallet/ConnectionCenter.tsx index 21c53bd88d..6d0296cfcb 100644 --- a/src/components/common/ConnectWallet/ConnectionCenter.tsx +++ b/src/components/common/ConnectWallet/ConnectionCenter.tsx @@ -5,7 +5,6 @@ import { useState, type MouseEvent, type ReactElement } from 'react' import KeyholeIcon from '@/components/common/icons/KeyholeIcon' import WalletDetails from '@/components/common/ConnectWallet/WalletDetails' -import PairingDetails from '@/components/common/PairingDetails' import css from '@/components/common/ConnectWallet/styles.module.css' import { useCurrentChain } from '@/hooks/useChains' @@ -61,14 +60,6 @@ const ConnectionCenter = (): ReactElement => { > - - {isSupported && ( - - - - - - )} From 987509ade32cf381f200b6550ddc7339f48ec192 Mon Sep 17 00:00:00 2001 From: bannik Date: Wed, 9 Aug 2023 17:45:12 +0200 Subject: [PATCH 410/422] fixing merge --- src/services/contracts/deployments.ts | 48 +++++++++++++++++++++++++ src/services/contracts/safeContracts.ts | 7 +++- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/services/contracts/deployments.ts diff --git a/src/services/contracts/deployments.ts b/src/services/contracts/deployments.ts new file mode 100644 index 0000000000..e81a332d86 --- /dev/null +++ b/src/services/contracts/deployments.ts @@ -0,0 +1,48 @@ +const deployments: Record = { + '16': { + compatibilityFallBackHandler: '0xe5F3b2036e030E921bcA9D871DbC34C6b0792077', + gnosisSafe: '0xab451EA38C6001D202fbE7155C6fCDAcb1713244', + gnosisSafeL2: '0x7a72bA633DaF405425c0d7343E4b802B05d87bc6', + multiSend: '0x998739BFdAAdde7C933B942a68053933098f9EDa', + multiSendCallOnly: '0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B', + proxyFactory: '0xB20452a41ea9Aca263afce6B0C7CC0d5Fd410D62', + signMessageLib: '0x1CB1F7f320583Fa1A0dB7A579c34547cfc0f0d15', + simulateTxAccessor: '0x727a77a074D1E6c4530e814F89E618a3298FC044', + createCall: '0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d', + }, + '19': { + compatibilityFallBackHandler: '0xe5F3b2036e030E921bcA9D871DbC34C6b0792077', + gnosisSafe: '0xab451EA38C6001D202fbE7155C6fCDAcb1713244', + gnosisSafeL2: '0x7a72bA633DaF405425c0d7343E4b802B05d87bc6', + multiSend: '0x998739BFdAAdde7C933B942a68053933098f9EDa', + multiSendCallOnly: '0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B', + proxyFactory: '0xB20452a41ea9Aca263afce6B0C7CC0d5Fd410D62', + signMessageLib: '0x1CB1F7f320583Fa1A0dB7A579c34547cfc0f0d15', + simulateTxAccessor: '0x727a77a074D1E6c4530e814F89E618a3298FC044', + createCall: '0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d', + }, + '50': { + compatibilityFallBackHandler: '0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4', + gnosisSafe: '0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552', + gnosisSafeL2: '0x3E5c63644E683549055b9Be8653de26E0B4CD36E', + multiSend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761', + multiSendCallOnly: '0x40A2aCCbd92BCA938b02010E17A5b8929b49130D', + proxyFactory: '0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2', + signMessageLib: '0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2', + simulateTxAccessor: '0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da', + createCall: '0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4', + }, + '51': { + compatibilityFallBackHandler: '0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4', + gnosisSafe: '0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552', + gnosisSafeL2: '0x3E5c63644E683549055b9Be8653de26E0B4CD36E', + multiSend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761', + multiSendCallOnly: '0x40A2aCCbd92BCA938b02010E17A5b8929b49130D', + proxyFactory: '0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2', + signMessageLib: '0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2', + simulateTxAccessor: '0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da', + createCall: '0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4', + }, +} + +export default deployments \ No newline at end of file diff --git a/src/services/contracts/safeContracts.ts b/src/services/contracts/safeContracts.ts index a3ef2c4ffb..9a787ec1cc 100644 --- a/src/services/contracts/safeContracts.ts +++ b/src/services/contracts/safeContracts.ts @@ -143,8 +143,13 @@ export const getReadOnlyMultiSendCallOnlyContract = ( ) => { const ethAdapter = createReadOnlyEthersAdapter() + const deployment = getMultiSendCallOnlyContractDeployment(chainId) + if (chainId in deployments) { + deployment.networkAddresses[chainId] = deployments[chainId].multiSendCallOnly + } + return ethAdapter.getMultiSendCallOnlyContract({ - singletonDeployment: getMultiSendCallOnlyContractDeployment(chainId), + singletonDeployment: deployment, ..._getValidatedGetContractProps(chainId, safeVersion), }) } From eff35741f70629bfed434cc8b0b1a6271e52518a Mon Sep 17 00:00:00 2001 From: Dimitris Lamprinos Date: Thu, 5 Jan 2023 16:57:01 +0200 Subject: [PATCH 411/422] Add v1.3.0 --- v1.3.0/compatibility_fallback_handler.json | 430 +++++++ v1.3.0/create_call.json | 173 +++ v1.3.0/gnosis_safe.json | 1138 ++++++++++++++++++ v1.3.0/gnosis_safe_l2.json | 1243 ++++++++++++++++++++ v1.3.0/multi_send.json | 125 ++ v1.3.0/multi_send_call_only.json | 120 ++ v1.3.0/proxy_factory.json | 268 +++++ v1.3.0/sign_message_lib.json | 151 +++ v1.3.0/simulate_tx_accessor.json | 156 +++ 9 files changed, 3804 insertions(+) create mode 100644 v1.3.0/compatibility_fallback_handler.json create mode 100644 v1.3.0/create_call.json create mode 100644 v1.3.0/gnosis_safe.json create mode 100644 v1.3.0/gnosis_safe_l2.json create mode 100644 v1.3.0/multi_send.json create mode 100644 v1.3.0/multi_send_call_only.json create mode 100644 v1.3.0/proxy_factory.json create mode 100644 v1.3.0/sign_message_lib.json create mode 100644 v1.3.0/simulate_tx_accessor.json diff --git a/v1.3.0/compatibility_fallback_handler.json b/v1.3.0/compatibility_fallback_handler.json new file mode 100644 index 0000000000..692cb9fd34 --- /dev/null +++ b/v1.3.0/compatibility_fallback_handler.json @@ -0,0 +1,430 @@ +{ + "defaultAddress": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "released": true, + "contractName": "CompatibilityFallbackHandler", + "version": "1.3.0", + "networkAddresses": { + "1": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "3": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "4": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "10": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "11": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "12": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "16": "0xe5F3b2036e030E921bcA9D871DbC34C6b0792077", + "19": "0xe5F3b2036e030E921bcA9D871DbC34C6b0792077", + "25": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "28": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "40": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "41": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "42": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "5": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "50": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "51": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "56": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "61": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "63": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "69": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "82": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "83": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "97": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "100": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "106": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "111": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "122": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "123": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "137": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "246": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "250": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "288": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "300": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "321": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "322": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "336": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "338": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "420": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "588": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "592": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "595": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "599": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "686": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "787": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "1001": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "1008": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "1088": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "1284": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "1285": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "1287": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "1294": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "1807": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "1984": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "2001": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "2002": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "2008": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "2019": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "2020": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "2221": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "2222": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "4002": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "4918": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "4919": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "7341": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "7700": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "8217": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "9000": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "9001": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "10000": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "10001": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "10200": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "11235": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "11437": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "12357": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "42161": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "42170": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "42220": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "43113": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "43114": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "45000": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "47805": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "71401": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "71402": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "73799": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "80001": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "200101": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "200202": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "333999": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "421611": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "421613": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "11155111": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "1313161554": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "1313161555": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "1666600000": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "1666700000": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "11297108099": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "11297108109": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4" + }, + "abi": [ + { + "inputs": [], + "name": "NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "getMessageHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract GnosisSafe", + "name": "safe", + "type": "address" + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "getMessageHashForSafe", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getModules", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_dataHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "targetContract", + "type": "address" + }, + { + "internalType": "bytes", + "name": "calldataPayload", + "type": "bytes" + } + ], + "name": "simulate", + "outputs": [ + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "tokensReceived", + "outputs": [], + "stateMutability": "pure", + "type": "function" + } + ] +} diff --git a/v1.3.0/create_call.json b/v1.3.0/create_call.json new file mode 100644 index 0000000000..4980bfb4f3 --- /dev/null +++ b/v1.3.0/create_call.json @@ -0,0 +1,173 @@ +{ + "defaultAddress": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "released": true, + "contractName": "CreateCall", + "version": "1.3.0", + "networkAddresses": { + "1": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "3": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "4": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "10": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "11": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "12": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "16": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "19": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "25": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "28": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "40": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "41": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "42": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "5": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "50": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "51": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "56": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "61": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "63": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "69": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "82": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "83": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "97": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "100": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "106": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "111": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "122": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "123": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "137": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "246": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "250": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "288": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "300": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "321": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "322": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "336": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "338": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "420": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "588": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "592": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "595": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "599": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "686": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "787": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "1001": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "1008": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "1088": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "1284": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "1285": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "1287": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "1294": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "1807": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "1984": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "2001": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "2002": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "2008": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "2019": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "2020": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "2221": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "2222": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "4002": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "4918": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "4919": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "7341": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "7700": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "8217": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "9000": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "9001": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "10000": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "10001": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "10200": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "11235": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "11437": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "12357": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "42161": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "42170": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "42220": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "43113": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "43114": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "45000": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "47805": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "71401": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "71402": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "73799": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "80001": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "200101": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "200202": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "333999": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "421611": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "421613": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "11155111": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "1313161554": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "1313161555": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "1666600000": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "1666700000": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", + "11297108099": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "11297108109": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4" + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "deploymentData", + "type": "bytes" + } + ], + "name": "performCreate", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "deploymentData", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "performCreate2", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/v1.3.0/gnosis_safe.json b/v1.3.0/gnosis_safe.json new file mode 100644 index 0000000000..a8bd8d053e --- /dev/null +++ b/v1.3.0/gnosis_safe.json @@ -0,0 +1,1138 @@ +{ + "defaultAddress": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "released": true, + "contractName": "GnosisSafe", + "version": "1.3.0", + "networkAddresses": { + "1": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "3": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "4": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "10": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "11": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "12": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "16": "0xab451EA38C6001D202fbE7155C6fCDAcb1713244", + "19": "0xab451EA38C6001D202fbE7155C6fCDAcb1713244", + "25": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "28": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "40": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "41": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "42": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "5": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "50": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "51": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "56": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "61": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "63": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "69": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "82": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "83": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "97": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "100": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "106": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "111": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "122": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "123": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "137": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "246": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "250": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "288": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "300": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "321": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "322": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "336": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "338": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "420": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "588": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "592": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "595": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "599": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "686": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "787": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "1001": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "1008": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "1088": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "1284": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "1285": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "1287": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "1294": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "1807": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "1984": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "2001": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "2002": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "2008": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "2019": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "2020": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "2221": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "2222": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "4002": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "4918": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "4919": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "7341": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "7700": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "8217": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "9000": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "9001": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "10000": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "10001": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "10200": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "11235": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "11437": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "12357": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "42161": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "42170": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "42220": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "43113": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "43114": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "45000": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "47805": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "71401": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "71402": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "73799": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "80001": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "200101": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "200202": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "333999": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "421611": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "421613": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "11155111": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "1313161554": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "1313161555": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "1666600000": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "1666700000": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "11297108099": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "11297108109": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552" + }, + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "AddedOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "approvedHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ApproveHash", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "handler", + "type": "address" + } + ], + "name": "ChangedFallbackHandler", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "guard", + "type": "address" + } + ], + "name": "ChangedGuard", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "ChangedThreshold", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "DisabledModule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "EnabledModule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "txHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "payment", + "type": "uint256" + } + ], + "name": "ExecutionFailure", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "ExecutionFromModuleFailure", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "ExecutionFromModuleSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "txHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "payment", + "type": "uint256" + } + ], + "name": "ExecutionSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "RemovedOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "SafeReceived", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "owners", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "initializer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "fallbackHandler", + "type": "address" + } + ], + "name": "SafeSetup", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + } + ], + "name": "SignMsg", + "type": "event" + }, + { + "stateMutability": "nonpayable", + "type": "fallback" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_threshold", + "type": "uint256" + } + ], + "name": "addOwnerWithThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hashToApprove", + "type": "bytes32" + } + ], + "name": "approveHash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "approvedHashes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_threshold", + "type": "uint256" + } + ], + "name": "changeThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "dataHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signatures", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "requiredSignatures", + "type": "uint256" + } + ], + "name": "checkNSignatures", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "dataHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signatures", + "type": "bytes" + } + ], + "name": "checkSignatures", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "prevModule", + "type": "address" + }, + { + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "disableModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "enableModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "safeTxGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "gasToken", + "type": "address" + }, + { + "internalType": "address", + "name": "refundReceiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "encodeTransactionData", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "safeTxGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "gasToken", + "type": "address" + }, + { + "internalType": "address payable", + "name": "refundReceiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "signatures", + "type": "bytes" + } + ], + "name": "execTransaction", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "execTransactionFromModule", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "execTransactionFromModuleReturnData", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getChainId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "start", + "type": "address" + }, + { + "internalType": "uint256", + "name": "pageSize", + "type": "uint256" + } + ], + "name": "getModulesPaginated", + "outputs": [ + { + "internalType": "address[]", + "name": "array", + "type": "address[]" + }, + { + "internalType": "address", + "name": "next", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "offset", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "getStorageAt", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "safeTxGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "gasToken", + "type": "address" + }, + { + "internalType": "address", + "name": "refundReceiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getTransactionHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "isModuleEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "prevOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_threshold", + "type": "uint256" + } + ], + "name": "removeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "requiredTxGas", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "handler", + "type": "address" + } + ], + "name": "setFallbackHandler", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guard", + "type": "address" + } + ], + "name": "setGuard", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_owners", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "_threshold", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "address", + "name": "fallbackHandler", + "type": "address" + }, + { + "internalType": "address", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "payment", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "paymentReceiver", + "type": "address" + } + ], + "name": "setup", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "signedMessages", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "targetContract", + "type": "address" + }, + { + "internalType": "bytes", + "name": "calldataPayload", + "type": "bytes" + } + ], + "name": "simulateAndRevert", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "prevOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "swapOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ] +} diff --git a/v1.3.0/gnosis_safe_l2.json b/v1.3.0/gnosis_safe_l2.json new file mode 100644 index 0000000000..c7d8a3a56b --- /dev/null +++ b/v1.3.0/gnosis_safe_l2.json @@ -0,0 +1,1243 @@ +{ + "defaultAddress": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "released": true, + "contractName": "GnosisSafeL2", + "version": "1.3.0", + "networkAddresses": { + "1": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "3": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "4": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "5": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "10": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "11": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "12": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "16": "0x7a72bA633DaF405425c0d7343E4b802B05d87bc6", + "19": "0x7a72bA633DaF405425c0d7343E4b802B05d87bc6", + "25": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "28": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "40": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "41": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "42": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "50": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "51": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "56": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "61": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "63": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "69": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "82": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "83": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "97": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "100": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "106": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "111": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "122": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "123": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "137": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "246": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "250": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "288": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "300": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "321": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "322": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "336": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "338": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "420": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "588": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "592": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "595": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "599": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "686": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "787": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "1001": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "1008": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "1088": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "1284": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "1285": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "1287": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "1294": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "1807": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "1984": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "2001": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "2002": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "2008": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "2019": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "2020": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "2221": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "2222": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "4002": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "4918": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "4919": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "7341": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "7700": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "8217": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "9000": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "9001": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "10000": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "10001": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "10200": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "11235": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "11437": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "12357": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "42161": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "42170": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "42220": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "43113": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "43114": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "45000": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "47805": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "71401": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "71402": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "73799": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "80001": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "200101": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "200202": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "333999": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "421611": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "421613": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "11155111": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "1313161554": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "1313161555": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "1666600000": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "1666700000": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "11297108099": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "11297108109": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E" + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "AddedOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "approvedHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ApproveHash", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "handler", + "type": "address" + } + ], + "name": "ChangedFallbackHandler", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "guard", + "type": "address" + } + ], + "name": "ChangedGuard", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "ChangedThreshold", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "DisabledModule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "EnabledModule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "txHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "payment", + "type": "uint256" + } + ], + "name": "ExecutionFailure", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "ExecutionFromModuleFailure", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "ExecutionFromModuleSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "txHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "payment", + "type": "uint256" + } + ], + "name": "ExecutionSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "RemovedOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "module", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "SafeModuleTransaction", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "safeTxGas", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseGas", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "gasToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address payable", + "name": "refundReceiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "signatures", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "additionalInfo", + "type": "bytes" + } + ], + "name": "SafeMultiSigTransaction", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "SafeReceived", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "owners", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "initializer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "fallbackHandler", + "type": "address" + } + ], + "name": "SafeSetup", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + } + ], + "name": "SignMsg", + "type": "event" + }, + { + "stateMutability": "nonpayable", + "type": "fallback" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_threshold", + "type": "uint256" + } + ], + "name": "addOwnerWithThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hashToApprove", + "type": "bytes32" + } + ], + "name": "approveHash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "approvedHashes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_threshold", + "type": "uint256" + } + ], + "name": "changeThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "dataHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signatures", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "requiredSignatures", + "type": "uint256" + } + ], + "name": "checkNSignatures", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "dataHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signatures", + "type": "bytes" + } + ], + "name": "checkSignatures", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "prevModule", + "type": "address" + }, + { + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "disableModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "enableModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "safeTxGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "gasToken", + "type": "address" + }, + { + "internalType": "address", + "name": "refundReceiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "encodeTransactionData", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "safeTxGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "gasToken", + "type": "address" + }, + { + "internalType": "address payable", + "name": "refundReceiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "signatures", + "type": "bytes" + } + ], + "name": "execTransaction", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "execTransactionFromModule", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "execTransactionFromModuleReturnData", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getChainId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "start", + "type": "address" + }, + { + "internalType": "uint256", + "name": "pageSize", + "type": "uint256" + } + ], + "name": "getModulesPaginated", + "outputs": [ + { + "internalType": "address[]", + "name": "array", + "type": "address[]" + }, + { + "internalType": "address", + "name": "next", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "offset", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "getStorageAt", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "safeTxGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "gasToken", + "type": "address" + }, + { + "internalType": "address", + "name": "refundReceiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getTransactionHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "isModuleEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "prevOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_threshold", + "type": "uint256" + } + ], + "name": "removeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "requiredTxGas", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "handler", + "type": "address" + } + ], + "name": "setFallbackHandler", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guard", + "type": "address" + } + ], + "name": "setGuard", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_owners", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "_threshold", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "address", + "name": "fallbackHandler", + "type": "address" + }, + { + "internalType": "address", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "payment", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "paymentReceiver", + "type": "address" + } + ], + "name": "setup", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "signedMessages", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "targetContract", + "type": "address" + }, + { + "internalType": "bytes", + "name": "calldataPayload", + "type": "bytes" + } + ], + "name": "simulateAndRevert", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "prevOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "swapOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ] +} diff --git a/v1.3.0/multi_send.json b/v1.3.0/multi_send.json new file mode 100644 index 0000000000..5ad7d86373 --- /dev/null +++ b/v1.3.0/multi_send.json @@ -0,0 +1,125 @@ +{ + "defaultAddress": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "released": true, + "contractName": "MultiSend", + "version": "1.3.0", + "networkAddresses": { + "1": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "3": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "4": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "10": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "11": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "12": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "16": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "19": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "25": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "28": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "40": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "41": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "42": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "5": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "50": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "51": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "56": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "61": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "63": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "69": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "82": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "83": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "97": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "100": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "106": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "111": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "122": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "123": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "137": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "246": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "250": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "288": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "300": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "321": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "322": "0x6367360366E4c898488091ac315834B779d8f561", + "336": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "338": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "420": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "588": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "592": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "595": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "599": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "686": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "787": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "1001": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "1008": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "1088": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "1284": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "1285": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "1287": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "1294": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "1807": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "1984": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "2001": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "2002": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "2008": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "2019": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "2020": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "2221": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "2222": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "4002": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "4918": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "4919": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "7341": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "7700": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "8217": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "9000": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "9001": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "10000": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "10001": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "10200": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "11235": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "11437": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "12357": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "42161": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "42170": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "42220": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "43113": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "43114": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "45000": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "47805": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "71401": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "71402": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "73799": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "80001": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "200101": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "200202": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "333999": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "421611": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "421613": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "11155111": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "1313161554": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "1313161555": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "1666600000": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "1666700000": "0x998739BFdAAdde7C933B942a68053933098f9EDa", + "11297108099": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "11297108109": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761" + }, + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + } + ], + "name": "multiSend", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ] +} diff --git a/v1.3.0/multi_send_call_only.json b/v1.3.0/multi_send_call_only.json new file mode 100644 index 0000000000..bdf1af2d17 --- /dev/null +++ b/v1.3.0/multi_send_call_only.json @@ -0,0 +1,120 @@ +{ + "defaultAddress": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "released": true, + "contractName": "MultiSendCallOnly", + "version": "1.3.0", + "networkAddresses": { + "1": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "3": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "4": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "5": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "10": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "11": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "12": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "16": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "19": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "25": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "28": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "40": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "41": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "42": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "50": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "51": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "56": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "61": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "63": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "69": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "82": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "83": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "97": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "100": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "106": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "111": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "122": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "123": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "137": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "246": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "250": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "288": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "300": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "321": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "322": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "336": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "338": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "420": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "588": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "592": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "595": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "599": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "686": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "787": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "1001": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "1008": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "1088": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "1284": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "1285": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "1287": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "1294": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "1807": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "1984": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "2001": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "2002": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "2008": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "2019": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "2020": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "2221": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "2222": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "4002": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "4918": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "4919": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "7341": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "7700": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "8217": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "9000": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "9001": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "10000": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "10001": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "10200": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "11235": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "11437": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "12357": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "42161": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "42170": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "42220": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "43113": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "43114": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "45000": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "47805": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "71401": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "71402": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "73799": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "80001": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "200101": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "200202": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "333999": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "421611": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "421613": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "11155111": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "1313161554": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "1313161555": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "1666600000": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "1666700000": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", + "11297108099": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "11297108109": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D" + }, + "abi": [ + { + "inputs": [ + { + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + } + ], + "name": "multiSend", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ] +} diff --git a/v1.3.0/proxy_factory.json b/v1.3.0/proxy_factory.json new file mode 100644 index 0000000000..a4dc62e121 --- /dev/null +++ b/v1.3.0/proxy_factory.json @@ -0,0 +1,268 @@ +{ + "defaultAddress": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "released": true, + "contractName": "GnosisSafeProxyFactory", + "version": "1.3.0", + "networkAddresses": { + "1": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "3": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "4": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "5": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "10": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "11": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "12": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "16": "0xB20452a41ea9Aca263afce6B0C7CC0d5Fd410D62", + "19": "0xB20452a41ea9Aca263afce6B0C7CC0d5Fd410D62", + "25": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "28": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "40": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "41": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "42": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "50": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "51": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "56": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "61": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "63": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "69": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "82": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "83": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "97": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "100": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "106": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "111": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "122": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "123": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "137": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "246": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "250": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "288": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "300": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "321": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "322": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "336": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "338": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "420": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "588": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "592": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "595": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "599": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "686": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "787": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "1001": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "1008": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "1088": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "1284": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "1285": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "1287": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "1294": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "1807": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "1984": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "2001": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "2002": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "2008": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "2019": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "2020": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "2221": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "2222": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "4002": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "4918": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "4919": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "7341": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "7700": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "8217": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "9000": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "9001": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "10000": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "10001": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "10200": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "11235": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "11437": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "12357": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "42161": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "42170": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "42220": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "43113": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "43114": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "45000": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "47805": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "71401": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "71402": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "73799": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "80001": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "200101": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "200202": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "333999": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "421611": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "421613": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "11155111": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "1313161554": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "1313161555": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "1666600000": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "1666700000": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "11297108099": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "11297108109": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2" + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract GnosisSafeProxy", + "name": "proxy", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "singleton", + "type": "address" + } + ], + "name": "ProxyCreation", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_singleton", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initializer", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "saltNonce", + "type": "uint256" + } + ], + "name": "calculateCreateProxyWithNonceAddress", + "outputs": [ + { + "internalType": "contract GnosisSafeProxy", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "singleton", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "createProxy", + "outputs": [ + { + "internalType": "contract GnosisSafeProxy", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_singleton", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initializer", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "saltNonce", + "type": "uint256" + }, + { + "internalType": "contract IProxyCreationCallback", + "name": "callback", + "type": "address" + } + ], + "name": "createProxyWithCallback", + "outputs": [ + { + "internalType": "contract GnosisSafeProxy", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_singleton", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initializer", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "saltNonce", + "type": "uint256" + } + ], + "name": "createProxyWithNonce", + "outputs": [ + { + "internalType": "contract GnosisSafeProxy", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxyCreationCode", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "proxyRuntimeCode", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function" + } + ] +} diff --git a/v1.3.0/sign_message_lib.json b/v1.3.0/sign_message_lib.json new file mode 100644 index 0000000000..fabec32752 --- /dev/null +++ b/v1.3.0/sign_message_lib.json @@ -0,0 +1,151 @@ +{ + "defaultAddress": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "contractName": "SignMessageLib", + "version": "1.3.0", + "released": true, + "networkAddresses": { + "1": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "3": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "4": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "5": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "10": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "11": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "12": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "16": "0x1CB1F7f320583Fa1A0dB7A579c34547cfc0f0d15", + "19": "0x1CB1F7f320583Fa1A0dB7A579c34547cfc0f0d15", + "25": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "28": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "40": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "41": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "42": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "50": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "51": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "56": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "61": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "63": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "69": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "82": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "83": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "97": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "100": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "106": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "111": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "122": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "123": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "137": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "246": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "250": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "288": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "300": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "321": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "322": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "336": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "338": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "420": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "588": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "592": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "595": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "599": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "686": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "787": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "1001": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "1008": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "1088": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "1284": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "1285": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "1287": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "1294": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "1807": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "1984": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "2001": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "2002": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "2008": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "2019": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "2020": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "2221": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "2222": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "4002": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "4918": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "4919": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "7341": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "7700": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "8217": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "9000": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "9001": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "10000": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "10001": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "10200": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "11235": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "11437": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "12357": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "42161": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "42170": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "42220": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "43113": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "43114": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "45000": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "47805": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "71401": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "71402": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "73799": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "80001": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "200101": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "200202": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "421611": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "421613": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "11155111": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "1313161554": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "1313161555": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "1666600000": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "1666700000": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "11297108099": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "11297108109": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2" + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + } + ], + "name": "SignMsg", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "getMessageHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "signMessage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/v1.3.0/simulate_tx_accessor.json b/v1.3.0/simulate_tx_accessor.json new file mode 100644 index 0000000000..18ccc72d6a --- /dev/null +++ b/v1.3.0/simulate_tx_accessor.json @@ -0,0 +1,156 @@ +{ + "defaultAddress": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "released": true, + "contractName": "SimulateTxAccesor", + "version": "1.3.0", + "networkAddresses": { + "1": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "3": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "4": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "5": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "10": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "11": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "12": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "16": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "19": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "25": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "28": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "40": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "41": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "42": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "50": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "51": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "56": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "61": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "63": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "69": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "82": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "83": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "97": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "100": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "106": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "111": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "122": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "123": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "137": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "246": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "250": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "288": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "300": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "321": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "322": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "336": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "338": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "420": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "588": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "592": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "595": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "599": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "686": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "787": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "1001": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "1008": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "1088": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "1284": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "1285": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "1287": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "1294": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "1807": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "1984": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "2001": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "2002": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "2008": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "2019": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "2020": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "2221": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "2222": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "4002": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "4918": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "4919": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "7341": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "7700": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "8217": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "9000": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "9001": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "10000": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "10001": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "10200": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "11235": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "11437": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "12357": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "42161": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "42170": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "42220": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "43113": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "43114": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "45000": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "47805": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "71401": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "71402": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "73799": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "80001": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "200101": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "200202": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "333999": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "421611": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "421613": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "11155111": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "1313161554": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "1313161555": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "1666600000": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "1666700000": "0x727a77a074D1E6c4530e814F89E618a3298FC044", + "11297108099": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "11297108109": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da" + }, + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "simulate", + "outputs": [ + { + "internalType": "uint256", + "name": "estimate", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} From d9e87981536935a36a89262f94db8776f6046507 Mon Sep 17 00:00:00 2001 From: bannik Date: Wed, 9 Aug 2023 17:45:32 +0200 Subject: [PATCH 412/422] fixing merge --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index b8ad5315b5..43c0970c45 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "dev": "next dev", "start": "next dev", "build": "next build", + "stub-contracts": "rimraf node_modules/@gnosis.pm/safe-deployments/dist/assets/v1.3.0 && rimraf node_modules/@gnosis.pm/safe-deployments/dist/assets/v1.3.0 && cp -r v1.3.0 node_modules/@gnosis.pm/safe-deployments/dist/assets/v1.3.0 && cp -r v1.3.0 node_modules/@gnosis.pm/safe-deployments/src/assets/v1.3.0", "export": "next export", "lint": "tsc && next lint", "lint:fix": "next lint --fix", @@ -121,6 +122,7 @@ "jest-environment-jsdom": "^28.1.2", "pre-commit": "^1.2.2", "prettier": "^2.7.0", + "rimraf": "^3.0.2", "ts-node": "^10.8.2", "ts-prune": "^0.10.3", "typechain": "^8.0.0", From 6bd63e0f2a17387607ded495a64fd0bb5f0a36da Mon Sep 17 00:00:00 2001 From: Dimitris Lamprinos Date: Mon, 9 Jan 2023 14:45:43 +0200 Subject: [PATCH 413/422] Update safe-deployment assets --- v1.3.0/compatibility_fallback_handler.json | 2 ++ v1.3.0/create_call.json | 2 ++ v1.3.0/gnosis_safe.json | 2 ++ v1.3.0/gnosis_safe_l2.json | 2 ++ v1.3.0/multi_send.json | 2 ++ v1.3.0/multi_send_call_only.json | 2 ++ v1.3.0/proxy_factory.json | 2 ++ v1.3.0/sign_message_lib.json | 2 ++ v1.3.0/simulate_tx_accessor.json | 2 ++ 9 files changed, 18 insertions(+) diff --git a/v1.3.0/compatibility_fallback_handler.json b/v1.3.0/compatibility_fallback_handler.json index 692cb9fd34..2da6be903a 100644 --- a/v1.3.0/compatibility_fallback_handler.json +++ b/v1.3.0/compatibility_fallback_handler.json @@ -10,6 +10,7 @@ "10": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "11": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", "12": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "14": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "16": "0xe5F3b2036e030E921bcA9D871DbC34C6b0792077", "19": "0xe5F3b2036e030E921bcA9D871DbC34C6b0792077", "25": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", @@ -85,6 +86,7 @@ "43114": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "45000": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", "47805": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", + "54211": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "71401": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "71402": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "73799": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", diff --git a/v1.3.0/create_call.json b/v1.3.0/create_call.json index 4980bfb4f3..fe9c04119a 100644 --- a/v1.3.0/create_call.json +++ b/v1.3.0/create_call.json @@ -10,6 +10,7 @@ "10": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "11": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", "12": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "14": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "16": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "19": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "25": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", @@ -85,6 +86,7 @@ "43114": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "45000": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", "47805": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "54211": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "71401": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "71402": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "73799": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", diff --git a/v1.3.0/gnosis_safe.json b/v1.3.0/gnosis_safe.json index a8bd8d053e..3434052a8c 100644 --- a/v1.3.0/gnosis_safe.json +++ b/v1.3.0/gnosis_safe.json @@ -10,6 +10,7 @@ "10": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "11": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", "12": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "14": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "16": "0xab451EA38C6001D202fbE7155C6fCDAcb1713244", "19": "0xab451EA38C6001D202fbE7155C6fCDAcb1713244", "25": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", @@ -85,6 +86,7 @@ "43114": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "45000": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", "47805": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "54211": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "71401": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "71402": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "73799": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", diff --git a/v1.3.0/gnosis_safe_l2.json b/v1.3.0/gnosis_safe_l2.json index c7d8a3a56b..291879e521 100644 --- a/v1.3.0/gnosis_safe_l2.json +++ b/v1.3.0/gnosis_safe_l2.json @@ -11,6 +11,7 @@ "10": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "11": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", "12": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "14": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "16": "0x7a72bA633DaF405425c0d7343E4b802B05d87bc6", "19": "0x7a72bA633DaF405425c0d7343E4b802B05d87bc6", "25": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", @@ -85,6 +86,7 @@ "43114": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "45000": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", "47805": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", + "54211": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "71401": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "71402": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "73799": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", diff --git a/v1.3.0/multi_send.json b/v1.3.0/multi_send.json index 5ad7d86373..6f79f81e6a 100644 --- a/v1.3.0/multi_send.json +++ b/v1.3.0/multi_send.json @@ -10,6 +10,7 @@ "10": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "11": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", "12": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "14": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "16": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "19": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "25": "0x998739BFdAAdde7C933B942a68053933098f9EDa", @@ -85,6 +86,7 @@ "43114": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "45000": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", "47805": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", + "54211": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "71401": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "71402": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "73799": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", diff --git a/v1.3.0/multi_send_call_only.json b/v1.3.0/multi_send_call_only.json index bdf1af2d17..9a0b1ab18a 100644 --- a/v1.3.0/multi_send_call_only.json +++ b/v1.3.0/multi_send_call_only.json @@ -11,6 +11,7 @@ "10": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "11": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", "12": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "14": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "16": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "19": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "25": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", @@ -85,6 +86,7 @@ "43114": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "45000": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", "47805": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "54211": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "71401": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "71402": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "73799": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", diff --git a/v1.3.0/proxy_factory.json b/v1.3.0/proxy_factory.json index a4dc62e121..4f9cbc9e76 100644 --- a/v1.3.0/proxy_factory.json +++ b/v1.3.0/proxy_factory.json @@ -11,6 +11,7 @@ "10": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "11": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "12": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "14": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "16": "0xB20452a41ea9Aca263afce6B0C7CC0d5Fd410D62", "19": "0xB20452a41ea9Aca263afce6B0C7CC0d5Fd410D62", "25": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", @@ -85,6 +86,7 @@ "43114": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "45000": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "47805": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "54211": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "71401": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "71402": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "73799": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", diff --git a/v1.3.0/sign_message_lib.json b/v1.3.0/sign_message_lib.json index fabec32752..91eaa3bef0 100644 --- a/v1.3.0/sign_message_lib.json +++ b/v1.3.0/sign_message_lib.json @@ -11,6 +11,7 @@ "10": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "11": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", "12": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "14": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "16": "0x1CB1F7f320583Fa1A0dB7A579c34547cfc0f0d15", "19": "0x1CB1F7f320583Fa1A0dB7A579c34547cfc0f0d15", "25": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", @@ -85,6 +86,7 @@ "43114": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "45000": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", "47805": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", + "54211": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "71401": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "71402": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "73799": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", diff --git a/v1.3.0/simulate_tx_accessor.json b/v1.3.0/simulate_tx_accessor.json index 18ccc72d6a..9f4720151c 100644 --- a/v1.3.0/simulate_tx_accessor.json +++ b/v1.3.0/simulate_tx_accessor.json @@ -11,6 +11,7 @@ "10": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "11": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", "12": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "14": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "16": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "19": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "25": "0x727a77a074D1E6c4530e814F89E618a3298FC044", @@ -85,6 +86,7 @@ "43114": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "45000": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", "47805": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", + "54211": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "71401": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "71402": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "73799": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", From 3f919f77f41d92f02d176f6cc3aba6051be05985 Mon Sep 17 00:00:00 2001 From: bannik Date: Sat, 14 Jan 2023 14:43:32 +0100 Subject: [PATCH 414/422] adding NEXT_PUBLIC_IS_ORYY_PRODUCTION var --- src/components/sidebar/SidebarFooter/index.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/sidebar/SidebarFooter/index.tsx b/src/components/sidebar/SidebarFooter/index.tsx index 6624930784..6ddda232d5 100644 --- a/src/components/sidebar/SidebarFooter/index.tsx +++ b/src/components/sidebar/SidebarFooter/index.tsx @@ -39,10 +39,11 @@ const SidebarFooter = (): ReactElement => { dispatch(openCookieBanner({ warningKey: CookieType.UPDATES })) } } + console.log(!IS_PRODUCTION || !process.env.NEXT_PUBLIC_IS_ORYY_PRODUCTION) return ( - {!IS_PRODUCTION && ( + {!IS_PRODUCTION && !process.env.NEXT_PUBLIC_IS_ORYY_PRODUCTION && ( From e3e145a9c5f034956d2cc05924b93e76eb27d9f8 Mon Sep 17 00:00:00 2001 From: bannik Date: Sat, 14 Jan 2023 14:55:35 +0100 Subject: [PATCH 415/422] removing console --- src/components/sidebar/SidebarFooter/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/sidebar/SidebarFooter/index.tsx b/src/components/sidebar/SidebarFooter/index.tsx index 6ddda232d5..e3689e95c4 100644 --- a/src/components/sidebar/SidebarFooter/index.tsx +++ b/src/components/sidebar/SidebarFooter/index.tsx @@ -39,7 +39,6 @@ const SidebarFooter = (): ReactElement => { dispatch(openCookieBanner({ warningKey: CookieType.UPDATES })) } } - console.log(!IS_PRODUCTION || !process.env.NEXT_PUBLIC_IS_ORYY_PRODUCTION) return ( From 9e248fd84a762db11341f681f75c92bea33abf77 Mon Sep 17 00:00:00 2001 From: bannik Date: Sat, 14 Jan 2023 19:53:27 +0100 Subject: [PATCH 416/422] fixing safe apps --- src/hooks/safe-apps/useRankedSafeApps.ts | 2 +- src/hooks/safe-apps/useRemoteSafeApps.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hooks/safe-apps/useRankedSafeApps.ts b/src/hooks/safe-apps/useRankedSafeApps.ts index 7fe4a0849f..97e2b685ed 100644 --- a/src/hooks/safe-apps/useRankedSafeApps.ts +++ b/src/hooks/safe-apps/useRankedSafeApps.ts @@ -17,7 +17,7 @@ const useRankedSafeApps = (safeApps: SafeAppData[], pinnedSafeApps: SafeAppData[ const allRankedApps = rankedPinnedApps .concat(pinnedSafeApps, mostUsedApps, randomApps) // Filter out Featured Apps because they are in their own section - .filter((app) => !app.tags.includes(SafeAppsTag.DASHBOARD_FEATURED)) + .filter((app) => !app.tags?.includes(SafeAppsTag.DASHBOARD_FEATURED)) // Use a Set to remove duplicates return [...new Set(allRankedApps)].slice(0, NUMBER_OF_SAFE_APPS) diff --git a/src/hooks/safe-apps/useRemoteSafeApps.ts b/src/hooks/safe-apps/useRemoteSafeApps.ts index 0cd9bd4d2a..51babe3de7 100644 --- a/src/hooks/safe-apps/useRemoteSafeApps.ts +++ b/src/hooks/safe-apps/useRemoteSafeApps.ts @@ -41,7 +41,7 @@ const useRemoteSafeApps = (tag?: SafeAppsTag): AsyncResult => const apps = useMemo(() => { if (!remoteApps || !tag) return remoteApps - return remoteApps.filter((app) => app.tags.includes(tag)) + return remoteApps.filter((app) => app.tags?.includes(tag)) }, [remoteApps, tag]) const sortedApps = useMemo(() => { From b40cdd3a2d1055c712f7ea1ec4dd3747a9678cb7 Mon Sep 17 00:00:00 2001 From: bannik Date: Wed, 9 Aug 2023 17:45:56 +0200 Subject: [PATCH 417/422] fixing merge --- src/services/contracts/deployments.ts | 48 ------------------------- src/services/contracts/safeContracts.ts | 35 ++++++++++++++---- 2 files changed, 29 insertions(+), 54 deletions(-) delete mode 100644 src/services/contracts/deployments.ts diff --git a/src/services/contracts/deployments.ts b/src/services/contracts/deployments.ts deleted file mode 100644 index e81a332d86..0000000000 --- a/src/services/contracts/deployments.ts +++ /dev/null @@ -1,48 +0,0 @@ -const deployments: Record = { - '16': { - compatibilityFallBackHandler: '0xe5F3b2036e030E921bcA9D871DbC34C6b0792077', - gnosisSafe: '0xab451EA38C6001D202fbE7155C6fCDAcb1713244', - gnosisSafeL2: '0x7a72bA633DaF405425c0d7343E4b802B05d87bc6', - multiSend: '0x998739BFdAAdde7C933B942a68053933098f9EDa', - multiSendCallOnly: '0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B', - proxyFactory: '0xB20452a41ea9Aca263afce6B0C7CC0d5Fd410D62', - signMessageLib: '0x1CB1F7f320583Fa1A0dB7A579c34547cfc0f0d15', - simulateTxAccessor: '0x727a77a074D1E6c4530e814F89E618a3298FC044', - createCall: '0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d', - }, - '19': { - compatibilityFallBackHandler: '0xe5F3b2036e030E921bcA9D871DbC34C6b0792077', - gnosisSafe: '0xab451EA38C6001D202fbE7155C6fCDAcb1713244', - gnosisSafeL2: '0x7a72bA633DaF405425c0d7343E4b802B05d87bc6', - multiSend: '0x998739BFdAAdde7C933B942a68053933098f9EDa', - multiSendCallOnly: '0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B', - proxyFactory: '0xB20452a41ea9Aca263afce6B0C7CC0d5Fd410D62', - signMessageLib: '0x1CB1F7f320583Fa1A0dB7A579c34547cfc0f0d15', - simulateTxAccessor: '0x727a77a074D1E6c4530e814F89E618a3298FC044', - createCall: '0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d', - }, - '50': { - compatibilityFallBackHandler: '0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4', - gnosisSafe: '0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552', - gnosisSafeL2: '0x3E5c63644E683549055b9Be8653de26E0B4CD36E', - multiSend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761', - multiSendCallOnly: '0x40A2aCCbd92BCA938b02010E17A5b8929b49130D', - proxyFactory: '0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2', - signMessageLib: '0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2', - simulateTxAccessor: '0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da', - createCall: '0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4', - }, - '51': { - compatibilityFallBackHandler: '0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4', - gnosisSafe: '0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552', - gnosisSafeL2: '0x3E5c63644E683549055b9Be8653de26E0B4CD36E', - multiSend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761', - multiSendCallOnly: '0x40A2aCCbd92BCA938b02010E17A5b8929b49130D', - proxyFactory: '0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2', - signMessageLib: '0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2', - simulateTxAccessor: '0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da', - createCall: '0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4', - }, -} - -export default deployments \ No newline at end of file diff --git a/src/services/contracts/safeContracts.ts b/src/services/contracts/safeContracts.ts index 9a787ec1cc..7a68535229 100644 --- a/src/services/contracts/safeContracts.ts +++ b/src/services/contracts/safeContracts.ts @@ -16,9 +16,12 @@ import type { GetContractProps, SafeVersion } from '@safe-global/safe-core-sdk-t import { assertValidSafeVersion, createEthersAdapter, createReadOnlyEthersAdapter } from '@/hooks/coreSDK/safeCoreSDK' import type SignMessageLibEthersContract from '@safe-global/safe-ethers-lib/dist/src/contracts/SignMessageLib/SignMessageLibEthersContract' import type CompatibilityFallbackHandlerEthersContract from '@safe-global/safe-ethers-lib/dist/src/contracts/CompatibilityFallbackHandler/CompatibilityFallbackHandlerEthersContract' +<<<<<<< HEAD import type { Web3Provider } from '@ethersproject/providers' import type GnosisSafeContractEthers from '@safe-global/safe-ethers-lib/dist/src/contracts/GnosisSafe/GnosisSafeContractEthers' import type EthersAdapter from '@safe-global/safe-ethers-lib' +======= +>>>>>>> 6b1dace6 (Revert "Stub new deployments in contracts fetch service") // `UNKNOWN` is returned if the mastercopy does not match supported ones // @see https://github.com/safe-global/safe-client-gateway/blob/main/src/routes/safes/handlers/safes.rs#L28-L31 @@ -91,11 +94,19 @@ const getSafeContractDeployment = (chain: ChainInfo, safeVersion: string): Singl ) } +<<<<<<< HEAD export const getReadOnlyGnosisSafeContract = (chain: ChainInfo, safeVersion: string = LATEST_SAFE_VERSION) => { const ethAdapter = createReadOnlyEthersAdapter() return ethAdapter.getSafeContract({ singletonDeployment: getSafeContractDeployment(chain, safeVersion), +======= +export const getGnosisSafeContractInstance = (chain: ChainInfo, safeVersion: string = LATEST_SAFE_VERSION) => { + const ethAdapter = createEthersAdapter() + + return ethAdapter.getSafeContract({ + singletonDeployment: _getSafeContractDeployment(chain, safeVersion), +>>>>>>> 6b1dace6 (Revert "Stub new deployments in contracts fetch service") ..._getValidatedGetContractProps(chain.chainId, safeVersion), }) } @@ -112,6 +123,18 @@ export const getMultiSendContractAddress = (chainId: string): string | undefined return deployment?.networkAddresses[chainId] } +<<<<<<< HEAD +======= +export const getMultiSendContractInstance = (chainId: string, safeVersion: string = LATEST_SAFE_VERSION) => { + const ethAdapter = createEthersAdapter() + + return ethAdapter.getMultiSendContract({ + singletonDeployment: getMultiSendContractDeployment(chainId), + ..._getValidatedGetContractProps(chainId, safeVersion), + }) +} + +>>>>>>> 6b1dace6 (Revert "Stub new deployments in contracts fetch service") // MultiSendCallOnly const getMultiSendCallOnlyContractDeployment = (chainId: string) => { @@ -143,13 +166,8 @@ export const getReadOnlyMultiSendCallOnlyContract = ( ) => { const ethAdapter = createReadOnlyEthersAdapter() - const deployment = getMultiSendCallOnlyContractDeployment(chainId) - if (chainId in deployments) { - deployment.networkAddresses[chainId] = deployments[chainId].multiSendCallOnly - } - return ethAdapter.getMultiSendCallOnlyContract({ - singletonDeployment: deployment, + singletonDeployment: getMultiSendCallOnlyContractDeployment(chainId), ..._getValidatedGetContractProps(chainId, safeVersion), }) } @@ -168,8 +186,13 @@ const getProxyFactoryContractDeployment = (chainId: string) => { ) } +<<<<<<< HEAD export const getReadOnlyProxyFactoryContract = (chainId: string, safeVersion: string = LATEST_SAFE_VERSION) => { const ethAdapter = createReadOnlyEthersAdapter() +======= +export const getProxyFactoryContractInstance = (chainId: string, safeVersion: string = LATEST_SAFE_VERSION) => { + const ethAdapter = createEthersAdapter() +>>>>>>> 6b1dace6 (Revert "Stub new deployments in contracts fetch service") return ethAdapter.getSafeProxyFactoryContract({ singletonDeployment: getProxyFactoryContractDeployment(chainId), From 8cc44c54e1cb7f6c2947465fbd5c4241c2eb7f11 Mon Sep 17 00:00:00 2001 From: bannik Date: Wed, 9 Aug 2023 17:46:44 +0200 Subject: [PATCH 418/422] fixing merge --- src/services/contracts/safeContracts.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/services/contracts/safeContracts.ts b/src/services/contracts/safeContracts.ts index 7a68535229..92562de8ed 100644 --- a/src/services/contracts/safeContracts.ts +++ b/src/services/contracts/safeContracts.ts @@ -186,13 +186,8 @@ const getProxyFactoryContractDeployment = (chainId: string) => { ) } -<<<<<<< HEAD export const getReadOnlyProxyFactoryContract = (chainId: string, safeVersion: string = LATEST_SAFE_VERSION) => { const ethAdapter = createReadOnlyEthersAdapter() -======= -export const getProxyFactoryContractInstance = (chainId: string, safeVersion: string = LATEST_SAFE_VERSION) => { - const ethAdapter = createEthersAdapter() ->>>>>>> 6b1dace6 (Revert "Stub new deployments in contracts fetch service") return ethAdapter.getSafeProxyFactoryContract({ singletonDeployment: getProxyFactoryContractDeployment(chainId), From c0789ed28241159ad34a8bcec579d38dee4c706d Mon Sep 17 00:00:00 2001 From: bannik Date: Wed, 9 Aug 2023 17:48:10 +0200 Subject: [PATCH 419/422] fixing merge --- src/services/contracts/safeContracts.ts | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/src/services/contracts/safeContracts.ts b/src/services/contracts/safeContracts.ts index 92562de8ed..a3ef2c4ffb 100644 --- a/src/services/contracts/safeContracts.ts +++ b/src/services/contracts/safeContracts.ts @@ -16,12 +16,9 @@ import type { GetContractProps, SafeVersion } from '@safe-global/safe-core-sdk-t import { assertValidSafeVersion, createEthersAdapter, createReadOnlyEthersAdapter } from '@/hooks/coreSDK/safeCoreSDK' import type SignMessageLibEthersContract from '@safe-global/safe-ethers-lib/dist/src/contracts/SignMessageLib/SignMessageLibEthersContract' import type CompatibilityFallbackHandlerEthersContract from '@safe-global/safe-ethers-lib/dist/src/contracts/CompatibilityFallbackHandler/CompatibilityFallbackHandlerEthersContract' -<<<<<<< HEAD import type { Web3Provider } from '@ethersproject/providers' import type GnosisSafeContractEthers from '@safe-global/safe-ethers-lib/dist/src/contracts/GnosisSafe/GnosisSafeContractEthers' import type EthersAdapter from '@safe-global/safe-ethers-lib' -======= ->>>>>>> 6b1dace6 (Revert "Stub new deployments in contracts fetch service") // `UNKNOWN` is returned if the mastercopy does not match supported ones // @see https://github.com/safe-global/safe-client-gateway/blob/main/src/routes/safes/handlers/safes.rs#L28-L31 @@ -94,19 +91,11 @@ const getSafeContractDeployment = (chain: ChainInfo, safeVersion: string): Singl ) } -<<<<<<< HEAD export const getReadOnlyGnosisSafeContract = (chain: ChainInfo, safeVersion: string = LATEST_SAFE_VERSION) => { const ethAdapter = createReadOnlyEthersAdapter() return ethAdapter.getSafeContract({ singletonDeployment: getSafeContractDeployment(chain, safeVersion), -======= -export const getGnosisSafeContractInstance = (chain: ChainInfo, safeVersion: string = LATEST_SAFE_VERSION) => { - const ethAdapter = createEthersAdapter() - - return ethAdapter.getSafeContract({ - singletonDeployment: _getSafeContractDeployment(chain, safeVersion), ->>>>>>> 6b1dace6 (Revert "Stub new deployments in contracts fetch service") ..._getValidatedGetContractProps(chain.chainId, safeVersion), }) } @@ -123,18 +112,6 @@ export const getMultiSendContractAddress = (chainId: string): string | undefined return deployment?.networkAddresses[chainId] } -<<<<<<< HEAD -======= -export const getMultiSendContractInstance = (chainId: string, safeVersion: string = LATEST_SAFE_VERSION) => { - const ethAdapter = createEthersAdapter() - - return ethAdapter.getMultiSendContract({ - singletonDeployment: getMultiSendContractDeployment(chainId), - ..._getValidatedGetContractProps(chainId, safeVersion), - }) -} - ->>>>>>> 6b1dace6 (Revert "Stub new deployments in contracts fetch service") // MultiSendCallOnly const getMultiSendCallOnlyContractDeployment = (chainId: string) => { From 051cebd40e60f503375814d186c7318ed3c099fe Mon Sep 17 00:00:00 2001 From: Dimitris Lamprinos Date: Thu, 10 Aug 2023 13:36:33 +0300 Subject: [PATCH 420/422] Run prettier --- src/components/common/ConnectWallet/ConnectionCenter.tsx | 2 +- .../steps/StatusStep/LoadingSpinner/styles.module.css | 2 +- src/components/safe-apps/types.ts | 2 +- src/services/pairing/module.ts | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/common/ConnectWallet/ConnectionCenter.tsx b/src/components/common/ConnectWallet/ConnectionCenter.tsx index 6d0296cfcb..babff2ea97 100644 --- a/src/components/common/ConnectWallet/ConnectionCenter.tsx +++ b/src/components/common/ConnectWallet/ConnectionCenter.tsx @@ -1,4 +1,4 @@ -import { Popover, ButtonBase, Typography, Paper, Divider, Box } from '@mui/material' +import { Popover, ButtonBase, Typography, Paper } from '@mui/material' import ExpandMoreIcon from '@mui/icons-material/ExpandMore' import ExpandLessIcon from '@mui/icons-material/ExpandLess' import { useState, type MouseEvent, type ReactElement } from 'react' diff --git a/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css b/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css index 757209a779..5fb6546b67 100644 --- a/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css +++ b/src/components/new-safe/create/steps/StatusStep/LoadingSpinner/styles.module.css @@ -23,7 +23,7 @@ top: 0; width: 20px; height: 20px; - background-color: #4059FE; + background-color: #4059fe; transition: background-color 0.1s; } diff --git a/src/components/safe-apps/types.ts b/src/components/safe-apps/types.ts index deffda73aa..b740eda036 100644 --- a/src/components/safe-apps/types.ts +++ b/src/components/safe-apps/types.ts @@ -40,7 +40,7 @@ const FEATURES = [ 'speaker-selection', ] -export type AllowedFeatures = typeof FEATURES[number] +export type AllowedFeatures = (typeof FEATURES)[number] export const isBrowserFeature = (featureKey: string): featureKey is AllowedFeatures => { return FEATURES.includes(featureKey as AllowedFeatures) diff --git a/src/services/pairing/module.ts b/src/services/pairing/module.ts index d4187c8644..fc4d62ef59 100644 --- a/src/services/pairing/module.ts +++ b/src/services/pairing/module.ts @@ -56,11 +56,11 @@ const pairingModule = (): WalletInit => { public chains: Chain[] public disconnect: EIP1193Provider['disconnect'] // @ts-expect-error - 'emit' does not exist on `typeof EventEmitter` - public emit: typeof EventEmitter['emit'] + public emit: (typeof EventEmitter)['emit'] // @ts-expect-error - 'on' does not exist on `typeof EventEmitter` - public on: typeof EventEmitter['on'] + public on: (typeof EventEmitter)['on'] // @ts-expect-error - 'removeListener' does not exist on `typeof EventEmitter` - public removeListener: typeof EventEmitter['removeListener'] + public removeListener: (typeof EventEmitter)['removeListener'] private disconnected$: InstanceType private providers: Record> From b5293bb15c9087879d6b7cc20eab6b3ff44dab77 Mon Sep 17 00:00:00 2001 From: bannik Date: Thu, 10 Aug 2023 16:08:41 +0200 Subject: [PATCH 421/422] oryy mentions --- src/components/dashboard/CreationDialog/index.tsx | 2 +- src/components/welcome/NewSafe.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/dashboard/CreationDialog/index.tsx b/src/components/dashboard/CreationDialog/index.tsx index 07a417f4e5..f4f371b27f 100644 --- a/src/components/dashboard/CreationDialog/index.tsx +++ b/src/components/dashboard/CreationDialog/index.tsx @@ -44,7 +44,7 @@ const CreationDialog = () => { - Welcome to {'Safe{Wallet}'}! + Welcome to Oryy! Congratulations on your first step to truly unlock ownership. Enjoy the experience and discover our app. diff --git a/src/components/welcome/NewSafe.tsx b/src/components/welcome/NewSafe.tsx index 0e32f9ef15..2e96b64852 100644 --- a/src/components/welcome/NewSafe.tsx +++ b/src/components/welcome/NewSafe.tsx @@ -73,7 +73,7 @@ const NewSafe = () => { color="static.main" mb={1} > - Welcome to {'Safe{Wallet}'} + Welcome to Oryy From befb35e9a419af7d45d4f4fa9d69e090c4ee0768 Mon Sep 17 00:00:00 2001 From: Dimitris Lamprinos Date: Thu, 10 Aug 2023 17:44:37 +0300 Subject: [PATCH 422/422] Update v1.3.0 contracts --- v1.3.0/compatibility_fallback_handler.json | 5 ++--- v1.3.0/create_call.json | 1 - v1.3.0/gnosis_safe.json | 5 ++--- v1.3.0/gnosis_safe_l2.json | 5 ++--- v1.3.0/multi_send.json | 1 - v1.3.0/multi_send_call_only.json | 1 - v1.3.0/proxy_factory.json | 5 ++--- v1.3.0/sign_message_lib.json | 5 ++--- v1.3.0/simulate_tx_accessor.json | 1 - 9 files changed, 10 insertions(+), 19 deletions(-) diff --git a/v1.3.0/compatibility_fallback_handler.json b/v1.3.0/compatibility_fallback_handler.json index 2da6be903a..4d3b18cf7d 100644 --- a/v1.3.0/compatibility_fallback_handler.json +++ b/v1.3.0/compatibility_fallback_handler.json @@ -11,8 +11,8 @@ "11": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", "12": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", "14": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", - "16": "0xe5F3b2036e030E921bcA9D871DbC34C6b0792077", - "19": "0xe5F3b2036e030E921bcA9D871DbC34C6b0792077", + "16": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", + "19": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "25": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "28": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "40": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", @@ -86,7 +86,6 @@ "43114": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "45000": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", "47805": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", - "54211": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "71401": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "71402": "0x017062a1dE2FE6b99BE3d9d37841FeD19F573804", "73799": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", diff --git a/v1.3.0/create_call.json b/v1.3.0/create_call.json index fe9c04119a..1572734599 100644 --- a/v1.3.0/create_call.json +++ b/v1.3.0/create_call.json @@ -86,7 +86,6 @@ "43114": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "45000": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", "47805": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", - "54211": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "71401": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "71402": "0xB19D6FFc2182150F8Eb585b79D4ABcd7C5640A9d", "73799": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", diff --git a/v1.3.0/gnosis_safe.json b/v1.3.0/gnosis_safe.json index 3434052a8c..02cd332bb0 100644 --- a/v1.3.0/gnosis_safe.json +++ b/v1.3.0/gnosis_safe.json @@ -11,8 +11,8 @@ "11": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", "12": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", "14": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", - "16": "0xab451EA38C6001D202fbE7155C6fCDAcb1713244", - "19": "0xab451EA38C6001D202fbE7155C6fCDAcb1713244", + "16": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", + "19": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "25": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "28": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "40": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", @@ -86,7 +86,6 @@ "43114": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "45000": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", "47805": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", - "54211": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "71401": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "71402": "0x69f4D1788e39c87893C980c06EdF4b7f686e2938", "73799": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", diff --git a/v1.3.0/gnosis_safe_l2.json b/v1.3.0/gnosis_safe_l2.json index 291879e521..2b538daca0 100644 --- a/v1.3.0/gnosis_safe_l2.json +++ b/v1.3.0/gnosis_safe_l2.json @@ -12,8 +12,8 @@ "11": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", "12": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", "14": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", - "16": "0x7a72bA633DaF405425c0d7343E4b802B05d87bc6", - "19": "0x7a72bA633DaF405425c0d7343E4b802B05d87bc6", + "16": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", + "19": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "25": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "28": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "40": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", @@ -86,7 +86,6 @@ "43114": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "45000": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", "47805": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", - "54211": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "71401": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "71402": "0xfb1bffC9d739B8D520DaF37dF666da4C687191EA", "73799": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", diff --git a/v1.3.0/multi_send.json b/v1.3.0/multi_send.json index 6f79f81e6a..661aef1e6a 100644 --- a/v1.3.0/multi_send.json +++ b/v1.3.0/multi_send.json @@ -86,7 +86,6 @@ "43114": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "45000": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", "47805": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", - "54211": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "71401": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "71402": "0x998739BFdAAdde7C933B942a68053933098f9EDa", "73799": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", diff --git a/v1.3.0/multi_send_call_only.json b/v1.3.0/multi_send_call_only.json index 9a0b1ab18a..c638ff02a5 100644 --- a/v1.3.0/multi_send_call_only.json +++ b/v1.3.0/multi_send_call_only.json @@ -86,7 +86,6 @@ "43114": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "45000": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", "47805": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", - "54211": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "71401": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "71402": "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", "73799": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", diff --git a/v1.3.0/proxy_factory.json b/v1.3.0/proxy_factory.json index 4f9cbc9e76..6f0f6a5cdd 100644 --- a/v1.3.0/proxy_factory.json +++ b/v1.3.0/proxy_factory.json @@ -12,8 +12,8 @@ "11": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "12": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "14": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", - "16": "0xB20452a41ea9Aca263afce6B0C7CC0d5Fd410D62", - "19": "0xB20452a41ea9Aca263afce6B0C7CC0d5Fd410D62", + "16": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", + "19": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "25": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "28": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "40": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", @@ -86,7 +86,6 @@ "43114": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "45000": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "47805": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", - "54211": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "71401": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "71402": "0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC", "73799": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", diff --git a/v1.3.0/sign_message_lib.json b/v1.3.0/sign_message_lib.json index 91eaa3bef0..fa0525bd38 100644 --- a/v1.3.0/sign_message_lib.json +++ b/v1.3.0/sign_message_lib.json @@ -12,8 +12,8 @@ "11": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", "12": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", "14": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", - "16": "0x1CB1F7f320583Fa1A0dB7A579c34547cfc0f0d15", - "19": "0x1CB1F7f320583Fa1A0dB7A579c34547cfc0f0d15", + "16": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", + "19": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "25": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "28": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "40": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", @@ -86,7 +86,6 @@ "43114": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "45000": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", "47805": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", - "54211": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "71401": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "71402": "0x98FFBBF51bb33A056B08ddf711f289936AafF717", "73799": "0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2", diff --git a/v1.3.0/simulate_tx_accessor.json b/v1.3.0/simulate_tx_accessor.json index 9f4720151c..1bb15b1f35 100644 --- a/v1.3.0/simulate_tx_accessor.json +++ b/v1.3.0/simulate_tx_accessor.json @@ -86,7 +86,6 @@ "43114": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "45000": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", "47805": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da", - "54211": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "71401": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "71402": "0x727a77a074D1E6c4530e814F89E618a3298FC044", "73799": "0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da",